由于我使用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-rb-goto-match
函数进行操作
在 semantic-symref-list.el 中定义。 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
或return
。
我想知道原因并解决这个问题。
答案 0 :(得分:5)
将last-command-char
的引用替换为last-command-event
。如果存在,last-command-char
是last-command-event
的别名。
答案 1 :(得分:0)
last-command-char
已从Emacs 24.3中删除。它仍然在Emacs 24.2中定义。它在24.3 NEWS中提到:
** Some obsolete functions, variables, and faces have been removed:
*** `last-input-char', `last-command-char', `unread-command-char'
在Emacs 24.2中,C-h v last-command-char
表示至少从Emacs 19.34开始已经过时了。
请向代码所有者报告错误。