Compare commits
10 commits
22adcf0fb8
...
437ddcbc87
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
437ddcbc87 | ||
|
|
cf5c90c079 | ||
|
|
29e1efd20a | ||
|
|
c1c209c901 | ||
|
|
2f431e8f8e | ||
|
|
da8c98632c | ||
|
|
b987927c4c | ||
|
|
f0d8aa0fd7 | ||
|
|
d38c691151 | ||
|
|
dd473593d5 |
3 changed files with 140 additions and 46 deletions
62
README.org
62
README.org
|
|
@ -30,11 +30,37 @@ you to add anything extra to your ~init.el~.
|
||||||
cmd = { "OrgExecute", "OrgTangle" },
|
cmd = { "OrgExecute", "OrgTangle" },
|
||||||
opts = {
|
opts = {
|
||||||
-- by default, none are enabled
|
-- by default, none are enabled
|
||||||
langs = { "python", "lua", ... }
|
langs = { "python", "lua", ... },
|
||||||
|
|
||||||
|
-- paths to emacs packages to additionally load
|
||||||
|
load_paths = {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
*** Packer
|
||||||
|
|
||||||
|
#+begin_src lua
|
||||||
|
use {
|
||||||
|
"mrshmllow/orgmode-babel.nvim",
|
||||||
|
requires = {
|
||||||
|
"nvim-orgmode/orgmode",
|
||||||
|
"nvim-treesitter/nvim-treesitter"
|
||||||
|
},
|
||||||
|
cmd = { "OrgExecute", "OrgTangle" },
|
||||||
|
opt = true,
|
||||||
|
config = function ()
|
||||||
|
require("orgmode-babel").setup({
|
||||||
|
-- by default, none are enabled
|
||||||
|
langs = { "python", "lua", ... },
|
||||||
|
|
||||||
|
-- paths to emacs packages to additionally load
|
||||||
|
load_paths = {}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Usage
|
** Usage
|
||||||
|
|
||||||
All commands accept a ~!~ to skip confirmation.
|
All commands accept a ~!~ to skip confirmation.
|
||||||
|
|
@ -67,3 +93,37 @@ Tangles all blocks in range. If the range is NOT ~%~, the tangled file will
|
||||||
likely only contain the contents of the last block, which is expected
|
likely only contain the contents of the last block, which is expected
|
||||||
behaviour.
|
behaviour.
|
||||||
|
|
||||||
|
** Advanced Configuration
|
||||||
|
*** Adding extra org-mode languages
|
||||||
|
|
||||||
|
Your emacs ~init.el~ will *not* be sourced during execution of ~:OrgExecute~ and
|
||||||
|
~:OrgTangle~, so packages you install there wont be available.
|
||||||
|
|
||||||
|
However, ~orgmode-babel.nvim~ allows us to specify extra load paths, so we can
|
||||||
|
make packages available that way.
|
||||||
|
|
||||||
|
**** Example
|
||||||
|
|
||||||
|
As an example, lets add [[https://github.com/arnm/ob-mermaid][ob-mermaid]] for
|
||||||
|
mermaid functionality in ~orgmode-babel.nvim~!
|
||||||
|
|
||||||
|
We have two options to get the package. We could either create an
|
||||||
|
=~/.emacs.d/init.el= and install it through a package manager, which will likely
|
||||||
|
have a randomish name, or for the sake of simplicity and this being a neovim
|
||||||
|
plugin, we can simply manually clone the repo to a known location.
|
||||||
|
|
||||||
|
#+begin_example
|
||||||
|
git clone https://github.com/arnm/ob-mermaid ~/.../clone-location/ob-mermaid
|
||||||
|
#+end_example
|
||||||
|
|
||||||
|
#+begin_src lua
|
||||||
|
{
|
||||||
|
"mrshmllow/orgmode-babel.nvim",
|
||||||
|
...
|
||||||
|
opts = {
|
||||||
|
langs = { ..., "mermaid" }
|
||||||
|
load_paths = { "~/.../clone-location/ob-mermaid" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
*orgmode-babel.nvim.txt* For NVIM v0.9.0 Last change: 2023 June 27
|
*orgmode-babel.nvim.txt* For NVIM v0.9.0 Last change: 2023 July 23
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
Table of Contents *orgmode-babel.nvim-table-of-contents*
|
Table of Contents *orgmode-babel.nvim-table-of-contents*
|
||||||
|
|
@ -46,12 +46,39 @@ LAZY.NVIM ~
|
||||||
cmd = { "OrgExecute", "OrgTangle" },
|
cmd = { "OrgExecute", "OrgTangle" },
|
||||||
opts = {
|
opts = {
|
||||||
-- by default, none are enabled
|
-- by default, none are enabled
|
||||||
langs = { "python", "lua", ... }
|
langs = { "python", "lua", ... },
|
||||||
|
|
||||||
|
-- paths to emacs packages to additionally load
|
||||||
|
load_paths = {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
<
|
<
|
||||||
|
|
||||||
|
|
||||||
|
PACKER ~
|
||||||
|
|
||||||
|
>lua
|
||||||
|
use {
|
||||||
|
"mrshmllow/orgmode-babel.nvim",
|
||||||
|
requires = {
|
||||||
|
"nvim-orgmode/orgmode",
|
||||||
|
"nvim-treesitter/nvim-treesitter"
|
||||||
|
},
|
||||||
|
cmd = { "OrgExecute", "OrgTangle" },
|
||||||
|
opt = true,
|
||||||
|
config = function ()
|
||||||
|
require("orgmode-babel").setup({
|
||||||
|
-- by default, none are enabled
|
||||||
|
langs = { "python", "lua", ... },
|
||||||
|
|
||||||
|
-- paths to emacs packages to additionally load
|
||||||
|
load_paths = {}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
}
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
USAGE *orgmode-babel.nvim-orgmode-babel.nvim-usage*
|
USAGE *orgmode-babel.nvim-orgmode-babel.nvim-usage*
|
||||||
|
|
||||||
All commands accept a `!` to skip confirmation.
|
All commands accept a `!` to skip confirmation.
|
||||||
|
|
@ -95,43 +122,33 @@ ADVANCED CONFIGURATION*orgmode-babel.nvim-orgmode-babel.nvim-advanced-configurat
|
||||||
|
|
||||||
ADDING EXTRA ORG-MODE LANGUAGES ~
|
ADDING EXTRA ORG-MODE LANGUAGES ~
|
||||||
|
|
||||||
Your emacs `init.el` will be sourced during execution of `:OrgExecute` and
|
Your emacs `init.el` will **not** be sourced during execution of `:OrgExecute`
|
||||||
`:OrgTangle`, so packages you install there that provide extra babel languages
|
and `:OrgTangle`, so packages you install there wont be available.
|
||||||
will be available!
|
|
||||||
|
|
||||||
Follow the package's installation steps, and if they tell you to include it in
|
However, `orgmode-babel.nvim` allows us to specify extra load paths, so we can
|
||||||
`org-babel-load-languages`, additionally make sure that you include it in
|
make packages available that way.
|
||||||
`opts.langs`.
|
|
||||||
|
|
||||||
1. Example
|
1. Example
|
||||||
|
|
||||||
As an example, lets add ob-mermaid <https://github.com/arnm/ob-mermaid> for
|
As an example, lets add ob-mermaid <https://github.com/arnm/ob-mermaid> for
|
||||||
mermaid functionality in `orgmode-babel.nvim`!
|
mermaid functionality in `orgmode-babel.nvim`!
|
||||||
|
|
||||||
First, lets create a `~/.emacs.d/init.el`.
|
We have two options to get the package. We could either create an
|
||||||
|
`~/.emacs.d/init.el` and install it through a package manager, which will
|
||||||
|
likely have a randomish name, or for the sake of simplicity and this being a
|
||||||
|
neovim plugin, we can simply manually clone the repo to a known location.
|
||||||
|
|
||||||
>
|
>example
|
||||||
; ~/.emacs.d/init.el
|
git clone https://github.com/arnm/ob-mermaid ~/.../clone-location/ob-mermaid
|
||||||
|
|
||||||
; Add the melpa package manager
|
|
||||||
(require 'package)
|
|
||||||
(add-to-list 'package-archives
|
|
||||||
'("melpa" . "https://melpa.org/packages/") t)
|
|
||||||
(package-initialize)
|
|
||||||
|
|
||||||
; Install ob-mermaid
|
|
||||||
(unless (package-installed-p 'ob-mermaid)
|
|
||||||
(package-install 'ob-mermaid))
|
|
||||||
<
|
<
|
||||||
|
|
||||||
Then, in our plugin configuration, we can add `mermaid` to our `opts.langs`.
|
|
||||||
|
|
||||||
>lua
|
>lua
|
||||||
{
|
{
|
||||||
"mrshmllow/orgmode-babel.nvim",
|
"mrshmllow/orgmode-babel.nvim",
|
||||||
...
|
...
|
||||||
opts = {
|
opts = {
|
||||||
langs = { ..., "mermaid" }
|
langs = { ..., "mermaid" }
|
||||||
|
load_paths = { "~/.../clone-location/ob-mermaid" }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
<
|
<
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,10 @@ local M = {
|
||||||
}
|
}
|
||||||
|
|
||||||
function M.setup(opts)
|
function M.setup(opts)
|
||||||
opts = opts or opts
|
opts = opts or {}
|
||||||
|
|
||||||
M.langs = opts.langs and opts.langs or {}
|
M.langs = opts.langs and opts.langs or {}
|
||||||
|
M.load_paths = opts.load_paths and opts.load_paths or {}
|
||||||
|
|
||||||
M._here = vim.fn.fnamemodify(debug.getinfo(1).source:sub(2), ":p:h")
|
M._here = vim.fn.fnamemodify(debug.getinfo(1).source:sub(2), ":p:h")
|
||||||
M._run_by_name = M._here .. "/run_by_name.el"
|
M._run_by_name = M._here .. "/run_by_name.el"
|
||||||
|
|
@ -26,6 +27,17 @@ function M.setup(opts)
|
||||||
"(setq make-backup-files nil)",
|
"(setq make-backup-files nil)",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vim.list_extend(
|
||||||
|
M._base_cmd,
|
||||||
|
vim.fn.reduce(M.load_paths, function(acc, value)
|
||||||
|
vim.list_extend(acc, {
|
||||||
|
"--eval",
|
||||||
|
[[(add-to-list 'load-path "]] .. value .. [[")]],
|
||||||
|
})
|
||||||
|
return acc
|
||||||
|
end, {})
|
||||||
|
)
|
||||||
|
|
||||||
vim.list_extend(M._base_cmd, {
|
vim.list_extend(M._base_cmd, {
|
||||||
"--eval",
|
"--eval",
|
||||||
"(org-babel-do-load-languages 'org-babel-load-languages '(" .. vim.fn.reduce(M.langs, function(acc, value)
|
"(org-babel-do-load-languages 'org-babel-load-languages '(" .. vim.fn.reduce(M.langs, function(acc, value)
|
||||||
|
|
@ -77,8 +89,10 @@ function M.get_names_in_buffer(bufnr, line1, line2)
|
||||||
local passed = not range
|
local passed = not range
|
||||||
local name
|
local name
|
||||||
|
|
||||||
for id, node in pairs(match) do
|
for id, nodes in pairs(match) do
|
||||||
|
for _, node in ipairs(nodes) do
|
||||||
local row1, col1, row2, col2 = node:range()
|
local row1, col1, row2, col2 = node:range()
|
||||||
|
|
||||||
local text = vim.api.nvim_buf_get_text(bufnr, row1, col1, row2, col2, {})[1]
|
local text = vim.api.nvim_buf_get_text(bufnr, row1, col1, row2, col2, {})[1]
|
||||||
|
|
||||||
if named_blocks_query.captures[id] == "block" and not passed then
|
if named_blocks_query.captures[id] == "block" and not passed then
|
||||||
|
|
@ -98,6 +112,7 @@ function M.get_names_in_buffer(bufnr, line1, line2)
|
||||||
table.insert(names, name)
|
table.insert(names, name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
return names
|
return names
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -118,7 +133,8 @@ function M.get_blocks_in_buffer(bufnr, line1, line2)
|
||||||
for _, match in unnamed_blocks_query:iter_matches(root, bufnr, 0, -1) do
|
for _, match in unnamed_blocks_query:iter_matches(root, bufnr, 0, -1) do
|
||||||
local passed = not range
|
local passed = not range
|
||||||
|
|
||||||
for id, node in pairs(match) do
|
for id, nodes in pairs(match) do
|
||||||
|
for _, node in ipairs(nodes) do
|
||||||
local row1, _, row2 = node:range()
|
local row1, _, row2 = node:range()
|
||||||
|
|
||||||
if unnamed_blocks_query.captures[id] == "block" and not passed then
|
if unnamed_blocks_query.captures[id] == "block" and not passed then
|
||||||
|
|
@ -129,6 +145,7 @@ function M.get_blocks_in_buffer(bufnr, line1, line2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if passed then
|
if passed then
|
||||||
table.insert(indexes, encountered)
|
table.insert(indexes, encountered)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue