Alle organisatie-subkoppen in imenu?

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.

Maar wat ik liever zou willen, is imenu om de lijst met alle koppen te presenteren en laat ik direct degene selecteren die ik wil bezoeken omdat

  • het zou sneller zijn
  • en hiermee kan worden gesprongen naar een kop met heeft subkoppen

Ik begrijp dat dit niet het geval is (althans standaard) omdat org-bestanden verschillende koppen kunnen hebben die dezelfde naam delen.

Maar in veel situaties hebben de org-titels unieke namen en daarom zou het erg handig zijn.

Hoe kan dit worden gedaan?

1
niet echt antwoord op uw vraag, maar een suggestie voor een eenvoudigere navigatiemogelijkheid. Gebruik roer-org-in-buffer-koppen uit het roer pakket. Hiermee kunt u interactief verfijnen tot de gewenste kop, en het hele hiërarchische pad van de kop wordt gebruikt (wel, het aantal niveaus kan worden geconfigureerd). Dit is voor mij de meest efficiënte manier om naar een kop te springen. Je kunt ook gemakkelijk andere acties configureren naast naar de kop springen (bijvoorbeeld inklokken, opnieuw vullen, etc.)
toegevoegd de auteur Ross, de bron

2 antwoord

In plaats van imenu te gebruiken, kunt u org-goto gebruiken met de volgende instellingen:

(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
toegevoegd

In de hoop dat de onderstaande functie zou helpen

;;; 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
toegevoegd