emacs-w3m で複数のタブ(というかバッファ)を開いているときに、他のバッファに移動するには思いつくままに感想付きで書くと
というものが揃っている。ちょっとだけ不便に感じるのは、
というときかな。
(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. 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))))C-2 とか M-5 とか押すとそのバッファに直接ジャンプ。C-0, M-0 は一番右側。必要ないと思うけど、もし、二桁以上の emacs-w3m のバッファがあってそいつに跳びたかったら 1 2 C-3 で *w3m*<123>に跳ぶ。