helm-etags-selectを改良する
某 Pythonのコードを理解する必要があったので ctagsなるものを初めて
使ってみましたが, その helmインタフェースである helm-etags-selectが
若干不満だったので修正しました.
問題
カーソル以下の symbol名で初めは絞りこまれているんですが,
1文字でも入力してしまうと, 1からの絞り込みになってしまい,
カーソル以下の symbol名との and検索で絞り込むのが面倒くさい
原因
該当する sourceで helm関数を実行するときの :default属性のみが
設定されているため.
コード
カスタマイズの余地がなかったので, :input属性だけを追加した,
新しい関数を追加しました.
(defun my/helm-etags-select (arg) (interactive "P") (let ((tag (helm-etags-get-tag-file)) (helm-execute-action-at-once-if-one t)) (when (or (equal arg '(4)) (and helm-etags-mtime-alist (helm-etags-file-modified-p tag))) (remhash tag helm-etags-cache)) (if (and tag (file-exists-p tag)) (helm :sources 'helm-source-etags-select :keymap helm-etags-map :input (concat (thing-at-point 'symbol) " ") :buffer "*helm etags*" :default (concat "\\_<" (thing-at-point 'symbol) "\\_>")) (message "Error: No tag file found, please create one with etags shell command."))))
これで初期の入力として, カーソル以下の symbol名が入力された状態になり
絞り込みが意図通りできるようになりました.