Emacsにweb-mode&php-mode入れて超快適
Mozcはあいかわらすsudoだと効かないみたいだけど、これは多分目星がついてるので近々解決するかも知れない。たぶんsudoしたときにユーザーの環境変数が受け継がれてないんだよね。sudoerに変更加えるか、sudo -Eすればいいとかなんとか。
1.過去のゴミファイルがいかんのか?
ってことでEmacs23関係のパッケ−ジ全削除。commonとかそういうの含めて、変な他のパッケージ巻き込まない程度に削除。設定ファイルは~./emacs.dとusr/share/emacs/このへんもrm-rf 。
素の状態でEmacs24 関係のパッケージインストール&再インストール。
emacs24 (24.3+1-2)
emacs24-bin-common (24.3+1-2)
emacs24-common (24.3+1-2)
emacs24-el (24.3+1-2)
emacsen-common (2.0.5)
入れたのはこのへん。
2.Mozcがあれですね。
そういえば昔にビルドしていれたのそのまんまだったんですね。
Mozcの辞書を強化する方法 その2
あーえ!?なんかDebian系はサポート外れたとか何とか。仕方ないのでずっと前にビルドしたMozcに辞書追加 on LMDE201403のころのソースコードがサブ機のDLフォルダかどっかに残ってたのでそれをビルドしてemacs-mozcはそれで行こう。(最新のはどーもビルド通らなかった)
3.web-modeとphp-mode入れて有効化
ここが本命。Emacs24から標準で入ってるpackage機能でweb-modeとphp-modeを入れます。(前回もやったけどphp-modeが有効にならなかった)
~/.emacs.d/init.elにmelpaとmamalade追加
;packages
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/#/"))
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))
(package-initialize)
melpaはhttp://melpa.milkbox.net/packages/って記述をよく見かけるんだけど、こっちだとうまく読み込めないこと数回。このURLにアクセスすると結局http://melpa.org/#/にリダイレクトされてるのでこっち入れてみたら上々。
M-x list-packages でC-sで検索かけてweb-modeとphp-modeを探してインストール。似たような名前のがいくつかあると思いますが、ドンピシャな名前のやつをそれぞれ入れればおっけー。
4.init.el
ぶっちゃけload-path云々とかよくわからなかったけど、Twitterでイカの人が設定ファイル晒してくれたりしたので、ありがたく頂戴していいとこ取りな感じで行きましょ−。ということでこんな感じ。
(add-to-list 'load-path "~/.emacs.d/")
;;======================================================================
;; 言語・文字コード関連の設定
;;======================================================================
(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(setq file-name-coding-system 'utf-8)
;;
;;======================================================================
;; Mozc
;; CTRL-\で入力モード切替え
;;======================================================================
(load-file "/usr/share/emacs/site-lisp/emacs-mozc/mozc.el")
(require 'mozc)
(setq default-input-method "japanese-mozc")
(setq mozc-candidate-style 'overlay)
;;
;;=======================================================================
;; Misc
;;=======================================================================
(setq frame-title-format ; フレームのタイトル指定
(concat "%b - emacs@" system-name))
(display-time) ;;時計を表示
(show-paren-mode t)
(setq inhibit-startup-message t) ;
(setq initial-scratch-message nil) ;スタートアップスクリーン抑制
(setq comment-style 'multiline) ;ボックスコメント
;;
;;=======================================================================
;; ~/.emacs.d/elpa/ にパスを通す
;;=======================================================================
(add-to-list 'load-path (expand-file-name "~/.emacs.d/elpa/"))
;;
;;=======================================================================
;;packages
;;=======================================================================
;packages
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/#/"))
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))
(package-initialize)
;;
;;=======================================================================
;;web-mode
;;=======================================================================
;web-mode
(require 'web-mode)
;;; 適用する拡張子
(add-to-list 'auto-mode-alist '("\\.phtml$" . web-mode))
(add-to-list 'auto-mode-alist '("\\.tpl\\.php$" . web-mode))
(add-to-list 'auto-mode-alist '("\\.jsp$" . web-mode))
(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.as[cp]x$" . web-mode))
(add-to-list 'auto-mode-alist '("\\.erb$" . web-mode))
(add-to-list 'auto-mode-alist '("\\.html?$" . web-mode))
(add-to-list 'auto-mode-alist '("\\.ctp?$" . web-mode))
(defun web-mode-hook ()
"Hooks for Web mode."
;; 変更日時の自動修正
(setq time-stamp-line-limit -200)
(if (not (memq 'time-stamp write-file-hooks))
(setq write-file-hooks
(cons 'time-stamp write-file-hooks)))
(setq time-stamp-format " %3a %3b %02d %02H:%02M:%02S %:y %Z")
(setq time-stamp-start "Last modified:")
(setq time-stamp-end "$")
;; web-modeの設定
(setq web-mode-markup-indent-offset 2) ;; html indent
(setq web-mode-css-indent-offset 2) ;; css indent
(setq web-mode-code-indent-offset 2) ;; script indent(js,php,etc..)
;; htmlの内容をインデント
;; TEXTAREA等の中身をインデントすると副作用が起こったりするので
;; デフォルトではインデントしない
;;(setq web-mode-indent-style 2)
;; コメントのスタイル
;; 1:htmlのコメントスタイル(default)
;; 2:テンプレートエンジンのコメントスタイル
;; (Ex. {# django comment #},{* smarty comment *},{{-- blade comment --}})
(setq web-mode-comment-style 2)
;; 終了タグの自動補完をしない
;;(setq web-mode-disable-auto-pairing t)
;; color:#ff0000;等とした場合に指定した色をbgに表示しない
;;(setq web-mode-disable-css-colorization t)
;;css,js,php,etc..の範囲をbg色で表示
;; (setq web-mode-enable-block-faces t)
;; (custom-set-faces
;; '(web-mode-server-face
;; ((t (:background "grey")))) ; template Blockの背景色
;; '(web-mode-css-face
;; ((t (:background "grey18")))) ; CSS Blockの背景色
;; '(web-mode-javascript-face
;; ((t (:background "grey36")))) ; javascript Blockの背景色
;; )
;;(setq web-mode-enable-heredoc-fontification t)
)
;; 色の設定
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(web-mode-comment-face ((t (:foreground "#D30628")))) ;コメント
'(web-mode-css-at-rule-face ((t (:foreground "#FF7F00")))) ;CSSタグ
'(web-mode-css-pseudo-class-face ((t (:foreground "#FF7F00")))) ;CSS擬似クラス
'(web-mode-css-rule-face ((t (:foreground "#A0D8EF")))) ;CSSタグ
'(web-mode-doctype-face ((t (:foreground "#82AE46")))) ;docutype
'(web-mode-html-attr-name-face ((t (:foreground "#C97586")))) ;属性名など
'(web-mode-html-attr-value-face ((t (:foreground "#82AE46")))) ;属性値
'(web-mode-html-tag-face ((t (:foreground "##4682ae" :weight bold)))) ;要素名
'(web-mode-server-comment-face ((t (:foreground "#D9333F"))))) ;コメント
(add-hook 'web-mode-hook 'web-mode-hook)
;;=======================================================================
;;php-mode
;;=======================================================================
(autoload 'php-mode "php-mode")
(setq auto-mode-alist
(cons '("\\.php\\'" . php-mode) auto-mode-alist))
(setq php-mode-force-pear t)
(add-hook 'php-mode-hook
'(lambda ()
(setq php-manual-path "/usr/local/share/php/doc/html")
(setq php-manual-url "http://www.phppro.jp/phpmanual/")))
5.実は大体web-modeで事足りる?


いや、使い方にもよると思いますが、今回の目的はphp,html,cssを快適に閲覧編集したいってこと。すると実はweb-modeはphpもサポートしているので、php-modeじゃないとダメ!!って場面は少ないような気がします。そこまで使い込んでないけども。インデントとかでビミョーに挙動が違う時もあるけどね。このへんはなれと好みな問題な気もします。
ちなみに麦汁の人におしえてもらったりもしたんですが、M-x php-mode M-x web-modeとかで切り替えもできるんですねすごいね!!
結局php-modeとかうまく動かなかったのは、よくよく調べると以前のVer.のゴミファイルがなんかしてたのと、init.elの書き方でエラーが出てたところがあったみたい。エラーメッセージちゃんと見ようね俺氏。
あぁ、当然CentOSサーバーの方もこのinit.elコピって快適になりました。
6.その他ちょっと覚えた便利な使い方
C-x C-fでEmacs閉じないまま違うファイルに移動できる。新規作成もここで行ける。
M-x eshellでEmacs上で端末起動。ちょっとしたcpとかmkdirとか走らせたいときには重宝する。というか普通にコマンド走るのでアレだけれども。exitで終了。
いや、基本的な設定と簡単な使い方覚えるだけでここまで快適になるとは思ってませんでしたね。エディターへのストレスがほぼ消えた感じですごいうれしー。これでガシガシコード書けますね!!
関連記事
・LMDEでEmacsのC-Spcが使えなかった問題
・Emacsもvimもまともに使えない自分がLinuxMintで使っているエディタとか
コマンド
・LMDE201403にEmacs24を入れる(+CentOS6.6)
- 関連記事
-
- CakePHP2.6の初期エラーいろいろ解決 (2015/03/29)
- Emacsにweb-mode&php-mode入れて超快適 (2015/02/28)
- LMDEのLEMPでCakePHP (2015/02/26)
Windowsの目次・Linuxの目次・Linuxの目次2・ ・自作PC関連の目次・Web技術関連の目次
全記事一覧・情報サイト新着RSS一覧
Sponsored Link