2009-11-18 2 views
2

내가 우분투에 Emacs23에 PHP 모드를 사용하는 동안이 오류와 유사한 오류가 점점 계속 :Emacs23 PHP 모드 문제

Debugger entered--Lisp error: (void-function php-template-if-hook) 
    php-template-if-hook() 
    abbrev-insert(if #("if" 0 2 (fontified t face font-lock-keyword-face)) 414 416) 
    #[(G73404 funs global) "[Byte Code]" 
    apply(#[(G73404 funs global "[Byte Code]" 
    (lambda (&rest --cl-rest--) (apply #[... "[Byte Code]" 
    expand-abbrev() 
    self-insert-command(1) 
    c-electric-paren(nil) 
    call-interactively(c-electric-paren nil nil) 

을 내가 if(를 입력 할 때, 그리고 내가 array( 입력 할 때 아래의 오류 또는 아무것도 그 끝 예 : array(is_array( : 나는 이맥스 스타터 키트를 사용할 때이 오류도 발생

Debugger entered--Lisp error: (void-function php-template-if-hook) 
    php-template-if-hook() 
    abbrev-insert(if #("if" 0 2 (fontified t face font-lock-keyword-face)) 414 416) 
    #[(G73404 funs global) "[Byte code]" 
    apply(#[(G73404 funs global "[Byte Code]" 
    (lambda (&rest --cl-rest--) (apply #[... "[Byte Code]" 
    expand-abbrev() 
    self-insert-command(1) 
    c-electric-paren(nil) 
    call-interactively(c-electric-paren nil nil) 

. 누구든지 비슷한 문제를 해결 했습니까?

php-mode.el은 의 nxhtml 버전을 번들로 사용합니다. 나는 php-mode-1.5.0을 사용하여 여전히 성공하지 못했습니다. 나도 최신 버전의 nxhtml (2.2)을 사용해 보았지만 여전히 동일한 오류가 지속되었습니다. 상대적으로 정상적으로 작동하려면 의 모든 함수 정의를 복사하여 mewde에 빠뜨려야했습니다. 나는 그것이 약간의 가치를 더한다라고 말해야한다. :)

재미있는 점은이 문제가 저의 경우 Ubuntu Karmic의 유일한 문제인 것 같습니다. opensuse 11.0 및 11.1에서 같은 문제를 하나의 문제없이 사용하고있었습니다.

감사합니다.

답변

1

문제는 무언가가 정의되지 않은 함수를 호출하려고 시도하고 있다는 것입니다. 'php-template-if-hook.

several 인 것 같으므로 사용중인 php-mode.el을 찾은 곳으로의 링크를 제공하면 유용 할 것입니다.

기호 'php-template-if-hook은 sourceforge의 php-mode.el에 포함되어 있지 않으므로 버전이 다르거 나 .emacs에 문제의 원인이되는 다른 것이 있습니다. 'php-template-if-hook'으로 연결되는 약식 삽입을 트리거하는 것으로 보입니다. 참고 :it looks like 스택 오버플로 사용자가 sourceforge의 php-mode를 사용하고 있으므로 해당 사용자로 이동하는 것이 좋습니다.

(defun php-template-if() 
    "Insert an if statement." 
    (interactive) 
    (let ((start (point))) 
    (insert "if ") 
    (insert "(") ; + 
    (when (php-template-field "condition" nil t start (point)) 
     (insert ") {") ; + 
     (newline-and-indent) 
     (setq start (point-marker)) 
     (insert "\n}") 
     (php-indent-line-2) 
     (goto-char start)))) 

을 단, intertubes에서/붙여 넣기 임의의 코드를 절단하여 문제를 해결하는 것은 좋은 장기 해결책이 아니다 :

빠른 구글 검색으로 'php-template-if-hook 정의이 php-mode.el를 찾습니다.

+0

필요한 정보로 질문을 업데이트했습니다. 나는 그 이후에 php-mode.el을 병합했는데, 그 모든 함수가 정의되어 있고, 여기 저기에 몇 가지 문제가 있지만, 지금까지는 잘 작동하는 것처럼 보인다. 필자가 모르는 것은 emacs22를 사용하는 경우에도이 문제가있는 유일한 이유인데, 우분투 Karmic에서만, openuse 11.0 및 11.1의 이맥에서 동일한 문제를 사용하고있었습니다. – partoa

+0

opensuse에서 사용하고있는 Emacs에는 다른 것들이 번들되어있을 가능성이 있습니다. 원래 오류는 함수가 정의되지 않았기 때문입니다. Emacs의 일부가 아니기 때문에 (OS와 관계없이), 두 시스템에 누군가가 설치 한 다른 지원 라이브러리가있었습니다. –

+0

나는 가정한다. 나는 소스 포지 (source forge)에서 cc-mode를 바꾸어서 어떤 일이 일어나는지 보았는데, 여전히 같은 오류가 반복되었다. Elisp에 익숙하지 않다면 대신 기본 시스템을 디버깅하도록 선택 했으므로 정의되지 않은 함수를 호출 할 필요가 없으며 opensuse와 마찬가지로 오류가 발생하지 않습니다. . 어쨌든, 문제가 해결되었습니다. 귀하의 회신에 감사드립니다. – partoa