An Introduction to Programming in Emacs Lisp Chapter 10

どうもどうも。
風邪気味状態が続いていて,これはついに!!
とか思っている今日この頃です。
あと,ぶっちゃけ,transient-mark-mode をオンにしておいたほうが,
便利じゃね? とか思ってます。本当に,プロはオフにしているでしょうか?

Chapter 10

  • kill-ring
  • kill-ring-yank-pointer
  • 実はどっちもポインタ


kill-ring-max の値って,みんなは,どのくらいに設定しているのだろうか。
コンクリートジャングル東京に住んでいて,
人との接触がないので,わからんのら〜。
というか,基本引きこもりだからね。ま,それは置いといて。

Exercise

;;; Exercise 10.3
;; kill-ring-yank-pointer が指す最初の n 個の要素を返す。
;; 最後に reverse を使わなくてもいい方法を,
;; 思いつけなかったオレっていったい・・・。
(defun n-elem-in-kill-ring-yank-pointer (n)
  "Display the first n element[s] in kill-ring."
  (interactive "p")
  (let ((ret '()) (l kill-ring-yank-pointer))
    (while (> n 0)
      (setq ret (cons (substring-no-properties (car l)) ret))
      (setq l (cdr l) n (1- n)))
    (reverse ret)))

;; たぶん,kill-new とかを直接呼ぶのはあまりよろしくない気がするので,
;; 遊びの場合に限っておいた方がよろしい気がする。
(progn
  (kill-new "third")
  (kill-new "second")
  (kill-new "first")
  (message "%s "(n-elem-in-kill-ring-yank-pointer 3))
  (rotate-yank-pointer 1)
  (message "%s" (n-elem-in-kill-ring-yank-pointer 3)))
;; *Message* バッファに,(first second third), (second third なんか)
;; と表示される。