在控制台中运行 emacs 时如何防止“Symbol's function definition is void: error”?

bne*_*eil 12 terminal emacs macos

为了禁用 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()
Run Code Online (Sandbox Code Playgroud)

小智 15

FWIW。emacs 手册不鼓励使用window-system作为谓词。

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

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

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

(if (display-graphic-p)
    (progn
      (tool-bar-mode -1)
      (scroll-bar-mode -1)))
Run Code Online (Sandbox Code Playgroud)


小智 5

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

(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
Run Code Online (Sandbox Code Playgroud)