[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:03648] Re: 小ネタ還元



Hiroshi Saito <HiroshiSaito@xxxxxxx> さん、こんにちは。masahito です。

|;; M-x で ラインをコピー
|(defun copy-line ()
|  (interactive)
|  (save-excursion
|    (setq b (point))  <---
|    (goto-eol)
|    (setq e (point))  <---
|    (copy-region-as-kill b e)
|    (message "line copied")    
|  ))

これだとbとeが大域変数になっちゃうので、
(defun copy-line ()
  (interactive)
  (let ((b nil)     ;; 局所変数を定義してやる
        (e nil))
    (save-excursion
      (setq b (point))
      (goto-eol)
      (setq e (point))
      (copy-region-as-kill b e)
      (message "line copied")    
    )))

とか、lispディレクトリの下を見ると亀井さんがよくやっているのが

(buffer-substring (progn (goto-bol) (point))
                  (progn (goto-eol) (point)))
みたいなパターン
(copy-region-as-kill (progn (goto-bol) (point))
                     (progn (goto-eol) (point)))
                     ↑
          ここらへんにsave-excursion入れてるパターンも
          あります。

慣れないと読みにくいですけどね^^;
私も最初のころは上の let と setq のパターンが好きでした。
------------------------------------------------------------
逸見雅人    Masahito Henmi  henmi@xxxxxxxxxxxxx
♪あなたの願いも仕事もうまくいきますように・・・

Index Home