emacs php 실험 노트...
php 단독으로 php 파일 안에 "< ?php ... ? >"만 존재해서 php-mode만 사용하면 문제가 없는데
html와 php가 혼합되어 있어서 nxhtml-mumamo-mode를 사용하면 여러 문제가 생겨서 실험 노트를 적어둡니다.
http://www.emacswiki.org/emacs/NxhtmlMode
1)이상한 에러1
MS윈도우 XP에서는 괜찮은데 데비안 Lenny에서 아래 에러가 나와서
mumamo-do-fontify-2: mumamo-do-fontify m=nxhtml-mode, s/e=1/237 syn-min/max=1/236: Variable binding depth exceeds max-specpdl-size
Debugger entered--Lisp error: (error "Lisp nesting exceeds `max-lisp-eval-depth'") ad-Orig-syntax-ppss-flush-cache(6184 6185) apply(ad-Orig-syntax-ppss-flush-cache 6184 6185)
아래처럼 추가해 주니 일단 에러는 멈추었음
(setq ad-redefinition-action 'discard) ;; <-- 추가 (load "~/.emacs.d/nxhtml/autostart.el")
참고 : https://bugs.launchpad.net/nxhtml/+bug/300946
2)이상한 에러2
어느 순간 tab으로 들여쓰기를 하면 아래 에러가 나와서
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil) rng-after-change-function(273 273 4) c-shift-line-indentation(4) c-indent-line() funcall(c-indent-line) (if (or php-warned-bad-indent (php-check-html-for-indentation)) (funcall (quote c-indent-line))) php-cautious-indent-line() funcall(php-cautious-indent-line) .....중략.....
synaptic에서 nxml-mode 패키지를 설치하고 아래처럼 추가해 주니 에러는 멈추었음
(setq ad-redefinition-action 'discard) (setq rng-validate-up-to-date-end 0) ;; <-- 추가 (load "~/.emacs.d/nxhtml/autostart.el")
3)syntax highlight(font lock) 문제
전체 선택을 하고 자동 정렬을 시도하거나 php영역에 있다가 html영역을 마우스로 클릭해서 포커스가 넘어가면 syntax highlight가 이상한 색으로 바뀌어서
아래 코드를 추가해 주니 정상적으로 됨
(defun mumamo-post-command-for-fontify-buffer () (if mumamo-multi-major-mode (mumamo-fontify-buffer) ) ) (add-hook 'post-command-hook 'mumamo-post-command-for-fontify-buffer)
"/*>*/"를 추가해 주니 정상적으로 정렬됨
(참고 : http://www.emacswiki.org/emacs/HtmlModeDeluxe)
꼭 필요하다면 일단 삭제하고 저장할 때 after-save-hook으로 복원해줘야 할 듯...
10)php 자동 완성 실험
i)공식 홈에 있는 방법
http://php-mode.sourceforge.net/html-manual/Completion.html
ii)autocomplete 이용
아래 사이트 방법과 공식 홈 방법을 짬봉한 것임
http://github.com/ashizawa/autocompletion-php-functions/tree/master
php 자동완성의 문제점은 자신이 만든 클래스나 함수는 실시간 파싱이 안 되고 etags로 생성해 주어야 해서 불편함
cedet-semantic에 통합되면 좋을 것 같음...(wisent parser 아시는 고수분께 패스...^^)
--
갑자기 드는 의문으로 html,php가 혼합된 것을 syntax highlight는 기본으로 되고 자동 정렬과 코드 자동 완성까지 해주는 (css, javascript까지 되면 더 좋음)
에디터가 있나요? 제가 emacs에 너무 큰 기대를 한 것인지...
--
결론 :
빛나라 지식의 별~!(^^;)... 데비안 Lenny에서 emacs와 nxhtml로는 html, php가 혼합된 프로그래밍 편집은 힘들다.
(mmm-mode로 하면 좀 더 나으려나.....)
첨부 | 파일 크기 |
---|---|
emacs-syntax-highlight1.png | 73.69 KB |
emacs-syntax-highlight2.png | 73 KB |
emacs-php-align1.png | 105.5 KB |
emacs-php-align2.png | 105.75 KB |
emacs-php-print1.png | 84.65 KB |
emacs-php-print2.png | 85.18 KB |
emacs-php-comment1.png | 75.69 KB |
emacs-php-comment2.png | 72.27 KB |
emacs-php-array1.png | 81.2 KB |
emacs-php-tag1.png | 75.23 KB |
emacs-php-tag2.png | 74.92 KB |
emacs-tag-completion.png | 83.39 KB |
emacs-php-completion.png | 103.76 KB |
emacs-php-auto-complete.png | 92.79 KB |
emacs-php-array2.png | 83.53 KB |
...
여보, primewizard님 댁에
보일러블로그 한대 놔 드려야겠어요~그냥 자게에 묻히기엔 아까운 글 같습니다^^
akudoku.net 나는 이것만은 확신하니, 믿고 나아간다.
life is only one time
개인 블로그가 있지만...
개인 블로그가 있지만 관리 귀차니즘으로 글이 하나도 없습니다. ^^;
그리고 KLDP 게시물이 검색 엔진에서 잘 검색이 되는 관계로... 굳이 블로그까지.....
--
그러고 보니 요세 KLDP 글이 네이버에서는 검색이 잘 안 되는 것 같은 느낌이...
공감합니다.
kldp에 글 올리면 구글 첫 페이지에 검색결과가 나오는 경우가 많아서
(지금 구글에서 emacs php 로 검색해보세요. 검색결과 중 3번째에 이 글타래가 나옵니다.)
다른 곳에 비해서 글쓰기가 보람있습니다.
다만, 그만큼 글쓰기에 신중해져야하는 부담감도 작용합니다.
--------------------Signature--------------------
Light a candle before cursing the darkness.