如何防止在控制台中运行 emacs 时出现“符号的函数定义是无效的:错误”?

如何防止在控制台中运行 emacs 时出现“符号的函数定义是无效的:错误”?

为了禁用 emacs 中的滚动条,我将 (toggle-scroll-bar -1) 添加到我的 .emacs 文件中,当我在控制台模式之外运行 emacs 时,它工作得很好。但是,当我在终端中运行 emacs 时,我收到错误 Symbol's function definition is void: toggle-scroll-bar

我正在运行 Emacs 23.3.1

这是我运行 --debug-init 时的跟踪

    1 Debugger entered--Lisp error: (void-function scroll-bar-mode)                
    2   (scroll-bar-mode -1)                                                       
    3   eval-buffer(#<buffer  *load*> nil "/Users/neil/.emacs.d/init.el" nil t)  ;$
    4   load-with-code-conversion("/Users/neil/.emacs.d/init.el" "/Users/neil/.ema$
    5   load("/Users/neil/.emacs.d/init" t t)                                      
    6   #[nil "^H\205\264^@   \306=\203^Q^@\307^H\310Q\2027^@ \311=\2033^@\312\307$
    7   command-line()                                                             
    8   normal-top-level()

答案1

我使用它在图形显示时关闭滚动条和工具栏。

(when (display-graphic-p)
   (tool-bar-mode -1)
   (scroll-bar-mode -1))

仅供参考。emacs 手册不鼓励使用window-system作为谓词。

如果您想要编写在文本终端和图形显示器上工作方式不同的代码,请不要使用 window-system 和 initial-window-system 作为谓词或布尔标志变量。这是因为 window-system 不能很好地指示 Emacs 在给定显示类型上的能力。相反,请使用 display-graphic-p 或显示功能测试中描述的任何其他 display-*-p 谓词。

http://www.gnu.org/software/emacs/manual/html_node/elisp/Window-Systems.html

答案2

虽然我认为@neatonk 的答案是最好的,并且涵盖了所有的基础,但要专门禁用滚动条,您可以将以下内容放入~/.emacs

(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))

答案3

我的猜测是,当你打开emacs -nwemacs 时甚至懒得加载 scroll-bar.el。这就是为什么它很难找到该函数toggle-scroll-bar。也许如果你放上 可能的工作,它
就会起作用。
(scroll-bar-mode -1)

相关内容