言語

Javaプログラム作成の道具を作る。

◇ 1  .emacs (または.emacs.el)の確保

  念のため、オリジナルの.emacsを次のようにコピーしておく。

   $ cp .emacs .emacs.ORG 

◇ 2  emacs をバックグラウンドで実行する。
   $ emacs & 

◇ 3  .emacsファイルを開く。

 C-x C-f または、メニューのFilesからOpen File... を選択する。
 ミニバッファにFind Fileと表示されるので、次のように.emacsを指定する。

 Find File: ~/.emacs 

◇ 4  Emacs Lispプログラムを書き込む。

 .emacsを開いたら、ファイルの最後に次のEmacs Lispプログラムを書き込む。


;;; My Java-mode
(setq load-path (cons "~/elisp" load-path))
(autoload 'my-java-mode "my-java.el")
(setq auto-mode-alist
   (cons '("\\.java$" . my-java-mode) auto-mode-alist))


◇ 5  .emacsをセーブし、emacsを終了する。

  C-x C-s または、メニューのFileからSave(current buffer)を選択する。

  C-x C-c または、メニューのFileからExit Emacsを選択する。


◇ 6  Emacs Lispプログラムを格納するディレクトリとしてelispを作る。
 $ mkdir elisp 

◇ 7  elispディレクトリへ移り、emacsを実行する。
 $ cd elisp 
$ emacs &

◇ 8  *scratch*バッファでJavaプログラムのテンプレートをテストする。
8.1  mainメソッドのテンプレート

 現在のバッファが*scratch*であることを確かめて、次のinsert関数を入力し、
C-jで評価する。( C-j はControlキイを押しながらjキイを押す意味である。)


(insert "class  {\n  public static void main(String[] args) {\n  }\n}") C-j 

 C-j によって、次のように表示されるようにテンプレートを修整する。
最後に表示されるnilは実際に使うときは表示されないので無視すること。

Class {
   public static void main(String[] args) {
   }
}nil


8.2  for文のテンプレート

(insert "   for (;;) {\n   }") C-j 

 C-j によって、次のように表示されるようにテンプレートを修整する。
最後に表示されるnilは実際に使うときは表示されないので無視すること。

   for (;;) {
   }nil


8.3  while文のテンプレート

(insert "   while () {\n   }") C-j 

 C-j によって、次のように表示されるようにテンプレートを修整する。
最後に表示されるnilは実際に使うときは表示されないので無視すること。

   while () {
   }nil


8.4  if文のテンプレート

(insert "   if () {\n   } else {\n   }") C-j 

 C-j によって、次のように表示されるようにテンプレートを修整する。
最後に表示されるnilは実際に使うときは表示されないので無視すること。

   if () {

   } else {
   }nil


8.5  printlnメソッドのテンプレート

(insert "   System.out.println ();") C-j 

 C-j によって、次のように表示されるようにテンプレートを修整する。
最後に表示されるnilは実際に使うときは表示されないので無視すること。

   System.out.println();nil


◇ 9  テンプレート生成の自動読み出しプログラムを作成する。

 このプログラムの名前をmy-java.elとする。

 C-x C-f または、メニューのFilesからOpen File... を選択する。
 ミニバッファにFind Fileと表示されるので、次のようにmy-java.elを指定する。

 Find File: ~/elisp/my-java.el 

 my-java.elのバッファが開いたら、次のようなプログラムを書く。
 テンプレートの部分は、C-x C-b または、メニューのBuffersから*scratch*を
選択して参照するか、直接コピーして貼り付ければよい。


(defvar my-java-mode-map nil)

(if my-java-mode-map
    ()
  (setq my-java-mode-map (make-sparse-keymap))
  (define-key my-java-mode-map "\C-cm" 'mj-class-main)
  (define-key my-java-mode-map "\C-cf" 'mj-for)
  (define-key my-java-mode-map "\C-cw" 'mj-while)
  (define-key my-java-mode-map "\C-ci" 'mj-if)
  (define-key my-java-mode-map "\C-cp" 'mj-system-out-println))

(defun my-java-mode ()
  (interactive)
  (kill-all-local-variables)
  (use-local-map my-java-mode-map)
  (setq mode-name "My Java Mode")
  (setq major-mode 'my-java-mode)
  (run-hooks 'my-java-mode-hook))

(defun mj-class-main ()
  (interactive)
  (insert "class  {\n  public static void main(String[] args) {\n  }\n}"))

(defun mj-for ()
  (interactive)
  (insert "   for (;;) {\n   }"))

(defun mj-while ()
  (interactive)
  (insert "   while () {\n   }"))

(defun mj-if ()
  (interactive)
  (insert "   if () {\n   } else {\n   }"))

(defun mj-system-out-println ()
  (interactive)
  (insert "   System.out.println ();"))



◇ 10  書き終わったら、my-java.elバッファを格納し、emacsを終了する。

  C-x C-s または、メニューのFileからSave(current buffer)を選択する。

  C-x C-c または、メニューのFileからExit Emacsを選択する。


◇ 11  作成した道具でJavaプログラムを作ってみる。

11.1  emacs をバックグラウンドで実行する。

    $ emacs & 

11.2  hello.javaというプログラムを作ってみる。

 C-x C-f または、メニューのFilesからOpen File... を選択する。
 ミニバッファにFind Fileと表示されるので、次のようにhello.javaを指定する。 Find File: ~/elisp/hello.java  hello.javaバッファが開いたら、モード行の名前がMy Java Modeに変わったことを確か める。 11.3 C-cmでmainメソッドのテンプレートを表示する。    C-cm はControlキイを押しながらcキイを押し、次にmキイを押す。    class { public static void main(String[] args) { } } 11.4 クラス名をhelloにし、整数iを定義する。    class hello { public static void main(String[] args) { int i; } } 11.5 int i;の下にfor文を作る。    int i;の下でC-cfを実行する。 C-cf はControlキイを押しながらcキイを押し、次にfキイを押す。    class hello { public static void main(String[] args) { int i;     C-cf } } }    class hello { public static void main(String[] args) { int i; for (;;) { } } } 11.6 5回繰り返すfor文にする。    class hello { public static void main(String[] args) { int i; for (i = 0; i < 5; i++) { } } } 11.7 for文の中にprintln文を作る。    C-cpを実行する。    class hello { public static void main(String[] args) { int i; for (i = 0; i < 5; i++) {     C-cp } } }    class hello { public static void main(String[] args) { int i; for (i = 0; i < 5; i++) { System.out.println(); } } } 11.8 println文に"hello, world"と書く。    class hello { public static void main(String[] args) { int i; for (i = 0; i < 5; i++) { System.out.println("hello, world"); } } } 11.9 適当に改行や段落をつけて整える。   class hello { public static void main(String[] args) { int i; for (i = 0; i < 5; i++) { System.out.println("hello, world"); } } } 11.10 hello.javaバッファを格納する。   C-x C-s または、メニューのFileからSave(current buffer)を選択する。

◇ 12  ターミナル画面でhello.javaをコンパイルする。
   $ javac hello.java 

◇ 13  hello.classを実行する。

   $ java hello 
  hello, world
  hello, world
  hello, world
  hello, world
  hello, world



言語の目次へ戻る

ホームに戻る