5

highlight-symbol.elおそらくパッケージ(リンク)を使用して、シンボルを自動的に強調表示する方法を探しています。

すべての最初の引数が(setq )自動的に強調表示されるようにする方法はありますか?

(setq this should behighlighted 1)

..そして、そのシンボルが使用された以降のすべての時間に使用されます。

4

1 に答える 1

2

まず、次のコードはバージョン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ことは、変数の名前空間を無視するため、完全な解決策にはなりません。ただし、これを正しく処理するには、コードを解析する必要があるため、はるかに大きな作業になります。そのうさぎの穴を掘り下げたいのなら、これはあなたにアイデアを与えるかもしれませんが、私はそれが特に文書化されていないのではないかと思います。

于 2013-01-10T18:16:18.380 に答える