« プログラミングを始めるには(25) | Main | プログラミングを始めるには(27) »

August 23, 2014

プログラミングを始めるには(26)

手っ取り早いプログラミング例として、Emacs上の簡單な編集コマンドを例題とした。これはEmacsの操作に慣れてくれば、それなりに書けるようになるであろう。たとえば、カーソルを下に移動するコマンドは「C-h k」に續けて「C-n」とタイプすると、next-lineのヘルプが表示される。同樣に操作の度にヘルプを參照していれば、ひとまとまりの編集操作をどういうコマンドまたはそれに代わるファンクションを使えば實現出來るか、だいたい分かってくる。

しかし、キーボードマクロで事足りる場合はそれをいちいちプログラムにはしないと思われる。キーボードマクロでは出來ない編集操作、つまり編集する際に都度判斷を要する場合は、プログラムを書く必要がある。前囘やった手順に判斷を入れてみよう。

(1) カーソルをバッファの先頭に移動する。
(2) カーソルを5行下に移動する。
(3) カーソルのある行が「START」を含む場合は、その行をバッファの先頭に移動する。
(4) カーソルのある行が「START」を含まない場合は、その行をバッファの終端に移動する。

(defun edit-new-command-3 ()
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (forward-line 5)
    (let* ((start-p (looking-at ".*START"))
	   (beg (point))
	   (end (progn (forward-line) (point)))
	   (string (buffer-substring-no-properties beg end)))
      (delete-region beg end)
      (if start-p
	  (goto-char (point-min))
	(goto-char (point-max)))
      (insert string))))

判斷を要すると言っても、それほど大きく變わるわけではない。判斷するポイントに來た時に判斷しておいて、あとでその判斷結果を元にその後の處理をすれば良いだけだ。ちなみにプログラムがどう動いているかを見たければ、處理對象のテキストとプログラムを別々のフレームで表示して、edebugを使ってトレースするとテキストのバッファをどうポイントが動き、どうテキストが變更されるかよく分かる。

|

« プログラミングを始めるには(25) | Main | プログラミングを始めるには(27) »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/74224/60196326

Listed below are links to weblogs that reference プログラミングを始めるには(26):

« プログラミングを始めるには(25) | Main | プログラミングを始めるには(27) »