jops/README.org

35 lines
2 KiB
Org Mode
Raw Normal View History

#+TITLE: Jump to Project Headlines
#+AUTHOR: Howard Abrams
#+DATE: 2024-07-07
#+FILETAGS: emacs hamacs
#+LASTMOD: [2024-11-11 Mon]
An interactive Emacs function, *Jump to Org Project Section* (or JOPS), allows you (in one step) load an Org file from a project and jump to a particular trees heading.
*Note:* Still working on a name for this project. 😏
* Why?
You can use the [[https://github.com/minad/consult][consult project]] to call =consult-imenu= or =org-consult-heading= to jump to a section in an Org file based on a headline. But as projects with a lot of Org files grow (for instance, literate programming projects) one refines, re-organizes and refactors the content moving a sub-tree from one file to another… perhaps loosing track of the move.
Personally, I often forget where I moved a particular section. For instance, in [[https://howardabrams.com/hamacs/][my Emacs configuration]], did I configure /eww/, in this or that file, or did I move it to its own dedicated file? But even if you know where, this function is a nice micro-optimization to the act of loading the file and jumping to the section (often called /sub-trees/ in Org parlance)
* Installation
Until this finds a home on [[https://www.melpa.org][Melpa]], you will need to clone this project, as well as the Magnars [[https://github.com/magnars/s.el][s.el library]] (or grab that from [[https://www.melpa.org/#/s][Melpa]]).
Also, install [[https://github.com/BurntSushi/ripgrep][ripgrep]] (see the [[https://github.com/BurntSushi/ripgrep?tab=readme-ov-file#installation][Installation Guide]] for help getting this on your operating system).
* Usage
Call the interactive function, =jops= as the primary interface.
* Customization
Set the variable, =jops-ripgrep= to the full path of =ripgrep= if you cant adjust the =PATH= environment variable for Emacs (or change the =exec-path=.
Set the =jops-flush-headers= as a regular expression to filter redundant or useless headlines.
# Local Variables:
# jinx-local-words: "eww"
# End:
*