Hatena::ブログ(Diary)

わからん

2011.02.22

[][] eshell と直前のバッファを行き来するコマンド 改造版

emacs 起動時に eshell バッファも一つ用意しておいて、C-M-return でトグルで切り替える。C-u C-M-return というふうに引数付きで呼ぶと、今いるバッファと同じディレクトリに cd した eshell バッファに移動する。昔作った自作コマンドに kiyoka.2011_02_22 自分的に超重要な eshell 用設定 を取り入れた。

;; emacs 起動時に eshell バッファも一つ用意する
(add-hook 'after-init-hook
          (lambda()
            (eshell)
            (switch-to-buffer "*scratch*")))

(defun my-toggle-term ()
  "eshell と直前のバッファを行き来する。C-u 付きで呼ぶと 今いるバッファと同じディレクトリに cd して開く"
  (interactive)
  (let ((ignore-list '("*Help*" "*Minibuf-1*" "*Messages*"
                       "*terminal<1>*" "*terminal<2>*" "*terminal<3>*"))
        (dir default-directory))
    (labels
        ((_my-toggle-term (target)
           (if (null (member (buffer-name (second target)) ignore-list))
               (if (equal "*eshell*" (buffer-name (window-buffer)))
                   (switch-to-buffer (second target))
                 (switch-to-buffer "*eshell*")
                 (when current-prefix-arg
                   (cd dir)
                   (eshell-interactive-print (concat "cd " dir "\n"))
                   (eshell-emit-prompt)))
             (_my-toggle-term (cdr target)))))
      (_my-toggle-term (buffer-list)))))

(global-set-key (kbd "<C-M-return>") 'my-toggle-term)

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

Google