[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Add sequential number on tab title.



白井です。

FSF Emacs で (setq w3m-add-tab-number t) とすると、TAB の title
に数字を入れるようにしました。XEmacs はコードを見る限り最初から
数字が出ていると思われるのでパス。

# default は nil です。

なんでかというと、ここのところ、

(add-hook 'w3m-mode-hook
	  (lambda ()
	    (let ((key1 ?\C-0)
		  (key2 ?\M-0)
		  (ch 0))
	      (while (< ch 10)
		(define-key w3m-mode-map (vector (+ key1 ch)) 'w3m-goto-buffer)
		(define-key w3m-mode-map (vector (+ key2 ch)) 'w3m-goto-buffer)
		(setq ch (1+ ch))))))

(defun w3m-goto-buffer (&optional arg)
  "Goto w3m buffer to accompany inputed numbers like the following,
C-2 => *w3m*<2>
M-0 => *w3m*<max>
12M-3 => *w3m*<123>"
  (interactive "p")
  (let* ((num (+ (- (logand last-command-char ?\177) ?0)
		 (if (not current-prefix-arg)
		     0
		   (* arg 10))))
	 (max (length (w3m-list-buffers 'nosort)))
	 (bufname (cond
		   ((or (= num 1) (= max 1))
		    "*w3m*")
		   ((or (= num 0) (> num max))
		    (format "*w3m*<%d>" max))
		   (t
		    (format "*w3m*<%d>" num))))
	 (buf (get-buffer bufname))
	 win)
    (if (not (and buf (buffer-live-p buf)))
	(message "No exist w3m buffer \"%s\"" bufname)
      (cond
       ((eq major-mode 'w3m-mode)
	(set-window-buffer (selected-window) buf))
       ((setq win (catch 'win
		    (walk-windows
		     (lambda (w)
		       (save-excursion
			 (set-buffer (window-buffer w))
			 (when (eq major-mode 'w3m-mode)
			   (throw 'win w)))))))
	(select-window win)
	(set-window-buffer win buf))
       (t
	(pop-to-buffer buf)))
      (message "Goto w3m buffer \"%s\"" bufname))))

なことをやって、数字一発でタブを切り替えるようにしているのですが、
タブが何番かわからないと困ってしまうからです。

さて、本題ですが、上記のコマンド、結構気に入っているのですが
commit しちゃってもよいですか? C-数字、M-数字 で prefix が与え
られなくなっちゃうので、どうしましょ、と悩んでいるところです。

# (setq w3m-goto-buffer-prefix-chars '(?\M-0 ?\C-0))
# みたいに指定可能ならよいかなぁ。。。

-- 
白井秀行 (mailto:shirai@xxxxxxxxxxx)