режим орг Перейти к последнему заголовку?

10

Режим орг. Перейти к последнему заголовку в текущем дереве.

Скажите, это мой org-файл, pipe указывает на курсор:

* Top|
** Apple
** Banana
** Cherry
* Middle
** Ape
** Bear
** Cat

Я хотел бы запустить команду и теперь мой курсор будет здесь:

* Top|
** Apple
** Banana
** Cherry|
* Middle
** Ape
** Bear
** Cat
Алекс Бараноский
источник
2
Последний заголовок в файле или текущее дерево?
Завиор
@Zavior Хороший вопрос. Я уточнил оригинальный вопрос.
Алекс Бараноски

Ответы:

9

На самом деле есть org-end-of-subtreeфункция, но она не интерактивная. Вы можете просто определить свою собственную команду:

(defun goto-last-heading ()
  (interactive)
  (org-end-of-subtree))
MonsieurBanana
источник
5

Вот команда, основанная на ответе @ itsjeyd, которая устойчива к краевому регистру, указанному в комментарии к этому ответу (то есть, когда вы находитесь на последнем заголовке / поддереве):

(defun org-end-of-subtree ()
  (interactive)
  (let ((org-special-ctrl-a/e t))
    (if (condition-case nil
            (outline-forward-same-level 1)
          (error t))
        (progn
          (goto-char (point-max))
          (outline-back-to-heading))
      (outline-previous-visible-heading 1))
    (org-end-of-line 1)))
Дэн
источник
4

Я не думаю, что есть встроенная команда для этого, но вы можете легко определить ее самостоятельно:

(defun org-goto-last-heading-in-tree ()
  (interactive)
  (org-forward-heading-same-level 1)     ; 1. Move to next tree
  (outline-previous-visible-heading 1)   ; 2. Move to last heading in previous tree
  (let ((org-special-ctrl-a/e t))        ; 3. Ignore tags when
    (org-end-of-line)))                  ;    moving to the end of the line

И свяжите это с последовательностью клавиш по вашему выбору через:

(define-key org-mode-map (kbd "C-c g") 'org-goto-last-heading)
itsjeyd
источник
Это хорошо, спасибо, что поделились, но, возможно, мне нужно быть более ясным в моем вопросе. Что я действительно хочу, так это перейти к концу текущего дерева ...
Алекс Бараноски
@AlexBaranosky Да, это не было ясно из того, как вы изначально сформулировали вопрос. Дайте мне секунду, чтобы настроить код ...
itsjeyd
@ AlexBaranosky Хорошо, это должно сделать это. Спасибо за разъяснение ваших требований!
itjeyd
Я бы предложил не использовать C-c lпривязку. Это режим org, предлагаемый для привязки, org-store-linkпоскольку он очень тесно связан с org-insert-link( C-c C-l).
Каушал Моди
@kaushalmodi Да, спасибо. Я поправил свой ответ.
itjeyd