GitHub - thread314/org-navigator: A package for programmatically creating jump s...
source link: https://github.com/thread314/org-navigator
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Org-Navigator: Programmable, Composable Shortcuts For Org-Refile
Description
I use org-refile to navigate and file things all the time. While it is functional, I have long craved something a little more flexible.
So I’ve written a package that allows you to programmatically set composable shortcuts for org-refile.
The user sets prefix keys that determine the action they want to take, combining these with destination suffix key(s) that determine the target subtree for the action.
The user sets a prefix key for each of the following actions:
org-navigator-file-to-prefix
will refile the current subheading to the target subtree.org-navigator-go-to-prefix
will move point to the target subtree.org-navigator-open-and-narrow-prefix
will move point to the target subtree and narrow the buffer.org-navigator-open-in-indirect-prefix
will move point to the target subtree and open it in an indirect buffer.org-navigator-clock-in-prefix
will clock into the target subtree and return to current point.
You can set the destination suffix key manually in their config (with org-navigator-composable-set-key
) or automatically by properties with org-navigator-set-all
.
Examples
Assuming you have set the suffix key for the subtree “Haggis Recipes” to “h” and you are using the default bindings below, you can:
- Type
C-c fh
to file the current subtree to “Haggis Recipes” (instead ofC-c C-w Haggis Recipes RET
). - Type
C-c ih
to go to “Haggis Recipes” and open it in an indirect buffer (instead ofC-u C-c C-w Haggis Recipes RET C- C-x b
).
Setting destination suffix keys from inside org-mode
Destination suffix key can be set manually in your config file (with org-navigator-composable-set-key
).
Optionally, these can also be configured by setting the ORG-NAV-KEY
property in the subtree itself (as in this subtree).
Running org-navigator-set-all
will
- Iterate through all
org-agenda-files
- For any subtrees where
ORG-NAV-KEY
is set will write a function toorg-navigator-config-file
to set the appropriate shortcuts. - Evaluate
org-navigator-config-file
.
This allows the user to view and set destination suffixes without leaving org-mode.
Note: if your agenda files are long, org-navigator-set-all
could take some time. It is recommended to run this manually as needed, rather than as part of your config.
Including org-navigator-load-auto-config
in your config will just evaluate the existing org-navigator-config-file
, rather than reconstructing it from scratch. org-navigator-set-all
can be run manually when changes are made to ORG-NAV-KEY
properties.
Installation
- Clone into a folder of your choice (~/.emacs.d/git for example).
- With use-package, you can configure it like this:
(use-package org-navigator :load-path "git/org-navigator"
:config
(setq org-navigator-key-map org-mode-map
org-navigator-fold-first t
org-navigator-set-view t
org-navigator-all-shortcuts '()
org-navigator-duplicates '()
org-navigator-config-file "~/.emacs.d/git/org-navigator/shortcut-definitions.el"
org-navigator-file-to-prefix "C-c f"
org-navigator-go-to-prefix "C-c g"
org-navigator-open-and-narrow-prefix "C-c n"
org-navigator-open-in-indirect-prefix "C-c i"
org-navigator-clock-in-prefix "C-c c"))
- You can make this work well with evil and the leader key by setting
org-navigator-key-map
toevil-normal-state-map
. - Destination suffix keys can be made of multiple keys.
- Works with modifiers (alt, shift, control, super).
org-navigator-set-view
is a simple function to move the point to the first line and view direct children after jumping to a new heading. This can be disabled by settingorg-navigator-set-view
to nil.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK