emacs - 在 Emacs 中自动高亮符号

标签 emacs highlight symbols

我正在寻找一种自动突出显示符号的方法,可能使用包 highlight-symbol.el ( link )。

我想知道,有没有办法让所有 (setq ) 的第一个参数会自动高亮吗?

(setq thisshouldbehighlighted 1)

..以及所有使用该符号的后续时间/将被使用。

最佳答案

首先,以下代码基于version 1.2高亮符号。旧版本缺少此功能 highlight-symbol-add-symbol .

基本方法是在缓冲区中搜索“(setq”。实际的正则表达式有点复杂,因为它允许空格并处理 defvardefcustom

(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))
                                           "\\_>")))))

您可能希望将代码包含在 mode hook 中。
 (add-hook 'emacs-lisp-mode-hook 'highlight-all-symbols)

当然,只需突出显示所有用 setq 设置的符号不能是一个完美的解决方案,因为它忽略了变量命名空间。然而,正确处理这个是一项更大的任务,因为它需要解析代码。如果你想进入那个兔子洞,this可能会给你一个想法,但恐怕它没有特别记录。

关于emacs - 在 Emacs 中自动高亮符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14263728/

相关文章:

emacs - Emacs 中 yas/choose-value 的替代方案

emacs minor mode 临时修改默认面

f# - 如何在可区分的联合中使用符号/标点符号

java - Intellij - 为什么类的符号不显示?

ruby - 为什么在 Ruby 中使用符号作为哈希键?

emacs - 让 Emacs 将光标移出屏幕

Emacs 口齿不清 : how to append to the list "LaTeX-clean-intermediate-suffixes"?

emacs - 为什么 elisp 函数不起作用(如我所料)?

javascript - 如何根据搜索突出显示整个 div

android - 如何在微调器中单击更多项目并突出显示它?