2019年11月22日金曜日

Emacs lisp で自分なりに作ってみた、二つ目。

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

コメントを投稿

Emacs の lsp の設定、なう(202310)

前回さらしてから、さらに1年。そう、3年めになる。 が、今回は一段と自信がない。 環境は、 Debian GNU/Linux 12 (bookworm) + emacs(29.1)。consult + company。 embark は未だに使ってない。 用途は、メモ と ...