highlight-symbol.el
おそらくパッケージ(リンク)を使用して、シンボルを自動的に強調表示する方法を探しています。
すべての最初の引数が(setq )
自動的に強調表示されるようにする方法はありますか?
(setq this should behighlighted 1)
..そして、そのシンボルが使用された以降のすべての時間に使用されます。
まず、次のコードはバージョン1.2のhighlight-symbolに基づいています。古いバージョンには機能がありませんhighlight-symbol-add-symbol
。
defvar
基本的なアプローチは、バッファで「(setq」」を検索することです。実際の正規表現は、空白とハンドル、およびを許可するため、少し複雑defcustom
です。
(defun highlight-all-symbols ()
(interactive)
(save-excursion
(highlight-symbol-mode 1)
(goto-char (point-min))
(while (re-search-forward (concat "([ \t\n]*"
"\\_<\\(?:"
"setq\\|defvar\\|defcustom"
"\\)\\_>[ \t\n]*"
"\\(\\_<\\(?:\\sw\\|\\s_\\)+\\_>\\)")
nil t)
(highlight-symbol-add-symbol (concat "\\_<"
(regexp-quote (match-string 1))
"\\_>")))))
おそらく、モードフックにコードを含めることをお勧めします
(add-hook 'emacs-lisp-mode-hook 'highlight-all-symbols)
もちろん、で設定されたすべてのシンボルを単に強調表示するsetq
ことは、変数の名前空間を無視するため、完全な解決策にはなりません。ただし、これを正しく処理するには、コードを解析する必要があるため、はるかに大きな作業になります。そのうさぎの穴を掘り下げたいのなら、これはあなたにアイデアを与えるかもしれませんが、私はそれが特に文書化されていないのではないかと思います。