首先,以下代码基于highlight-symbol 1.2版本。旧版本缺少该功能highlight-symbol-add-symbol
。
基本方法是在缓冲区中搜索“(setq”。实际的正则表达式有点复杂,因为它允许空格并处理defvar
和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))
"\\_>")))))
Run Code Online (Sandbox Code Playgroud)
您可能希望将代码包含在模式挂钩中
(add-hook 'emacs-lisp-mode-hook 'highlight-all-symbols)
Run Code Online (Sandbox Code Playgroud)
当然,简单地突出显示所有设置的符号并不是setq
一个完美的解决方案,因为它忽略了变量命名空间。不过,正确处理这个问题是一项艰巨的任务,因为它需要解析代码。如果你想深入了解这个兔子洞,这可能会给你一个想法,但恐怕它没有特别记录。
归档时间: |
|
查看次数: |
1639 次 |
最近记录: |