2

假设你有这样的 C 代码:

void f1() {
    int var1;

    var1 = 1; // local use of var1
}

void f2() {
    int var1;

    var1 = 2; // local use of var1
}

void f3() {
    int var1;

    var 1 = 3; // local use of var1
}

如何在指向本地使用时使用 Emacs 和 GNU Global (gtags.el) 定义局部变量?

我试过gtags-find-tag(用“ var1 ”作为参数),它没有找到任何东西(看起来标签应该是函数),我试过gtags-find-symbol,它显示了一个列表具有所有三个var1定义(以及可能的用途)。

4

1 回答 1

3

您不需要 Global 的帮助,但它可以作为键盘宏来完成:

  • 记下当前单词,在这种情况下为“var1”
  • 使用emacs开头的defun lisp函数向后搜索
  • 向前搜索“var1”,这通常是 var1 的定义,因为它是 var1 在当前 defun 中的第一次出现。

从这个 kerboard 宏开始,我编写了以下 lisp 函数:

(defun bhj-isearch-from-bod (&optional col-indent)
  (interactive "p")
  (let ((word (current-word)))
    (beginning-of-defun)
    (setq regexp-search-ring (cons (concat "\\b" word "\\b") regexp-search-ring))
    (search-forward-regexp (concat "\\b" word "\\b"))))
于 2012-09-10T14:30:55.753 回答