由于我使用 Emacs 24,所以当我尝试查找符号与semantic-symref-symbol
. 详情如下:
- 当光标位于源文件的某个符号上时,我按下一些键来调用
semantic-symref-symbol
,然后我得到一个描述符号在*Symref
缓冲区中出现位置的列表。 在列表的一个条目上,我按下
SPACE
或RETURN
键,它会跳转到正确的位置,但同时,Emacs*Backtrace*
会在其他窗口中弹出缓冲区。其内容如下:Debugger entered--Lisp error: (void-variable last-command-char) semantic-symref-rb-goto-match(#<overlay from 97 to 126 in *Symref stateStack>) push-button(97) call-interactively(push-button nil nil)
然后我遵循在semantic-symref-list.el
semantic-symref-rb-goto-match
中定义的函数。elisp 函数定义如下:(defun semantic-symref-rb-goto-match (&optional button) "Go to the file specified in the symref results buffer. BUTTON is the button that was clicked." (interactive) (let* ((tag (button-get button 'tag)) (line (button-get button 'line)) (buff (semantic-tag-buffer tag)) (win (selected-window)) ) (switch-to-buffer-other-window buff) (goto-line line) (pulse-momentary-highlight-one-line (point)) (when (eq last-command-char ? ) (select-window win)) ) )
我
last-command-char
在函数中找到了 ,但我不明白为什么 Emacs 会抱怨(void-variable last-command-char)
. 应该是space
or的键码return
。
我想知道原因并解决这个问题。