Chapter 08
- zap-to-char
- (interactive "*p\ncZap to char: "
- search-forward
- progn
- kill-region
- VAR
- BODYFORM
- delete-and-extract-region
- [START, END]を削除
- del_range_1とかを呼んでいく
- if (eq this-command 'kill-regoin)
- HANDLERS
- buffer-read-only or text-read-only
- copy-region-as-kill
- kill-new
- kill-ring を直接いじっている
- nthcdr
- conditon-case
- VAR
- BODYFORM
- ERROR HANDLERS
- お試し
- defvar
- special form
- 「*」
- edit-option コマンドで編集できるらしいが・・・。
- interactive
お試し
(search-forward (char-to-string ?x) nil nil 2)
(defun my-zap-to-char (arg char)
""
(interactive "*p\ncZap to char: ")
(kill-region (point)
(progn
(search-forward
(char-to-string char) nil nil arg)
(point))))
(my-zap-to-char 1 ?q)
(condition-case nil "Hello, condition-case!!" nil)
(condition-case
nil
(let ()
(setq buffer-read-only t)
(erase-buffer))
((buffer-read-only)
"Hello, condition-case from an error handler!"))
Exercises
(defun test-search (needle)
"Search forward for NEEDLE from the current point"
(interactive "sString: ")
(if (search-forward needle nil t 1)
(message "Found!")
(message "Not Found")))
(defun third-in-kill-ring ()
"Display the third element in the kill ring, if any."
(interactive)
(if (>= (length kill-ring) 3)
(message "%s" (substring-no-properties (nth 2 kill-ring)))
(message "kill-ring does not have the third element. (Its length is %d)" (length kill-ring))))
(third-in-kill-ring)
(defun n-elem-in-kill-ring (n)
"Display the nth element in kill ring, if any."
(interactive "p")
(if (>= (length kill-ring) n)
(message "%s" (substring-no-properties (nth (1- n) kill-ring)))
(message "kill-ring does not have the %dth element. (Its length is %d)" n (length kill-ring))))
(n-elem-in-kill-ring 10)
(n-elem-in-kill-ring 90)