<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=EmacsWithPHPMode</id>
	<title>EmacsWithPHPMode - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=EmacsWithPHPMode"/>
	<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=EmacsWithPHPMode&amp;action=history"/>
	<updated>2026-05-02T16:01:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://workspace.onionmixer.net/wiki/index.php?title=EmacsWithPHPMode&amp;diff=696&amp;oldid=prev</id>
		<title>Onionmixer: wiki문법 수정</title>
		<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=EmacsWithPHPMode&amp;diff=696&amp;oldid=prev"/>
		<updated>2013-07-02T06:41:57Z</updated>

		<summary type="html">&lt;p&gt;wiki문법 수정&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;Gentoo Emacs 에서 php-mode를 사용하기&lt;br /&gt;
&lt;br /&gt;
도움주신분&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==emacs에서 필요한 mode의 설치==&lt;br /&gt;
&lt;br /&gt;
기본적으로 2가지 mode가 필요합니다.&lt;br /&gt;
&lt;br /&gt;
* php-mode :: http://php-mode.sourceforge.net&lt;br /&gt;
* mmm-mode :: http://mmm-mode.sourceforge.net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gentoo에서라면 간단합니다. 우리에게는 portage가 있으니까요. emerge를 통해서 다음의 버전을 설치해주면 됩니다&lt;br /&gt;
&lt;br /&gt;
* php-mode-1.5.0&lt;br /&gt;
* mmm-mode-0.5.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이중에서 mmm-mode 는 minor mode라고 합니다. M-x mmm-mode 로 toggle 할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
자 이제부터 설정을 잡아보도록 할까요?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==emacs에서의 설정==&lt;br /&gt;
&lt;br /&gt;
===환경설정확인===&lt;br /&gt;
&lt;br /&gt;
아래쪽의 참고주소의 내용을 기초로 설정을 잡아보도록 하겠습니다.&lt;br /&gt;
&lt;br /&gt;
1. M-x ielm 이라는 명령을 통해서 ELISP command mode로 진입합니다. 탈출은 C-x k (또는 M-x kill-this-buffer) 입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. 진입후 load-path 라는 명령을 입력합니다. 아래와 같은 화면을 보실 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
[[image:EmacsWithPHPMode_01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3, 위의 화면에서 붉은색으로 표시되어있는 부분이 나오면 기본적으로 module은 설치되었다고 봐도 됩니다. 나오는 내용이 많은경우 C-r 로 &amp;#039;&amp;#039;&amp;#039;mmm-mode&amp;#039;&amp;#039;&amp;#039; 같은 문자열 검색으로 module이 등록되어있는지의 여부를 확인합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위의 과정에서 module이 등록된걸 확인한다면 슬슬 다음단계로 진행해도 됩니다&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===emacs 설정파일 편집===&lt;br /&gt;
&lt;br /&gt;
참고주소에 나온 내용은 ~/.emacs.d 의 디렉토리 안쪽에 module 을 설치하는 경우를 기준해서 설명해놓았습니다. 여기서는 gentoo linux를 기준으로 하기때문에 설정파일의 내용이 쪼금 틀려져야 합니다.&lt;br /&gt;
&lt;br /&gt;
일단 참고주소에서 알려주는 설정파일의 내용은 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
(setq load-path (cons (expand-file-name &amp;quot;~/.emacs.d/&amp;quot;) load-path))&lt;br /&gt;
(require &amp;#039;php-mode)&lt;br /&gt;
&lt;br /&gt;
(add-to-list &amp;#039;load-path (expand-file-name &amp;quot;~/.emacs.d/mmm-mode-0.4.8&amp;quot;))&lt;br /&gt;
(require &amp;#039;mmm-mode)&lt;br /&gt;
&lt;br /&gt;
(setq mmm-global-mode &amp;#039;maybe)&lt;br /&gt;
(mmm-add-mode-ext-class nil &amp;quot;\\.php3?\\&amp;#039;&amp;quot; &amp;#039;html-php)&lt;br /&gt;
(mmm-add-classes&lt;br /&gt;
 &amp;#039;((html-php&lt;br /&gt;
    :submode php-mode&lt;br /&gt;
    :front &amp;quot;&amp;lt;\\?\\(php\\)?&amp;quot;&lt;br /&gt;
    :back &amp;quot;\\?&amp;gt;&amp;quot;)))&lt;br /&gt;
(autoload &amp;#039;php-mode &amp;quot;php-mode&amp;quot; &amp;quot;PHP editing mode&amp;quot; t)&lt;br /&gt;
(add-to-list &amp;#039;auto-mode-alist &amp;#039;(&amp;quot;\\.php3?\\&amp;#039;&amp;quot; . html-mode))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
우리가 설정해줄 내용은 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
(require &amp;#039;php-mode)&lt;br /&gt;
(require &amp;#039;mmm-mode)&lt;br /&gt;
&lt;br /&gt;
(add-hook &amp;#039;html-mode-hook #&amp;#039;(lambda () (mmm-mode)))&lt;br /&gt;
(add-hook &amp;#039;php-mode-hook #&amp;#039;(lambda () (mmm-mode)))&lt;br /&gt;
(mmm-add-mode-ext-class nil &amp;quot;\\.php3?\\&amp;#039;&amp;quot; &amp;#039;html-php)&lt;br /&gt;
(mmm-add-classes&lt;br /&gt;
 &amp;#039;((html-php&lt;br /&gt;
    :submode php-mode&lt;br /&gt;
    :front &amp;quot;&amp;lt;\\?\\(php\\)?&amp;quot;&lt;br /&gt;
    :back &amp;quot;\\?&amp;gt;&amp;quot;)))&lt;br /&gt;
(autoload &amp;#039;php-mode &amp;quot;php-mode&amp;quot; &amp;quot;PHP editing mode&amp;quot; t)&lt;br /&gt;
(add-to-list &amp;#039;auto-mode-alist &amp;#039;(&amp;quot;\\.php3?\\&amp;#039;&amp;quot; . html-mode))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
약간의 차이가 있죠? 이미 load-path 에서 module이 등록된걸 확인했기때문에 별도로 &amp;#039;&amp;#039;&amp;#039;setq load-path&amp;#039;&amp;#039;&amp;#039; 를 해줄 필요가 없는겁니다.&lt;br /&gt;
&lt;br /&gt;
이제부터 &amp;#039;&amp;#039;&amp;#039;M-x php-mode&amp;#039;&amp;#039;&amp;#039; 로 php-mode 를 사용하시면 되겠습니다. 블럭을 설정한다음 Tab 키를 눌러주세요 :D&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class ArrayWeakComparisonTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
public function testEquality() {&lt;br /&gt;
$this-&amp;gt;assertEquals(&lt;br /&gt;
array(1 ,2,3 ,4,5,6),&lt;br /&gt;
array(&amp;#039;1&amp;#039;,2,33,4,5,6)&lt;br /&gt;
);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
위의 코드를 아래와 같이 바꿀 수 있습니다. 이걸 영문 문화권에서는 preety-printing 이라고 한다고 하더라구요.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class ArrayWeakComparisonTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
  public function testEquality() {&lt;br /&gt;
    $this-&amp;gt;assertEquals(&lt;br /&gt;
			array(1 ,2,3 ,4,5,6),&lt;br /&gt;
			array(&amp;#039;1&amp;#039;,2,33,4,5,6)&lt;br /&gt;
			);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===추가설정::단축키===&lt;br /&gt;
&lt;br /&gt;
위의 경우 mediawiki의 내용을 편집하는 코드 중간에 php code가 들어가면 indent 처리가 원하는대로 되지 않는 경우가 있습니다.&lt;br /&gt;
&lt;br /&gt;
(기본적으로 php-mode 는 c-mode 의 확장이라 보시면 됩니다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
연금술사님의 도움으로 아래와 같은 코드를 얻을 수 있었습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
(defun copy-and-indent-region ()&lt;br /&gt;
  (interactive)&lt;br /&gt;
  (save-excursion&lt;br /&gt;
    (when (region-active-p)&lt;br /&gt;
      (progn&lt;br /&gt;
        (kill-region (region-beginning) (region-end))&lt;br /&gt;
        (with-temp-buffer&lt;br /&gt;
          (c-mode)&lt;br /&gt;
          (yank)&lt;br /&gt;
          (indent-region (point-min) (point-max))&lt;br /&gt;
          (kill-region (point-min) (point-max)))&lt;br /&gt;
        (yank)&lt;br /&gt;
        (message &amp;quot;copied and indented selected region.&amp;quot;)))))&lt;br /&gt;
&lt;br /&gt;
(global-set-key &amp;quot;\C-c\C-i&amp;quot; &amp;#039;copy-and-indent-region)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
기본 내용인 즉슨 선택한 영역을 emacs에서 버처를 새로 잡아서 보내고 그 안에서 indent처리를 한다음 처리된 내용을 다시 붙여넣기하는정도...라고 보면 된답니다..(덜덜)&lt;br /&gt;
&lt;br /&gt;
마지막 한줄덕분에 C-c Tab 이라는 단축키를 사용할 수 있게 되었습니다.&lt;br /&gt;
&lt;br /&gt;
(그런데 가끔 emacs가 죽어요.. 왜일까요... 이것때문은 아닌거같은데...T.T)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==마치면서==&lt;br /&gt;
&lt;br /&gt;
연금술사님의 덕분에 모처럼 즐삽 펐습니다..(쿨럭)&lt;br /&gt;
&lt;br /&gt;
emacs.. 좀 미묘한 매력이 있는거같네요 :D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==참고주소==&lt;br /&gt;
&lt;br /&gt;
* [Emacs] MMM-mode 와 PHP-mode 의 결합 :: http://crazia.tistory.com/entry/Emacs-MMM-mode-%EC%99%80-PHP-mode-%EC%9D%98-%EA%B2%B0%ED%95%A9&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>