一度使ったコマンドは楽に使いたい。
M-xで呼び出したコマンドは自動的にファイルに保存され、ファイルの内容をanythingで選択できるようにする。選択できるコマンド候補の追加には、M-xで呼び出すかファイルを直接修正すればいい。
(defun write-string-to-buffer (file str) (let ((buf (find-file-noselect file))) (set-buffer buf) (when (and buffer-file-name (not buffer-read-only) (file-writable-p file)) (goto-char (point-max)) (insert "\n") (insert str) ;(save-buffer) ;auto-save-buffers.elが入ってなければ ))) ;;実行したコマンドの履歴を格納するファイル (defvar extended-command-history-save-file "~/.emacs.d/extended-command-history") ;;M-xで実行したコマンドの名前をファイルに保存するようにする。 (defadvice execute-extended-command (after eec-push-to-history-file activate) (let ((func (car extended-command-history))) (write-string-to-buffer extended-command-history-save-file func))) (defvar anything-c-source-extended-command-history '((name . "extended commands") (init . (lambda () (call-process-shell-command (format "sort %s | uniq" extended-command-history-save-file) nil (anything-candidate-buffer 'global)))) (candidates-in-buffer) (action . (("Call interactively" . (lambda (c) (call-interactively (intern c)))))))) ;(anything (list anything-c-source-extended-command-history))
毎回sortとuniqしているのが嫌になったら、ファイル内の重複を消す処理とかを行う関数などを作る。