ログ日記

作業ログと日記とメモ

EmacsでPHPを書くときのアウトラインモード設定

;;; アウトラインモード(php)
 (add-hook
  'php-mode-hook
  '(lambda ()
    (setq outline-regexp "^<\\?\\|^class\\|^\\?>\\|^}\\|^    function\\|^/\\*\\*\\|^    /\\*\\*\\|^interface\\|^abstract\\\
|^    private\\|^    protected\\|^    public\\|^    static\\|^    abstract")
    (setq outline-level
     (function (lambda ()
      (save-excursion
        (let ((str nil))
          (looking-at outline-regexp)
          (setq str (buffer-substring-no-properties
                     (match-beginning 0) (match-end 0)))
          (cond
           ((string-match "^/\\*\\*" str) 1) ; 階層1 
           ((string-match "^<\\?" str) 1)
           ((string-match "^\\?>" str) 1)
           ((string-match "^class" str) 1)
           ((string-match "^interface" str) 1)
           ((string-match "^abstract" str) 1)
           ((string-match "^    /\\*\\*" str) 2)
           ((string-match "^    function" str) 3)
           ((string-match "^    private" str) 3)
           ((string-match "^    protected" str) 3)
           ((string-match "^    public" str) 3)
           ((string-match "^    static" str) 3)
           ((string-match "^    abstract" str) 3)
           ))))))
     (outline-minor-mode t)
     (hide-body)))

Todo: 階層が利用されていないので、もっと綺麗に表示するようにしたい


簡易マニュアル

  • C-c @ C-a : 全表示
  • C-c @ C-e : 展開
  • C-c @ C-c : 折りたたみ


※参考
何でもアウトラインモード
http://www.bookshelf.jp/pukiwiki/pukiwiki.php?%B2%BF%A4%C7%A4%E2%A5%A2%A5%A6%A5%C8%A5%E9%A5%A4%A5%F3%A5%E2%A1%BC%A5%C9