chipsenkbeil / org-roam.nvim

Port of org-roam to neovim using orgmode
MIT License
95 stars 8 forks source link
neovim-plugin orgmode-nvim

+HTML:

+HTML: org-roam.nvim logo

+HTML:

org-roam.nvim

+HTML:

Port of [[https://www.orgroam.com/][Org-roam]] to [[https://neovim.io/][neovim]] using [[https://github.com/nvim-orgmode/orgmode][nvim-orgmode]].

Requires neovim 0.9.2+.

** Videos

+HTML:

** Installation

This plugin depends on [[https://github.com/nvim-orgmode/orgmode][nvim-orgmode/orgmode]] [[https://github.com/nvim-orgmode/orgmode/releases/tag/0.3.4][0.3.4]] or newer.

It is recommended to install and maintain the latest version of orgmode, or lock into the commit that this plugin needs, which is illustrated below.

| Org Roam Version | Orgmode Version | |------------------+-----------------| | 0.1.0 | 0.3.4 |

*** lazy.nvim (recommended)

#+HTML: <details open>
#+HTML: <summary>Code Example</summary>

#+begin_src lua
{
  "chipsenkbeil/org-roam.nvim",
  tag = "0.1.0",
  dependencies = {
    {
      "nvim-orgmode/orgmode",
      tag = "0.3.4",
    },
  },
  config = function()
    require("org-roam").setup({
      directory = "~/org_roam_files",
      -- optional
      org_files = {
        "~/another_org_dir",
        "~/some/folder/*.org",
        "~/a/single/org_file.org",
      }
    })
  end
}
#+end_src

#+HTML: </details>

*** packer.nvim

#+HTML: <details>
#+HTML: <summary>Code Example</summary>

#+begin_src lua
use {
  "chipsenkbeil/org-roam.nvim",
  tag = "0.1.0",
  requires = {
    {
      "nvim-orgmode/orgmode",
      tag = "0.3.4",
    },
  },
  config = function()
    require("org-roam").setup({
      directory = "~/orgfiles",
    })
  end
}
#+end_src

#+HTML: </details>

** Bindings

| Name | Keybinding | Description | |--------------------------+---------------+---------------------------------------------------------------------------| | add_alias | =naa= | Adds an alias to the node under cursor. | | add_origin | =noa= | Adds an origin to the node under cursor. | | capture | =nc= | Opens org-roam capture window. | | complete_at_point | =n.= | Completes the node under cursor. | | find_node | =nf= | Finds node and moves to it, creating it if it does not exist. | | goto_next_node | =nn= | Goes to the next node in sequence (via origin) for the node under cursor. | | goto_prev_node | =np= | Goes to the prev node in sequence (via origin) for the node under cursor. | | insert_node | =ni= | Inserts node at cursor position, creating it if it does not exist. | | insert_node_immediate | =nm= | Same as =insert_node=, but skips opening capture buffer. | | quickfix_backlinks | =nq= | Opens the quickfix menu for backlinks to the current node under cursor. | | remove_alias | =nar= | Removes an alias from the node under cursor. | | remove_origin | =nor= | Removes the origin from the node under cursor. | | toggle_roam_buffer | =nl= | Toggles the org-roam node-view buffer for the node under cursor. | | toggle_roam_buffer_fixed | =nb= | Toggles a fixed org-roam node-view buffer for a selected node. |

*** Dailies Extension

| Name              | Keybinding    | Description                                     |
|-------------------+---------------+-------------------------------------------------|
| capture_date      | =<Leader>ndD= | Capture a specific date's note.                 |
| capture_today     | =<Leader>ndN= | Capture today's note.                           |
| capture_tomorrow  | =<Leader>ndT= | Capture tomorrow's note.                        |
| capture_yesterday | =<Leader>ndY= | Capture yesterday's note.                       |
| find_directory    | =<Leader>nd.= | Navigate to dailies note directory.             |
| goto_date         | =<Leader>ndd= | Navigate to specific date's note.               |
| goto_next_date    | =<Leader>ndf= | Navigate to the next note in date sequence.     |
| goto_prev_date    | =<Leader>ndb= | Navigate to the previous note in date sequence. |
| goto_today        | =<Leader>ndn= | Navigate to today's note.                       |
| goto_tomorrow     | =<Leader>ndt= | Navigate to tomorrow's note.                    |
| goto_yesterday    | =<Leader>ndy= | Navigate to yesterday's note.                   |

** Documentation

See [[file:DOCS.org][DOCS.org]] for detailed guidance on the plugin.

The documentation is also generated in vimdoc help format, which can be accessed via =:h org-roam.txt=.

** Roadmap

A collection of features to implement in no particular order.

** Developer & Contributor Instructions

*** Running tests

A /makefile/ is provided to support running tests. It will download [[https://github.com/nvim-lua/plenary.nvim][plenary.nvim]]
and [[https://github.com/nvim-orgmode/orgmode][nvim-orgmode]] into the /vendor/ directory.

#+begin_src bash
make test
#+end_src