Wouldn’t you like to have your own minimal concept-mapping system in emacs? I would!

The Premise

I am a huge fan of Org Mode. My ramblings about it in my Spacemacs posts are testimonial to this fact. Do have a read through them if you haven’t already.

Org Mode centralizes notes as its “first-class citizen” (so to speak). Hence, all functionality in org mode is built on top of notes. For example, org mode headlines can be made into TODOs and have a clock attached to them, or have a deadline attached to them or have tags associated to them and so on. This is all good when you want to brain-storm on a project idea and list out resources and tasks pertinent to that project. To this end org mode works perfectly and seamlessly. But after a certain point integrating all your ideas together into a cohesive unit that you can reference easily and navigate around is not possible in a linear outline fashion that org mode provides you with. You need a way to visualize a map of all objects of importance to you clearly.

The Principle

The basic idea is to be able to create relations between the items in your head in a hierarchial manner. Hence, there is a parent-child relation made between the objects under consideration. In an outline (like the one org mode provides us with) each object can have only one parent, that is, every sub-heading can comme under only a single heading. It turns out you can fix this issue.

In org mode you can assign IDs and properties to headings. Thus you can link a sub-heading to two or more headings using this ID (which can be unique to all the orgfiles you have). You can create this id using the following syntax

* Heading
:PROPERTIES:
:ID: <your-custom-id>
:END:


You can generate this custom id using M-x org-id-get-create.

Now you can store the link using C-c l and link it around your orgfiles.

But in this system you will still be viewing your ideas in a linear structure like an outline even though you have created a non-linear relation. This is where org-brain comes in.

The Payoff

The package org-brain written by Erik Sjöstrand or Kungsgeten is what comes in handy here. If you are using emacs just install it from elpa with M-x package-install org-brain RET and see the official repository for additional details regarding config and init (with use-package).

If you want to use use-package (you should), put the following in your ~/.emacs file

(use-package org-brain
:ensure t
:init
(setq org-brain-path "/path/to/brain/folder")
:config
(setq org-id-track-globally t)
(setq org-id-locations-file "~/.emacs.d/.org-id-locations"))


Now you can get started with org-brain and setup your own brain. Again look through the official repository for help.

Note:

If you want to use the default keybindings that the official package proides, make sure your editing style is emacs. Else, add the following to the :init section

(with-eval-after-load 'evil
(evil-set-initial-state 'org-brain-visualize-mode 'emacs))


If you want see and use my setup for org-brain and run through my tutorial head over to my repository org-brain-layer (EDIT deprecated) for more help. Until next time

Moriturus te Saluto!