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を試しました。 3 つのvar1定義すべて(および可能な用途) を使用します。

4

1 に答える 1

3

グローバルの助けは必要ありませんが、キーボード マクロとして実行できます。

  • 現在の単語、この場合は「var1」をメモします
  • emacsのbegining-of-defun Lisp関数を使用して後方検索
  • 「var1」を前方に検索します。これは、現在の defun で var1 が最初に出現するため、通常は var1 の定義です。

この 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 に答える