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 "- [ ] ") ) ) )
空白の処理とかを追加できたら、とか思うが、 きっと、スマートで、ちゃんとした奴が既にあるだろうから、また時間をみて探してみよう。
まあ、なんとか動いているようなので、とりあえず良しかも。
0 件のコメント:
コメントを投稿