行を挿入する時にDrawerを避けたい Emacs Evil
Evilで行を挿入する時は、Normal Stateで o を押下して、次の行からInsert Stateが始まるのだが、 Headingにいる時にProperties Drowerを飛ばして欲しい時がある。
具体的には次のような場合、カーソル ⏐
の位置で次の行を挿入すると、
新しい行はHeadingのすぐ次に挿入される。
* Awesome heading⏐ :PROPERTIES: :CUSTOM_ID: hoge :END:
↓ o で行を挿入するとPropertiesの位置を動かしてしまう。
* Awesome heading ⏐ :PROPERTIES: :CUSTOM_ID: hoge :END:
コンテンツを編集する時には、実際には :END:
の次の行に挿入しなければならない。
うっかりPropertiesの前に挿入してしまったら、Propertiesが無効になってしまうので事故る。
advice
して解決することにした。
(defun my/evil-move-to-end-of-drawer () (when (org-at-heading-p) (org-end-of-meta-data) ; drawerの最後まで移動する (goto-char (- (point) 1)))) ; 行きすぎるので戻る。次のHeadingまで行ってしまうことがある。 (defun my/advice-evil-open-below-at-heading (old-func count) (my/evil-move-to-end-of-drawer) (funcall old-func count)) (advice-add #'evil-open-below :around #'my/advice-evil-open-below-at-heading)