emacs php 실험 노트...

primewizard의 이미지

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)

4)html, php 혼합 정렬 문제

"/*>*/"를 추가해 주니 정상적으로 정렬됨
(참고 : http://www.emacswiki.org/emacs/HtmlModeDeluxe)

5)print 함수 사용시 정렬 문제

);을 다음 줄로

6)여러 줄 주석 정렬 문제

아래 같은 형식만 사용

7)array 정렬 문제

분리하는 방법 밖에는...

8)html 태그 속성 정렬 문제

꼭 필요하다면 일단 삭제하고 저장할 때 after-save-hook으로 복원해줘야 할 듯...

9)nxhtml 태그 완성 실험

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로 하면 좀 더 나으려나.....)

bus710의 이미지

여보, primewizard님 댁에 보일러 블로그 한대 놔 드려야겠어요~

그냥 자게에 묻히기엔 아까운 글 같습니다^^

akudoku.net 나는 이것만은 확신하니, 믿고 나아간다.

life is only one time

primewizard의 이미지

개인 블로그가 있지만 관리 귀차니즘으로 글이 하나도 없습니다. ^^;
그리고 KLDP 게시물이 검색 엔진에서 잘 검색이 되는 관계로... 굳이 블로그까지.....

--
그러고 보니 요세 KLDP 글이 네이버에서는 검색이 잘 안 되는 것 같은 느낌이...

redneval의 이미지

Quote:
KLDP 게시물이 검색 엔진에서 잘 검색이 되는 관계로...

kldp에 글 올리면 구글 첫 페이지에 검색결과가 나오는 경우가 많아서

(지금 구글에서 emacs php 로 검색해보세요. 검색결과 중 3번째에 이 글타래가 나옵니다.)

다른 곳에 비해서 글쓰기가 보람있습니다.

다만, 그만큼 글쓰기에 신중해져야하는 부담감도 작용합니다.

--------------------Signature--------------------
Light a candle before cursing the darkness.