İmenu'daki tüm org alt pozisyonları?

imenu can be used in org-mode to quickly jump to a heading. It first prompts for the 1st level heading, and then asks for the 2nd level heading and so on untill the selected heading has no subheading and we are then taken to that last selected heading.

Ama benim tercih ettiğim şey tüm başlıkların listesini sunmak için imenu ve ben de gitmek istediğim birini seçmeme izin vermesi.

  • daha hızlı olurdu
  • ve sahip olduğu alt başlıklara
  • bir başlık atlamak için izin verir

Durumun böyle olmadığını (en azından varsayılan olarak) anlıyorum çünkü org dosyalarının aynı adı paylaşan birkaç başlığı olabilir.

Ancak birçok durumda, org başlıklarının benzersiz isimleri vardır ve bu nedenle çok rahat olacaktır.

Bu nasıl yapılabilir ?

1
sorunuzu gerçekten yanıtlamıyor, ancak daha kolay bir gezinme seçeneği için bir öneri. Helm paketinden dümen-org-tampon-başlıkları kullanın. İstenen başlık ile etkileşimli olarak daraltmanızı sağlar ve başlığın tüm hiyerarşi yolu kullanılır (iyi, seviye sayısı yapılandırılabilir). Bu benim için bir başlığa atlamanın en etkili yoludur. Ayrıca, başlığa atlamanın yanı sıra diğer eylemleri de kolayca yapılandırabilirsiniz (örneğin, saatin açılması, yeniden işlenmesi vb.)
katma yazar Ross, kaynak

2 cevap

imenu kullanmak yerine org-goto 'yu kullanabilirsiniz. ayarları:

(setq org-goto-interface 'outline-path-completionp)
(setq org-outline-path-complete-in-steps nil)

,----[ C-h v org-goto-interface RET ]
| org-goto-interface is a variable defined in ‘org.el’.
| Its value is ‘outline-path-completionp’
| Original value was outline
|
| Documentation:
| The default interface to be used for ‘org-goto’.
| Allowed values are:
| outline                  The interface shows an outline of the relevant file
|                          and the correct heading is found by moving through
|                          the outline or by searching with incremental search.
| outline-path-completion  Headlines in the current buffer are offered via
|                          completion.  This is the interface also used by
|                          the refile command.
|
| You can customize this variable.
|
| [back]
`----

,----[ C-h v org-outline-path-complete-in-steps RET ]
| org-outline-path-complete-in-steps is a variable defined in ‘org.el’.
| Its value is nil
| Original value was t
|
| Documentation:
| Non-nil means complete the outline path in hierarchical steps.
| When Org-mode uses the refile interface to select an outline path
| (see variable ‘org-refile-use-outline-path’), the completion of
| the path can be done in a single go, or it can be done in steps down
| the headline hierarchy.  Going in steps is probably the best if you
| do not use a special completion package like ‘ido’ or ‘icicles’.
| However, when using these packages, going in one step can be very
| fast, while still showing the whole path to the entry.
|
| You can customize this variable.
|
| [back]
`----
3
katma

Aşağıdaki işlevi umuyor yardımcı olacaktır

;;; add func to perform imenu for all headings at one level
(defun org-imenu-get-heading ()
  "Produce the index for Imenu."
  (mapc (lambda (x) (move-marker x nil)) org-imenu-markers)
  (setq org-imenu-markers nil)
  (let* ((n org-imenu-depth)
         (re (concat "^" (org-get-limited-outline-regexp)))
         (subs (make-vector (1+ n) nil))
         m level head0 head)
    (save-excursion
      (save-restriction
        (widen)
        (goto-char (point-max))
        (while (re-search-backward re nil t)
          (setq level (org-reduced-level (funcall outline-level)))
          (when (and (<= level n)
                     (looking-at org-complex-heading-regexp)
                     (setq head0 (org-match-string-no-properties 4)))
            (setq head (org-link-display-format head0)
                  m (org-imenu-new-marker))
            (org-add-props head nil 'org-imenu-marker m 'org-imenu t)
            (push (cons head m) (aref subs 1))))))
    (aref subs 1)))

(advice-add #'org-imenu-get-tree :override #'org-imenu-get-heading)
1
katma