2

由于我使用 Emacs 24,所以当我尝试查找符号与semantic-symref-symbol. 详情如下:

  1. 当光标位于源文件的某个符号上时,我按下一些键来调用semantic-symref-symbol,然后我得到一个描述符号在*Symref缓冲区中出现位置的列表。
  2. 在列表的一个条目上,我按下SPACERETURN键,它会跳转到正确的位置,但同时,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.elsemantic-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). 应该是spaceor的键码return

我想知道原因并解决这个问题。

4

2 回答 2

5

用 替换对 a 的last-command-char引用last-command-event。当它存在时,last-command-charlast-command-event.

于 2014-03-14T20:47:59.013 回答
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 开始就已经过时了。

请向代码所有者报告错误。

于 2013-08-20T15:40:26.803 回答