Làm cách nào để ngăn định nghĩa chức năng của Biểu tượng của Vectơ là void: lỗi vì khi chạy emacs trong bảng điều khiển?


10

Để vô hiệu hóa thanh cuộn trong emacs tôi đã thêm (toggle-scroll-bar -1) vào tệp .emacs của tôi và nó hoạt động rất tốt khi tôi chạy emacs bên ngoài chế độ bảng điều khiển. Tuy nhiên, khi tôi chạy emacs trong thiết bị đầu cuối, tôi gặp lỗi Định nghĩa chức năng của biểu tượng là void: toggle-scroll-bar

Tôi đang chạy Emacs 23.3.1

Đây là dấu vết khi tôi chạy --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()

Emacs có thể đã cung cấp cho bạn bộ đệm Cảnh báo cho bạn biết chạy emacs với --debug-inittùy chọn để có được một backtrace lỗi hoàn toàn. Hãy thử điều đó và thêm thông tin đó vào câu hỏi. Cùng với phiên bản Emacs M-x emacs-version. Đoạn mã đó hoạt động tốt với Emacs 23.2.
Trey Jackson

@Trey Jackson, tôi đã thêm các chi tiết bạn yêu cầu, tôi dường như đang chạy Emacs 23.1, vì vậy tôi sẽ thử nâng cấp. Cám ơn bạn đã đóng góp ý kiến.
bneil

Rất kỳ quặc. Ok, thử nghiệm tiếp theo đang chạy Emacs w / out .emacs của bạn emacs -nw -q, và sau đó trong bộ đệm đầu , nhập (scroll-bar-mode -1)C-jvà xem nếu bạn gặp lỗi. Chức năng đó được phân phối với Emacs trong scroll-bar.elgói, vì vậy tôi đoán bạn .emacscó thứ gì đó kỳ lạ hoặc Emacs không được cài đặt đúng cách.
Trey Jackson

Tôi gặp lỗi này khi thực hiện Trình gỡ lỗi đã nhập - Lỗi Lisp: (void-function scroll-bar-mode) (scroll-bar-mode -1) eval ((scroll-bar-mode -1)) eval-last-sexp -1 (t) eval-last-sexp (t) eval-print-last-sexp () gọi-tương tác (eval-print-last-sexp nil nil)
bneil

Đây là tập tin .emacs của tôi pastebin.com/4mYE91Ne nữa
bneil

Câu trả lời:


13

FWIW. Hướng dẫn sử dụng emacs không khuyến khích việc sử dụng window-systemnhư một vị ngữ.

Không sử dụng hệ thống cửa sổ và hệ thống cửa sổ ban đầu làm biến vị ngữ hoặc biến cờ boolean, nếu bạn muốn viết mã hoạt động khác nhau trên các thiết bị đầu cuối văn bản và hiển thị đồ họa. Đó là bởi vì hệ thống cửa sổ không phải là một chỉ số tốt về khả năng của Emacs trên một loại màn hình nhất định. Thay vào đó, hãy sử dụng display-Graphics-p hoặc bất kỳ màn hình nào khác - * - các vị từ p được mô tả trong Kiểm tra tính năng hiển thị.

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

Tôi sử dụng điều này để tắt thanh cuộn và thanh công cụ khi ở trong màn hình đồ họa.

(if (display-graphic-p)
    (progn
      (tool-bar-mode -1)
      (scroll-bar-mode -1)))

5

Mặc dù tôi nghĩ rằng câu trả lời của @ Simplonk là tốt nhất và bao gồm tất cả các cơ sở, để vô hiệu hóa cụ thể thanh cuộn, bạn có thể đặt nội dung sau vào ~/.emacs

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

-2

Tôi đoán là khi bạn mở emacs -nwemacs thậm chí không thèm tải scroll-bar.el. đó là lý do tại sao nó gặp khó khăn để tìm chức năng toggle-scroll-bar.
có thể thay thế nếu bạn đặt
(scroll-bar-mode -1)
có thể làm việc.


1
(toggle-scroll-bar -1)chỉ hoạt động tốt trong emacs -nwEmacs 23.2 ...
Trey Jackson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.