[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41. プログラム関連 ― 各言語用 (2006/07/31)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=programing%20mode"
"MeadowMemo/プログラム関連―各言語用"へのコメント(無し)
検索全文Elisp


この章で紹介していること

Emacs/Meadow には多くのプログラム言語に対応したモードが用意されています.

ここでは,各言語別に便利な機能やパッケージを紹介します.

プログラミングに関連した Elisp については,言語を問わずに使えそうな,汎用的なも のは 42. プログラム関連 ― 一般用 (2007/11/29) で紹介しています.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.1 C / C++ 関連の Elisp / 機能 (2003/11/14)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=c%20lang"
"MeadowMemo/C/C++関連のElisp/機能"へのコメント(無し)
検索全文Elisp

C / C++ 関連の Elisp の紹介です.

41.1.1 C , C++ , JAVA のモード ― cc-mode (2003/06/08)  
41.1.2 include などのヘッダを補完入力 (2003/09/24)  
41.1.3 ソースとヘッダを切り替え― toggle-source (2003/11/14)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.1.1 C , C++ , JAVA のモード ― cc-mode (2003/06/08)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=cc-mode"
"MeadowMemo/C,C++,JAVAのモード―cc-mode"へのコメント(2007/12/28)
検索全文Elisp

Meadow で C や C++ を編集すると, C-mode や C++-mode になります.これは, cc-mode.el という Elisp で定義されています.この cc-mode は C や C++ だけでなく, Objective-C , Java , IDL , Pike をサポートしています.

cc-mode は Meadow に標準で附属していますし,設定も不要です.うまく動作していない ようなら,以下を追加しておきます.

 
(setq auto-mode-alist
      (append (list
               '("\\.cpp$" . c++-mode)
               '("\\.c$" . c-mode)
               auto-mode-alist)))

41.1.1.1 C , C++ , JAVA のモードのフック (2003/06/08)  
41.1.1.2 C , C++ , JAVA のモードのインデント (2003/06/08)  
41.1.1.3 C , C++ , JAVA のモードのキーバインド (2003/06/08)  
41.1.1.4 C , C++ , JAVA のモードのカスタマイズ (2003/07/13)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.1.1.1 C , C++ , JAVA のモードのフック (2003/06/08)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=cc-mode%20hook"
"MeadowMemo/C,C++,JAVAのモードのフック"へのコメント(無し)
検索全文Elisp

各モードでの設定をするためには,フックを使うことが便利です.ここでは, cc-mode の フックを簡単に紹介します.

cc-mode には何種類かのフックがあります.

一つは各モード毎のフックで,「 c-mode-hook 」,「 c++-mode-hook 」 「 objc-mode-hook 」「 java-mode-hook 」「 idl-mode-hook 」「 pike-mode-hook 」 があります.モード毎に設定を変えたい時に使用します.このフックはモードを設定する 一番最後に実行されます.

二つ目は,「 c-mode-common-hook 」です.これは, C-mode や C++-mode など, cc-mode を利用しているすべてのモードで実行されます.これは,各モード毎のフックの 前に実行されます.

三つ目は,「 c-initialization-hook 」です.これも,「 c-mode-common-hook 」と同 様,すべてのモードで実行されます.これは,各モードを設定する一番最初に実行されま す.

実際には,各モードの設定を各モードのフックで,一般的な設定を 「 c-mode-common-hook 」で実行するといいでしょう.

そして,最初に実行する必要があるものは,「 c-initialization-hook 」で設定します. ただし,モードによっては,変数が設定されるため,上書きされる可能性があります.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.1.1.2 C , C++ , JAVA のモードのインデント (2003/06/08)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=cc-mode%20indent"
"MeadowMemo/C,C++,JAVAのモードのインデント"へのコメント(無し)
検索全文Elisp

cc-mode 利用できるスタイル

cc-mode でもっとも頻繁に使う機能はやはりオートインデントでしょう.

適当な文字数で字下げすることにより,後で読む時に楽になります.オートインデントと は,これを自動的にしてくれる機能です.

その字下げの方法は人の好みによって変化します. cc-mode では,それらを吸収するた めに,スタイルという方式を取っています.つまり,「インデントが 2 でコメントのみ の行は通常と同じ字下げとする」などといった情報を,「 gnu 」というスタイルで設定 できるのです.

デフォルトでは,以下のようなスタイルが定義されています.

インデント以外にも,挙動が違いますので,いろいろと試してみるといいでしょう.

スタイルの指定方法

好きなのがあれば,以下のように設定します.

 
(add-hook 'c-mode-common-hook
          '(lambda ()
             (c-set-style "gnu")
             ;; インデントの変更
             (setq c-basic-offset 4)
             ))

スタイルの作成方法

デフォルトが気に入らない場合には,デフォルトで良さそうなのを探して,それを編集し て,以下のように設定します.

 
(defconst my-c-style
  '(
    ;; 基本となるインデント
    (c-basic-offset . 4)
    ;; コメント行のインデント
    (c-comment-only-line-offset . (0 . 0))
    ;; インデントを以下で設定
    (c-offsets-alist . ((statement-block-intro . +)
                        (knr-argdecl-intro . 5)
                        (substatement-open . +)
                        (statement-case-open . +)
                        (statement-cont . +)
                        (arglist-intro . c-lineup-arglist-intro-after-paren)
                        (arglist-close . c-lineup-arglist)
                        (brace-list-open . +)
                        ))
    (c-special-indent-hook . c-gnu-impose-minimum)
    (c-block-comment-prefix . "")
    ))

(add-hook 'c-mode-common-hook
          '(lambda ()
             ;; 自分用のスタイルを追加
             (c-add-style "my-c-style" my-c-style t)
             ;; 自分用のスタイルを使う
             (c-set-style "my-c-style")
             ))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.1.1.3 C , C++ , JAVA のモードのキーバインド (2003/06/08)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=cc-mode%20keybind"
"MeadowMemo/C,C++,JAVAのモードのキーバインド"へのコメント(無し)
検索全文Elisp

最後に, cc-mode のキーバインドです.括弧や関数単位でのカーソル移動などは 42.9.1 括弧単位,関数単位でのカーソル移動 (2003/06/08)で紹介しているものを利用できます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.1.1.4 C , C++ , JAVA のモードのカスタマイズ (2003/07/13)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=cc-mode%20customize"
"MeadowMemo/C,C++,JAVAのモードのカスタマイズ"へのコメント(無し)
検索全文Elisp

とりあえず,思いついた順番に,,,

+ でインデントを揃える

result = a +
b +
c;

を「 + 」で揃えるようにする.

設定は

 
(setq c-mode-common-hook
      '(lambda ()
         (let ()
           (c-set-offset 'statement-cont 'c-lineup-math)
           ))

似たようなものは他にもあります. cc-align.el にあるので,参考に.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.1.2 include などのヘッダを補完入力 (2003/09/24)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=cpp-complt"
"MeadowMemo/includeなどのヘッダを補完入力"へのコメント(無し)
検索全文Elisp

C や C++ でのヘッダを補完入力することができます.

http://www.bookshelf.jp/elc/cpp-complt.el をダウンロードして,ロードパス の通ったところに保存し,

 
(add-hook 'c-mode-common-hook
          (function (lambda ()
                      (require 'cpp-complt)
                      (define-key c-mode-map [mouse-2]
                        'cpp-complt-include-mouse-select)
                      (define-key c-mode-map "#"
                        'cpp-complt-instruction-completing)
                      (define-key c-mode-map "\C-c#"
                        'cpp-complt-ifdef-region)
                      (cpp-complt-init))))

(setq cpp-complt-standard-header-path
      '(
        "E:/cygwin/usr/include/"
        ))

のように設定してください.これで,# を入力すると,自動的に補完入力になります.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.1.3 ソースとヘッダを切り替え― toggle-source (2003/11/14)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=toggle-source"
"MeadowMemo/ソースとヘッダを切り替え―toggle-source"へのコメント(無し)
検索全文Elisp
要約

ソースファイルとヘッダファイルを簡単に切り替えることができる.

何が問題なのか?

C++ のコードを書く場合, test.cpp と test.h のようにソースファイルとヘッダファイルを 書くと思います.しかし,これらを切り替えようと思うと,C-x b で切り替える必 要があり面倒です.

何ができるのか?

C-tだけで切り替えることができます.

インストール方法

toggle-source.el をダウンロードし,ロードパスの通ったところへ置きます.

設定方法

以下を.emacs に追加します.

 
(require 'toggle-source)

ただし,

 
(global-set-key "\C-t" 'toggle-source)

という設定が含まれているので,このキーに別の機能を割り当てている場合には,キーバ インドを割り当て直す必要があります.

詳しい使い方

例えば test.cpp を開いて,C-tとすると, test.h を開き,そのバッファに切り替わ ります.

この対応は

 
(defvar toggle-source::mappings
  (list
   (cons ".h"  ".cpp")
   (cons ".h" ".cc")
   (cons ".hh" ".cxx")
   (cons ".rc" ".h")
   )

のように定義されているので,自分で好きな対応を追加することもできます.

他の方法

標準の機能としては ff-find-other-file があります. 使い方は単純でM-x ff-find-other-file とします. これで, ヘッダファイルとソースを切り替え ることができます.

ただし, カーソルが「#include 」などの付近にある場合は動作が異なり, M-x ff-find-other-fileを実行すると, インクルードしようとしているヘッダファ イルが表示されます.

ヘッダを探すパスは

 
(defcustom cc-search-directories
  '("." "/usr/include" "/usr/local/include/*")
  "*See the description of the `ff-search-directories' variable."
  :type '(repeat directory)
  :group 'ff)

のように定義されてますので, ヘッダファイルのある場所を追加しておくとい いでしょう.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.2 Elisp 関連の Elisp / 機能 (2004/12/11)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=elisp%20emacs"
"MeadowMemo/Elisp関連のElisp/機能"へのコメント(無し)
検索全文Elisp

Emacs Lisp 関連の Elisp / 機能を紹介します.

41.2.1 M-:での入力を便利にする ― eval-expr (2003/10/01)  
41.2.2 簡易ドキュメント ― eldoc (2003/02/24)  
41.2.3 重複している Elisp を検索 ― shadow (2003/11/18)  
41.2.4 Elisp の書式をチェック ― ckeckdoc (2003/12/16)  
41.2.5 Lisp 関数だけに色付け (2004/12/11)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.2.1 M-:での入力を便利にする ― eval-expr (2003/10/01)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=eval-expr"
"MeadowMemo/M-:での入力を便利にする―eval-expr"へのコメント(無し)
検索全文Elisp
要約

M-:で入力ミスをすると,普通は全部入力し直しだが,これならすぐに編集し直す ことができる.

何が問題なのか?

M-:で簡単なコードを実行できます.しかし,入力ミスをすると,エラーで入力し た文字が消えてしまい,再入力をしなくてはなりません.

さらに,結果が長いと,ミニバッファでは非常に見辛いものになってしまいます.

何ができるのか?

M-:で入力ミスなどでエラーになっても,カーソルはミニバッファに残るので,す ぐに変更ができます.

また,結果が長くなると,一次的なバッファが作られ,そこに表示されます.

インストール方法

eval-expr.el をダウンロードして,ロードパスの通ったところへ置きます.

設定方法

以下を.emacs に追加します.

 
(require 'eval-expr)
(eval-expr-install)

詳しい使い方

普通にM-:で評価するだけです. (setq リターンなどとわざと間違えると,動作し ていることを確認できます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.2.2 簡易ドキュメント ― eldoc (2003/02/24)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=eldoc"
"MeadowMemo/簡易ドキュメント―eldoc"へのコメント(無し)
検索全文Elisp

Elisp を書いていると,この関数の引数はいくつ必要だったかなと,知りたくなることが あります.しかし,そのたびに info へ飛ぶのも面倒です.

そこで,便利なものが eldoc です.これは,カーソル付近の関数の引数をミニバッファに 表示してくれるものです.

Emacs に付属していますので,以下のようにするだけで使うことができます.

 
(autoload 'turn-on-eldoc-mode "eldoc" nil t)
(add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode)
(add-hook 'lisp-interaction-mode-hook 'turn-on-eldoc-mode)
(add-hook 'ielm-mode-hook 'turn-on-eldoc-mode)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.2.3 重複している Elisp を検索 ― shadow (2003/11/18)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=shadow"
"MeadowMemo/重複しているElispを検索―shadow"へのコメント(無し)
検索全文Elisp

何が問題なのか?

Elisp はロードパス上に複数あってもどちらか一方しか読み込まれません.しかし,その ファイルを探すのは面倒です.

何ができるのか?

そんな重複している Elisp を検索する機能が shadow.el です.

実際にどちらが有効になっていて,どちらが無効になっているかも分かります.

インストール方法は?

標準で附属していますので,設定も不要です.

詳しい使い方は?

これは,標準で付属していますので,M-x list-load-path-shadows とするだけで 実行できます.

そうすると,

c:/Meadow2/1.99a6/site-lisp/t-gnus/gnus hides c:/Meadow2/1.99a6/lisp/gnus/gnus
c:/Meadow2/1.99a6/site-lisp/t-gnus/gnus-win hides c:/Meadow2/1.99a6/lisp/gnus/gnus-win
c:/Meadow2/1.99a6/site-lisp/t-gnus/gnus-vm hides c:/Meadow2/1.99a6/lisp/gnus/gnus-vm
c:/Meadow2/1.99a6/site-lisp/t-gnus/gnus-uu hides c:/Meadow2/1.99a6/lisp/gnus/gnus-uu
c:/Meadow2/1.99a6/site-lisp/t-gnus/gnus-util hides c:/Meadow2/1.99a6/lisp/gnus/gnus-util

という風に出力されます.

これから, c:/Meadow2/1.99a6/site-lisp/t-gnus/gnus.elc が c:/Meadow2/1.99a6/lisp/gnus/gnus.elc を隠していることが分かります.

新しいのを入れたのに新機能が使えないという時などに確認してみるといいでしょう.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.2.4 Elisp の書式をチェック ― ckeckdoc (2003/12/16)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=checkdoc"
"MeadowMemo/Elispの書式をチェック―ckeckdoc"へのコメント(無し)
検索全文Elisp
要約

Elisp では関数の説明は必ず書くなど,望ましい書き方があります.このコマンドはその 書き方に合っているかどうかを確認してくれます.

何ができるのか?

などをチェックしてくれます.

インストール方法

標準で付属しています.

設定方法

不要です.

詳しい使い方

自作の Elisp などを開き,M-x checkdocとします.そうすると,バッファの先頭か ら順番にチェックしてくれます.

簡単に直すことのできるエラーであれば,fで自動で直してくれます.

自分で編集したいエラーはeを入力します.すると,再帰編集モードになり,自由 に編集することができます.編集が終わったら,C-M-c (Esc を押してから離し,そ の語 C-c を入力) すると,チェックが再スタートします.

コメント

100%従う必要は無いでしょうが,ドキュメントは書いておくべきです.自戒を込めて...



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.2.5 Lisp 関数だけに色付け (2004/12/11)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=font-lock-func"
"MeadowMemo/Lisp関数だけに色付け"へのコメント(無し)
検索全文Elisp
要約

Emacs Lispなどで関数に相当する部分に色を付けることができます.

情報源

2ちゃんねる

何ができるのか?

関数に相当する部分に色が付き見やすくなります.

設定済みMeadowでは

入っていませんので,.emacsに追加する必要があります.

設定方法

以下を.emacsに追加します.

 
(defface my-face-elisp-macro
  '((t (:foreground "sea green"))) nil)
(defface my-face-elisp-subr
  '((t (:foreground "purple"))) nil)
(defface my-face-elisp-func
  '((t (:foreground "medium blue"))) nil)
(defun my-font-lock-elisp-macro (limit)
  (when (re-search-forward
         "['(]\\([^() \n]+\\)" limit t)
    (or (and (not (memq (get-text-property
                         0 'face (match-string 1))
                        '(font-lock-comment-face
                          font-lock-warning-face)))
             (condition-case nil
                 (symbol-function
                  (intern-soft
                   (match-string-no-properties 1)))
               (error nil)))
        (my-font-lock-elisp-macro limit))))
(defun my-font-lock-elisp-subr (limit)
  (when (re-search-forward
         "['(]\\([^() \n]+\\)" limit t)
    (or (and (not (memq (get-text-property
                         0 'face (match-string 1))
                        '(font-lock-comment-face
                          font-lock-warning-face)))
             (subrp
              (condition-case nil
                  (symbol-function
                   (intern-soft
                    (match-string-no-properties 1)))
                (error nil))))
        (my-font-lock-elisp-subr limit))))
(defun my-font-lock-elisp-func (limit)
  (when (re-search-forward
         "['(]\\([^() \n]+\\)" limit t)
    (or (and (not (memq
                   (get-text-property
                    0 'face (match-string 1))
                   '(font-lock-comment-face
                     font-lock-warning-face)))
             (byte-code-function-p
              (condition-case nil
                  (symbol-function
                   (intern-soft
                    (match-string-no-properties 1)))
                (error nil))))
        (my-font-lock-elisp-func limit))))
(font-lock-add-keywords
 'lisp-interaction-mode
 '((my-font-lock-elisp-macro 1 'my-face-elisp-macro t)) t)
(font-lock-add-keywords
 'lisp-interaction-mode
 '((my-font-lock-elisp-func 1 'my-face-elisp-func t)) t)
(font-lock-add-keywords
 'lisp-interaction-mode
 '((my-font-lock-elisp-subr 1 'my-face-elisp-subr t)) t)
(font-lock-add-keywords
 'emacs-lisp-mode
 '((my-font-lock-elisp-macro 1 'my-face-elisp-macro t)) t)
(font-lock-add-keywords
 'emacs-lisp-mode
 '((my-font-lock-elisp-func 1 'my-face-elisp-func t)) t)
(font-lock-add-keywords
 'emacs-lisp-mode
 '((my-font-lock-elisp-subr 1 'my-face-elisp-subr t)) t)

詳しい使い方

Emacs Lisp のファイルを開くだけです.すると,例えば

(defun my-font-lock-elisp-macro (limit)
  (when (re-search-forward
         "['(]\\([^() \n]+\\)" limit t)
    (or (and (not (memq (get-text-property
                         0 'face (match-string 1))
                        '(font-lock-comment-face
                          font-lock-warning-face)))
             (condition-case nil
                 (symbol-function
                  (intern-soft
                   (match-string-no-properties 1)))
               (error nil)))
        (my-font-lock-elisp-macro limit))))

上記のようなものが,

(defun my-font-lock-elisp-macro (limit)
  (when (re-search-forward
         "['(]\\([^() \n]+\\)" limit t)
    (or (and (not (memq (get-text-property
                         0 'face (match-string 1))
                        '(font-lock-comment-face
                          font-lock-warning-face)))
             (condition-case nil
                 (symbol-function
                  (intern-soft
                   (match-string-no-properties 1)))
               (error nil)))
        (my-font-lock-elisp-macro limit))))

のようになります(色は少し変えてあります).



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.3 Ruby 関連の Elisp / 機能 (2004/12/11)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=ruby%20emacs"
"MeadowMemo/Ruby関連のElisp/機能"へのコメント(無し)
検索全文Elisp

Ruby 関連の Elisp / 機能を紹介します。

41.3.1 Ruby モードを使う (2003/06/08)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.3.1 Ruby モードを使う (2003/06/08)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=ruby-mode"
"MeadowMemo/Rubyモードを使う"へのコメント(無し)
検索全文Elisp

ruby-mode.el を使いましょう.これは, ruby 本体に付属しています. misc というディ レクトリ内にありますので,これをロードパスの通ったところへ置き以下を追加すれば使 えます.

inf-ruby.el なども便利そうなので,一度ヘッダを読んでみるといいでしょう.

 
(autoload 'ruby-mode "ruby-mode"
  "Mode for editing ruby source files" t)
(setq auto-mode-alist
      (append '(("\\.rb$" . ruby-mode)) auto-mode-alist))
(setq interpreter-mode-alist (append '(("ruby" . ruby-mode))
                                     interpreter-mode-alist))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.4 Perl 関連の Elisp / 機能 (2006/07/31)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=perl%20emacs"
"MeadowMemo/Perl関連のElisp/機能"へのコメント(無し)
検索全文Elisp

Perl 関連の Elisp / 機能を紹介します

41.4.1 Perl モードを使う − cperl-mode (2006/07/31)  
41.4.2 Perl のシンボルを補完 ― perlplus (2003/06/08)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.4.1 Perl モードを使う − cperl-mode (2006/07/31)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=perl-mode"
"MeadowMemo/Perlモードを使う−cperl-mode"へのコメント(無し)
検索全文Elisp

何ができるのか?
Meadow には perl-mode が付属しています.しかし,これは古いために,一部色やインデ ントがおかしいので,私は cperl-mode を使っています.

インストール方法は?

インストールは http://www.cpan.org/modules/by-module/CPAN/ILYAZ/cperl-mode/ よりダウン ロード後,解凍して, cperl-mode.el の名でロードパスの通ったところへ保存します.

最近の Meadow であれば標準で附属しているので,入れ直す必要はありません.

設定方法は?

以下を.emacs に追加します.

私は以下のように一部色の変更もしています.

 
(autoload 'cperl-mode "cperl-mode" "alternate mode for editing Perl programs" t)
(setq auto-mode-alist
      (append '(("\\.\\([pP][Llm]\\|al\\)$" . cperl-mode))  auto-mode-alist ))
(setq interpreter-mode-alist (append interpreter-mode-alist
                                     '(("miniperl" . cperl-mode))))
(add-hook 'cperl-mode-hook
          (lambda ()
            (set-face-bold-p 'cperl-array-face nil)
            (set-face-background 'cperl-array-face "black")
            (set-face-bold-p 'cperl-hash-face nil)
            (set-face-italic-p 'cperl-hash-face nil)
            (set-face-background 'cperl-hash-face "black")
            ))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.4.2 Perl のシンボルを補完 ― perlplus (2003/06/08)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=perlplus"
"MeadowMemo/Perlのシンボルを補完―perlplus"へのコメント(無し)
検索全文Elisp
何が問題なのか?

Perl の関数や変数といったシンボルは様々なものがあり,記憶が曖昧なものなどは調べる 必要がありますし,打ち間違えることもあります.

何ができるのか?

perlplus を利用することでシンボルを補完することができるようになります.

インストール方法は?

perlplus.elをダウンロー ドし,ロードパスの通ったところへ置きます.

設定方法は?

以下を.emacs に追加します.

ただし, cperl モードを使用する時の設定例です. cperl-mode 以外を使う場合には, 「 cperl-mode-hook 」を変更してください.

 
(add-hook 'cperl-mode-hook
          (lambda ()
            (require 'perlplus)
            (local-set-key "\M-\t" 'perlplus-complete-symbol)
            (perlplus-setup)))

詳しい使い方は?

perl のファイルを開き,適当な文字を入力後にM-TABとします.これで,補完候補 が表示されます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.5 Meadow で JAVA の開発 (2004/04/06)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=java"
"MeadowMemo/MeadowでJAVAの開発"へのコメント(無し)
検索全文Elisp

Meadow で JAVA の開発を行うためのリンク集です.書こうかと思ったのですが,私が下 手に書くよりもずっといいページがあったので,リンクのみにします.

JDEE のサイト

Meadow and JDE

Meadow de JDE



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.6 PHP 関連の Elisp / 機能 (2004/01/20)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=php"
"MeadowMemo/PHP関連のElisp/機能"へのコメント(無し)
検索全文Elisp

PHP に関連したものです。 EmacsWiki の HtmlModeDeluxe も参 考になるかもしれません (HTML に PHP-mode を mmm-mode により埋め込む話です) .

41.6.1 PHP 関連の Elisp / 機能 (2004/01/20)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.6.1 PHP 関連の Elisp / 機能 (2004/01/20)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=php-mode"
"MeadowMemo/PHP関連のElisp/機能"へのコメント(無し)
検索全文Elisp

要約

PHP 用のメジャーモードを提供します.さらに,不明な関数のドキュメントを簡単に表示 できます.

何ができるのか?

PHP のためのメジャーモードです.

 
// テスト
require('init.php');

<?php
if ($a > $b) {
    print "a is bigger than b";
} else {
    print "a is NOT bigger than b";
}
?>

インストール方法

php-modeからダウンロードして解 凍し,ロードパスの通ったところへ置きます.

設定方法

以下を.emacs に追加します.

 
(autoload 'php-mode "php-mode" "PHP mode" t)

(defcustom php-file-patterns (list "\\.php[s34]?\\'" "\\.phtml\\'" "\\.inc\\'")
  "*List of file patterns for which to automatically invoke php-mode."
  :type '(repeat (regexp :tag "Pattern"))
  :group 'php)

(let ((php-file-patterns-temp php-file-patterns))
  (while php-file-patterns-temp
    (add-to-list 'auto-mode-alist
                 (cons (car php-file-patterns-temp) 'php-mode))
    (setq php-file-patterns-temp (cdr php-file-patterns-temp))))

詳しい使い方

拡張子が php や inc のファイルを開くと php-mode になります.TABでオートインデン トできます.

さらに, php-mode の特徴は標準関数のマニュアルを表示できることです.方法は知りたい 関数にカーソルを合わせ,C-cC-fとします.そうすると,ブラウザに該当の文書が 表示されます.例えば 「 foreach 」なら 「http://www.php.net/foreach を表示します.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

41.7 bat / ini ファイルをカラフルに − generic.el (2003/06/08)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=generic"
"MeadowMemo/bat/iniファイルをカラフルに−generic.el"へのコメント(無し)
検索全文Elisp

bat や ini ファイルを編集する時,何の色もつかなくて寂しいですよね.これもカラフ ルにしてしまいましょう

そのために, generic-x を使います.これは Meadow に標準で付属してますので,

 
(require 'generic-x)
(setq auto-mode-alist (append (list
                               '("\\.bat$" . bat-generic-mode)
                               '("\\.ini$" . ini-generic-mode)
                               auto-mode-alist)))

だけで使うことができます.これで, autoexec.bat がカラフルになります.

この generic-x.el は各種のモード定義をしているファイルで,実際には generic.el が 色付けなどを行っています.キーワードに色をつけた簡単なモードを作りたい時には, generic-x.el を参考にすると簡単にできると思います.


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]