Convert Figma logo to code with AI

nvim-orgmode logoorgmode

Orgmode clone written in Lua for Neovim 0.10.3+.

3,387
161
3,387
110

Top Related Projects

6,846

Modernity meets insane extensibility. The future of organizing your life in Neovim.

3,327

Orgmode clone written in Lua for Neovim 0.10.0+.

Text outlining and task management for Vim based on Emacs' Org-Mode

Quick Overview

nvim-orgmode/orgmode is a Neovim plugin that brings Org mode functionality to Neovim. It aims to provide a comprehensive set of features for note-taking, task management, and document organization, similar to Emacs' Org mode, but tailored for Neovim users.

Pros

  • Native Neovim integration, leveraging Lua for better performance and extensibility
  • Supports core Org mode features like TODO lists, timestamps, and agenda views
  • Provides syntax highlighting and folding for Org files
  • Actively maintained and regularly updated

Cons

  • May not have full feature parity with Emacs' Org mode
  • Learning curve for users unfamiliar with Org mode concepts
  • Potential performance issues with very large Org files
  • Limited ecosystem compared to Emacs' Org mode

Code Examples

  1. Basic TODO item creation:
require('orgmode').setup{}
vim.api.nvim_set_keymap('n', '<leader>ot', ':lua require("orgmode").action("capture.prompt")<CR>', {noremap = true, silent = true})

This code sets up the orgmode plugin and creates a keybinding to open the capture prompt for quick TODO creation.

  1. Configuring custom TODO keywords:
require('orgmode').setup({
  org_todo_keywords = {'TODO', 'NEXT', 'WAITING', '|', 'DONE', 'CANCELLED'},
  org_todo_keyword_faces = {
    WAITING = ':foreground blue :weight bold',
    CANCELLED = ':foreground red :weight bold',
  },
})

This example customizes the TODO keywords and their appearance in Org files.

  1. Setting up agenda files:
require('orgmode').setup({
  org_agenda_files = {'~/orgfiles/*', '~/my-orgs/**/*'},
  org_default_notes_file = '~/orgfiles/refile.org',
})

This code configures the directories for agenda files and sets a default file for quick notes.

Getting Started

To get started with nvim-orgmode/orgmode:

  1. Install the plugin using your preferred package manager (e.g., packer.nvim):
use {'nvim-orgmode/orgmode', config = function()
  require('orgmode').setup{}
end}
  1. Add basic configuration to your Neovim config file:
require('orgmode').setup({
  org_agenda_files = {'~/orgfiles/**/*'},
  org_default_notes_file = '~/orgfiles/refile.org',
})
  1. Open a file with a .org extension to start using Org mode features in Neovim.

Competitor Comparisons

6,846

Modernity meets insane extensibility. The future of organizing your life in Neovim.

Pros of Neorg

  • Built from the ground up for Neovim, offering better integration and performance
  • More extensible architecture with a modular design
  • Supports advanced features like GTD workflows and custom parsers

Cons of Neorg

  • Steeper learning curve due to its unique syntax and concepts
  • Smaller community and ecosystem compared to Orgmode
  • Less mature and potentially less stable than Orgmode

Code Comparison

Orgmode syntax:

* TODO Buy groceries
SCHEDULED: <2023-05-15 Mon>
- [ ] Milk
- [ ] Eggs
- [ ] Bread

Neorg syntax:

* TODO Buy groceries
  - Milk
  - Eggs
  - Bread
@scheduled 2023-05-15

Both Orgmode and Neorg are powerful note-taking and organization tools for Neovim. Orgmode is more established and closely follows the original Emacs Org mode, making it familiar to existing Org mode users. Neorg, on the other hand, offers a fresh approach tailored specifically for Neovim, with potential for more advanced features and better performance. The choice between the two depends on your familiarity with Org mode, desired features, and willingness to learn a new system.

3,327

Orgmode clone written in Lua for Neovim 0.10.0+.

Pros of orgmode

  • More comprehensive and feature-rich implementation of Org mode for Neovim
  • Active development with frequent updates and bug fixes
  • Larger community and more extensive documentation

Cons of orgmode

  • Potentially higher resource usage due to more features
  • Steeper learning curve for new users
  • May have more dependencies and setup requirements

Code Comparison

orgmode:

require('orgmode').setup({
  org_agenda_files = {'~/Dropbox/org/*', '~/my-orgs/**/*'},
  org_default_notes_file = '~/Dropbox/org/refile.org',
})

orgmode>:

require('orgmode').setup()

The orgmode repository offers more configuration options out of the box, allowing for greater customization. The orgmode> repository provides a simpler setup process, which may be preferable for users who want a more streamlined experience.

Both repositories aim to bring Org mode functionality to Neovim, but orgmode appears to be the more mature and feature-complete option. However, orgmode> might be a good choice for users who prefer a lighter-weight implementation or are just getting started with Org mode in Neovim.

Text outlining and task management for Vim based on Emacs' Org-Mode

Pros of vim-orgmode

  • More mature and stable, with a longer development history
  • Supports Vim in addition to Neovim, offering broader compatibility
  • Has a larger user base, potentially leading to more community support and resources

Cons of vim-orgmode

  • Less actively maintained, with fewer recent updates
  • May lack some modern features and optimizations found in orgmode
  • Written in Vimscript, which can be slower than Lua-based alternatives

Code Comparison

vim-orgmode:

" Enable vim-orgmode
let g:org_agenda_files = ['~/org/index.org']
let g:org_todo_keywords = ['TODO', 'NEXT', '|', 'DONE']

orgmode:

require('orgmode').setup_ts_grammar()
require('orgmode').setup({
  org_agenda_files = {'~/org/*'},
  org_default_notes_file = '~/org/refile.org',
})

Summary

While vim-orgmode offers broader compatibility and a more established user base, orgmode provides a modern, Lua-based alternative specifically designed for Neovim. The choice between the two depends on factors such as your preferred editor, desired features, and willingness to adopt newer technologies.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

#+HTML:

#+HTML: A blend of the Neovim (shape) and Org-mode (colours) logos

  • nvim-orgmode

#+HTML:License #+HTML:Kofi #+HTML:Chat

Orgmode clone written in Lua for Neovim

[[#installation][Installation]] • [[#docs][Docs]] • [[#showcase][Showcase]] • [[file:./docs/troubleshoot.org][Troubleshoot]] • [[#plugins][Plugins]] • [[file:./docs/contributing.org][Contributing]] • [[#thanks-to][Kudos]]

#+HTML:

** Quickstart

*** Requirements

  • Neovim 0.10.0 or later

*** Installation :PROPERTIES: :CUSTOM_ID: installation :END:

Use your favourite package manager. We recommend [[https://github.com/folke/lazy.nvim][lazy.nvim]]: #+BEGIN_SRC lua { 'nvim-orgmode/orgmode', event = 'VeryLazy', ft = { 'org' }, config = function() -- Setup orgmode require('orgmode').setup({ org_agenda_files = '/orgfiles/**/*', org_default_notes_file = '/orgfiles/refile.org', })

-- NOTE: If you are using nvim-treesitter with ~ensure_installed = "all"~ option
-- add ~org~ to ignore_install
-- require('nvim-treesitter.configs').setup({
--   ensure_installed = 'all',
--   ignore_install = { 'org' },
-- })

end, } #+END_SRC

For more installation options see [[file:./docs/installation.org][Installation]] page.

*** Docs :PROPERTIES: :CUSTOM_ID: docs :END:

Online docs is available at [[https://nvim-orgmode.github.io]].

To view docs in orgmode format in Neovim, run =:Org help=.

Vim help docs is available at =:help orgmode.txt= *** Usage

  • Open agenda prompt: =oa=
  • Open capture prompt: =oc=
  • In any orgmode buffer press =g?= for help

If you are new to Orgmode, see [[file:./docs/index.org#getting-started][Getting started]] section in the Docs.

** Showcase :PROPERTIES: :CUSTOM_ID: showcase :END:

*** Agenda

#+CAPTION: agenda #+NAME: agenda [[https://user-images.githubusercontent.com/1782860/123549968-8521f600-d76b-11eb-9a93-02bad08b37ce.gif]]

*** Org file

#+CAPTION: orgfile #+NAME: orgfile [[https://user-images.githubusercontent.com/1782860/123549982-90752180-d76b-11eb-8828-9edf9f76af08.gif]]

*** Capturing and refiling

#+CAPTION: capture #+NAME: capture [[https://user-images.githubusercontent.com/1782860/123549993-9a972000-d76b-11eb-814b-b348a93df08a.gif]]

*** Autocompletion

#+CAPTION: autocomplete #+NAME: autocomplete [[https://user-images.githubusercontent.com/1782860/123550227-e8605800-d76c-11eb-96f6-c0a677d562d4.gif]]

** Features

*** TL;DR

  • Agenda view
  • Search by tags/keyword
  • Clocking time
  • Repeatable dates, date and time ranges
  • Capturing to default notes file/destination
  • Archiving (archive file or ARCHIVE tag)
  • Exporting (via emacs, pandoc and custom export options)
  • Notifications (experimental, see issue [[https://github.com/nvim-orgmode/orgmode/issues/49][#49]])
  • Calendar popup for easier navigation and date updates
  • Various org file mappings:
    • Promote/Demote
    • Change TODO state
    • Change dates
    • Insert/Move/Refile headlines
    • Change tags
    • Toggle checkbox state
  • Remote editing from agenda view
  • Repeatable mapping via [[https://github.com/tpope/vim-repeat][vim-repeat]]

*** Detailed breakdown

  • Agenda prompt:
    • Agenda view (=a=):
      • Ability to show daily(=vd=)/weekly(=vw=)/monthly(=vm=)/yearly(=vy=) agenda
      • Support for various date settings:
        • DEADLINE: Warning settings - example: <2021-06-11 Fri 11:00 -1d>
        • SCHEDULED: Delay setting - example: <2021-06-11 Fri 11:00 -2d>
        • All dates - Repeater settings:
          • Cumulate type: <2021-06-11 Fri 11:00 +1w>
          • Catch-up type: <2021-06-11 Fri 11:00 ++1w>
          • Restart type: <2021-06-11 Fri 11:00 .+1w>
        • Time ranges - example: <2021-06-11 Fri 11:00-12:30>
        • Date ranges - example: <2021-06-11 Fri 11:00-12:30>--<2021-06-13 Sun 22:00>
      • Properly lists tasks according to defined dates (DEADLINE,SCHEDULED,Plain date)
      • Navigate forward (=f=)/backward(=b=) or jump to specific date (=J=)
      • Go to task under cursor in current window(==) or other window(==)
      • Print category from ":CATEGORY:" property if defined
    • List tasks that have "TODO" state (=t=):
    • Find headlines matching tag(s) (=m=):
    • Search for headlines (and it's content) for a query (=s=):
    • [[file:./docs/configuration.org#advanced-search][Advanced search]] for tags/todo kewords/properties
    • Notifications (experimental, see issue [[https://github.com/nvim-orgmode/orgmode/issues/49][#49]])
    • Clocking time
  • Capture:
    • Define custom templates
    • Fast capturing to default notes file via ==
    • Capturing to specific destination =or=
    • Abort capture with =ok=
  • Org files
    • Clocking time
    • Refile to destination/headline: =or=
    • Increase/Decrease date under cursor: == / ==
    • Change date under cursor via calendar popup: =cid=
    • Change headline TODO state: forward =cit= or backward =ciT=
    • Open hyperlink or date under cursor: =oo=
    • Toggle checkbox: ==
    • Toggle current line to headline and vice versa: =o*=
    • Toggle folding of current headline: ==
    • Toggle folding in whole file: ==
    • Archive headline: =o$=
    • Add archive tag: =oA=
    • Change tags: =ot=
    • Promote headline: =<<=
    • Demote headline: =>>=
    • Promote subtree: =<s=
    • Demote subtree: =>s=
    • Add headline/list item/checkbox: ==
    • Insert heading after current heading and it's content: =oih=
    • Insert TODO heading after current line: =oiT=
    • Insert TODO heading after current heading and it's content: =oit=
    • Move headline up: =oK=
    • Move headline down: =oJ=
    • Highlighted code blocks (#+BEGIN_SRC filetype) Exporting (via emacs, pandoc and custom export options)

Link to detailed documentation: [[./docs/index.org][DOCS]]

** Plugins Check [[file:./docs/plugins.org][Plugins]] page for list of plugins.

#+BEGIN_QUOTE NOTE: None of the Emacs Orgmode plugins will be built into nvim-orgmode. Anything that's a separate plugin in Emacs Orgmode should be a separate plugin in here. The point of this plugin is to provide functionality that's built into Emacs Orgmode core, and a good foundation for external plugins. #+END_QUOTE

If you want to build a plugin, post suggestions and improvements on [[https://github.com/nvim-orgmode/orgmode/issues/26][Plugins infrastructure]] issue.

** Thanks to :PROPERTIES: :CUSTOM_ID: thanks-to :END: