콘솔에서 emacs를 실행할 때“기호의 함수 정의가 무효입니다 : 오류”를 방지하는 방법은 무엇입니까?


11

emacs에서 스크롤바를 비활성화하려면 내 .emacs 파일에 추가 (toggle-scroll-bar -1)하고 콘솔 모드 외부에서 emacs를 실행할 때 훌륭하게 작동합니다. 그러나 터미널에서 emacs를 실행하면 Symbol의 함수 정의가 무효입니다. toggle-scroll-bar

나는 이맥스를 실행 중이다 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()

Emacs 는 완전한 오류 역 추적 옵션을 가진 emacs를 실행하라고 알려주 는 경고 버퍼를 제공했을 것입니다 --debug-init. 그것을 시도하고 그 정보를 질문에 추가하십시오. 이맥스 버전과 함께 M-x emacs-version. 이 코드 덩어리는 Emacs 23.2에서 잘 작동합니다.
Trey Jackson

@Trey Jackson, 요청한 세부 정보를 추가했습니다. Emacs 23.1을 실행중인 것 같습니다. 업그레이드하겠습니다. 제안 해 주셔서 감사합니다.
bneil

매우 이상합니다. 다음 테스트는 .emacs없이 Emacs를 실행 emacs -nw -q하고 스크래치 버퍼에 (scroll-bar-mode -1)C-j오류가 있는지 확인하십시오. 이 기능은 scroll-bar.el패키지에 Emacs와 함께 배포 되므로 .emacs이상한 점이 있거나 Emacs가 제대로 설치되지 않은 것 같습니다.
Trey Jackson

디버거가 입력되었을 때이 오류가 발생합니다 .- 리스프 오류 : (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 () 호출-대화식 (eval-print-last-sexp nil nil)
bneil

여기 내 .emacs 파일 pastebin.com/4mYE91Ne 도 있습니다
bneil

답변:


14

FWIW. emacs 매뉴얼 window-system은 술어 사용을 권장하지 않습니다 .

텍스트 터미널과 그래픽 디스플레이에서 다르게 작동하는 코드를 작성하려면 창 시스템 및 초기 창 시스템을 술어 또는 부울 플래그 변수로 사용하지 마십시오. 이는 윈도우 시스템이 특정 디스플레이 유형에서 Emacs 기능을 나타내는 좋은 지표가 아니기 때문입니다. 대신 display-graphic-p 또는 Display Feature Testing에 설명 된 다른 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)))

5

@neatonk의 대답이 가장 좋으며 모든베이스를 다루고 있지만 스크롤 막대를 구체적으로 비활성화하려면 다음을 입력하십시오. ~/.emacs

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

-2

내 생각에 emacs -nwemacs 를 열면 scroll-bar.el을로드하지 않아도됩니다. 그것이 함수를 찾는 데 문제가있는 이유 toggle-scroll-bar입니다. 아마
당신이
(scroll-bar-mode -1)
아마 일 한다면 넣어 수도 있습니다.


1
(toggle-scroll-bar -1)emacs -nwEmacs 23.2 에서 잘 작동합니다 ...
Trey Jackson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.