«前の日記(2008-10-22) 最新 次の日記(2008-10-31)» 編集

ソフトウェアと本の覚え書き

2005|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|

2008-10-25 [長年日記]

_ [Emacs] anything-c-source-mark-ring

Emacs で C-u C-SPC とすると mark-ring に保存されているポイントに移動できるのだが、このポイントを anything から選択できれば使いやすいと思い、anything-c-source-mark-ring を作ってみた。

(defvar anything-c-source-mark-ring
  '((name . "mark-ring")
    (candidates . anything-c-source-mark-ring-init)
  (action . (("Goto line" . (lambda (candidate)
			      (goto-line (string-to-number candidate))))))
  ))
(defun anything-c-source-mark-ring-init ()
  (with-current-buffer anything-current-buffer
    (let ((lines (mapcar (lambda (pos)
			   (save-excursion
			     (goto-char pos)
			     (let ((str (thing-at-point 'line)))
			       (format "%7d: %s" (current-line) (if (string-match ".*" str)
									 (match-string 0 str))))
			     ))
			 mark-ring)))
      (sort lines 'string<)
      )))

それにしても Emacs のカスタマイズをする人は Emacs Lisp の関数やイディオムの情報をどこで得たのだろうか。anything-c-source-mark-ring はインターネットの検索と anything-c-source-bm を参考にして何とか作ることができたのだが、全然、Emacs Lisp が使えるようになった気がしない。

[追記] 使ってみると変な動きをしていた。マークがセットされている行数がなぜかおかしくなる。そもそもEmacs Lisp のデバッグの仕方が分からないのが致命的。

本日のツッコミ(全2件) [ツッコミを入れる]
_ (2008-10-30 14:18)

お疲れ様でした。

_ 管理人 (2008-10-31 11:18)

いつもお世話になっています。ここに書き込んでも反応は乏しいですよ。