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)

[] emacs21 で Debugger entered--Lisp error: (error "Invalid escape character syntax") エラー

emacs21 で起動時に

Debugger entered--Lisp error: (error "Invalid escape character syntax")

というエラーが出る場合は、そのファイルの (insert ?\s) を (insert ?\ ) (バックスラッシュの後ろに半角スペースあり)にすることで対処できます。


 参考