Filetype plugin for forester, a tool for writing mathematical hypertext
- Tree-sitter syntax highlighting. Please report any issues with the grammar in the relevant repository
- following links and transclusions with
gf
- Searching for trees by title with telescope
- Creating new trees via autocompletion menu
- Displaying tree titles with virtual text
- Address completion
Available user commands:
Forester build
: Build the currently configured forest. UseForester config
to switch forest.Forester config
: Choose the config file from which to source the tree directoriesForester browse
: Telescope picker, search trees by title. TODO: support browsing by tag/taxon/...Forester new
: Create a new tree by specifying a prefixForester new_random
: Create a new tree with a random adress by specifying a prefixForester transclude_new
: transclude a new tree at cursor positionForester link_new
: link a new tree at cursor position
With lazy:
{
"kentookura/forester.nvim",
event = "VeryLazy",
dependencies = {
{ "nvim-telescope/telescope.nvim" },
{ "nvim-treesitter/nvim-treesitter" },
{ "nvim-lua/plenary.nvim" },
},
},
-- optionally, configure the cmp source:
local foresterCompletionSource = require("forester.completion")
require("cmp").register_source("forester", foresterCompletionSource)
require("cmp").setup.filetype("forester", { sources = { { name = "forester", dup = 0 } } })
You might need to run :TSInstall toml
and :TSInstall forester
.
In your forest.toml
(or any other config) you should add the list of
prefixes:
prefixes = ["foo", "bar"]
When calling :Forester new
, you will then be able to choose the prefix of the
new tree.
{
config = function()
local forester = require("forester")
vim.g.mapleader = " "
vim.keymap.set("n", "<leader>n.", "<cmd>Forester browse<CR>", { silent = true })
vim.keymap.set("n", "<leader>nn", "<cmd>Forester new<CR>", { silent = true })
vim.keymap.set("n", "<leader>nr", "<cmd>Forester new_random<CR>", { silent = true })
vim.keymap.set("i", "<C-t>", "<cmd>Forester transclude<CR>", { silent = true })
vim.keymap.set("i", "<C-l>", "<cmd>Forester link<CR>", { silent = true })
end,
}
require("nvim-web-devicons").setup({ override_by_extension = { ["tree"] = { icon = "🌲" } } })
- Find an ergonomic way to make use of forester's builtin templating feature