Emacs lisp で、自分なり?に機能を追加してみた、二つ目。 今回は、’org-mode’ のリストで、 ‘checkbox’ をトグル(チェックのオンオフではない)させようとしたもの。
org-mode のチェックボックス付き箇条書きは、たまに、使ってたりしている。 箇条書きにチェックボックスを使う方法は、マニュアルにはあるが、やはり日本語でまとめられているサイトが有り難い。例えば、
とか、感謝だ。
でも、見付けられなかったのが、チェックボックス自体を付与/削除する方法。 私のように右往左往する者にはあると嬉しいのではと思うのだが。 新項目追加なら、’S-M-ret’ (org-insert-todo-heading)、 チェックのトグルなら ’C-c C-c’ なのに。
なので、今回挑戦してみた。いつもように、いろんなトコからのコピペ、修正。 なのに、多大な時間がかかってしまった。 もっと、検索に時間をさけばよかったかも。
今回の作業では、’cond’ というのが印象的だったかな。
で、現状、以下。
(defun my-org-toggle-list-checkbox ()
"Toggle checkbox in org-mode(experimental)."
(interactive)
(setq current-line-str
(buffer-substring-no-properties
(line-beginning-position)
(line-end-position))
)
(cond ((string-match "^[-+] \\[.\\] " current-line-str)
(replace-regexp "\\[.\\] " "" nil
(line-beginning-position)
(line-end-position)
)
)
((string-match "^[-+] " current-line-str)
(replace-regexp "^[-+] " "- [ ] " nil
(line-beginning-position)
(line-end-position)
)
)
(t
(beginning-of-line)
(insert "- [ ] ")
)
)
)
空白の処理とかを追加できたら、とか思うが、 きっと、スマートで、ちゃんとした奴が既にあるだろうから、また時間をみて探してみよう。
まあ、なんとか動いているようなので、とりあえず良しかも。




