From mboxrd@z Thu Jan 1 00:00:00 1970 From: khi at users.sourceforge.jp (khi at users.sourceforge.jp) Date: Sun, 12 Mar 2006 23:37:30 +0900 Subject: [Howm-eng 23] Re: Set buffer name of Howm file Message-ID: Hi. At Sat, 25 Feb 2006 01:30:13 +0900, khi at users.sourceforge.jp wrote: > Below is a modified my-howm-mode-set-buffer-name. It supports two or > more sections in one file. That has a bug. We need to exclude "no title" case. Below is a fixed version. thx > Anonymous (in Japanese) http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?ExternalTool In addition, I received a comment in the above page: "This is so convenient. I expect it as a standard feature of howm." Mielke-san, would you allow me to use your idea and code? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defvar my-howm-buffer-name-limit 20) (defvar my-howm-buffer-name-total-limit my-howm-buffer-name-limit) (defun my-howm-truncate-string (string limit &optional dots-str) "Truncate STRING if it is longer than LIMIT. For example, \"1234567...\" is returned if string is \"123456789012\" and limit is 10. When DOTS is non-nil, it is used instead of \"...\"." (let ((dots (or dots-str "..."))) (when (> (length dots) limit) (setq dots (substring dots 0 limit))) (if (> (length string) limit) (concat (substring string 0 (- limit (length dots))) dots) string))) (defun my-howm-mode-set-buffer-name () "Set the buffer name to the title at the top of the file." (when (and howm-mode (buffer-file-name)) (save-excursion (goto-char 0) (let ((titles nil)) (while (re-search-forward howm-view-title-regexp nil t) (setq titles (cons (match-string-no-properties howm-view-title-regexp-pos) titles))) (let ((name (mapconcat (lambda (s) (my-howm-truncate-string s my-howm-buffer-name-limit)) (reverse (howm-cl-remove-if (lambda (s) (string= s "")) titles)) "/"))) (when (not (string= name "")) ;; exclude "no title" case (rename-buffer (my-howm-truncate-string name my-howm-buffer-name-total-limit) t))))))) (add-hook 'howm-mode-hook 'my-howm-mode-set-buffer-name) (add-hook 'after-save-hook 'my-howm-mode-set-buffer-name) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -- khi at users.sourceforge.jp