alphapapa / org-now

Conveniently show current Org tasks in a sidebar window
60 stars 3 forks source link

+TITLE: org-now

+PROPERTY: LOGGING nil

This package provides commands to conveniently show Org headings in a sidebar window while you're working on them. A heading in one of your Org files is defined as the "now" heading, and other headings are refiled to it with one command, and back to their original location with another.

The sidebar window is an indirect buffer created with =org-tree-to-indirect-buffer=, so you can work in it as you would a normal buffer. Being a special Emacs side window, it's persistent, resisting being closed by accident by window management commands.

Note that this package adds Org UUIDs to entries in property drawers when they are refiled, to ensure they are tracked properly while they're being moved.

There's nothing special about the appearance of this package's functionality. But here are two example screenshots.

By default, the sidebar's outline is shown at level 2, so the "now" heading should be a top-level heading: [[images/screenshot1.png]]

The sidebar is just an Org buffer, so you can expand it, type into it, etc: [[images/screenshot2.png]]

Install these required packages:

Then put =org-now.el= in your ~load-path~, and put this in your init file:

+BEGIN_SRC elisp

(require 'org-now)

+END_SRC

Here's a configuration with mnemonic keybindings that you may find convenient, using [[https://github.com/jwiegley/use-package][use-package]] and [[https://github.com/noctuid/general.el][general]]:

+BEGIN_SRC elisp

(use-package org-now :general (:keymaps 'org-mode-map :prefix "M-SPC" "rl" #'org-now-link "rn" #'org-now-refile-to-now "rp" #'org-now-refile-to-previous-location))

+END_SRC

** COMMENT MELPA

Not on MELPA yet.

If you installed from MELPA, you're done.

When using ~org-now~ for the first time, you'll be prompted to configure the =org-now-location= setting to point to a place in one of your Org files where you want to temporarily refile "now" tasks.

** Commands

Refiling commands: These commands are usable in regular Org buffers.

Agenda commands: These commands are usable in Org Agenda buffers.

They're also usable as Agenda "bulk" commands on marked entries. You can configure them like this:

+BEGIN_SRC elisp

(setf org-agenda-bulk-custom-functions '((?n org-now-agenda-refile-to-now) (?P org-now-agenda-refile-to-previous-location)))

+END_SRC

Functions:

** Hook examples

The ~org-now-hook~ option can be used to run user-defined functions after the =org-now= buffer is created. Here are two examples you might find useful.

+BEGIN_SRC elisp

(lambda () (setq mode-line-format nil))

+END_SRC

+BEGIN_SRC elisp

(lambda () (face-remap-add-relative 'org-level-1 '(:height 100)))

+END_SRC

Bug reports, feature requests, suggestions — /oh my/!

GPLv3

Local Variables:

org-export-with-properties: ()

org-export-with-title: t

End: