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 件のコメント:
コメントを投稿