summaryrefslogtreecommitdiff
path: root/dot_config/nvim
diff options
context:
space:
mode:
authorChloƩ Vulquin <code@toast.bunkerlabs.net>2024-07-24 22:10:02 +0200
committerChloƩ Vulquin <code@toast.bunkerlabs.net>2024-07-24 22:10:02 +0200
commit991091228f9e403015edd0106ccfc3a0ce62e304 (patch)
tree44aa6357e395766f1a340fee08aea546ae69c16c /dot_config/nvim
parentnvim: add empty? and update group (diff)
nvim: continue fennel porting
Yeah I'm lazy but these are my dotfiles. A quick summary: * plugins.lsp.attach is now ported * toast.core is reorganized * new nil? and number? checks * new assoc function * new toast.table.unpack function (cross lua compat) * toast.macros.tbl now uses assoc instead of from-pairs and group * apparently I had forgotten to add {pre,post,init}.fnl before, so that's done now Still todo: ftplugin, colors.
Diffstat (limited to 'dot_config/nvim')
-rw-r--r--dot_config/nvim/fnl/plugins/lsp/attach.fnl31
-rw-r--r--dot_config/nvim/fnl/toast/core.fnl55
-rw-r--r--dot_config/nvim/fnl/toast/macros.fnl7
-rw-r--r--dot_config/nvim/fnl/toast/table.fnl5
-rw-r--r--dot_config/nvim/init.fnl28
-rw-r--r--dot_config/nvim/init.lua52
-rw-r--r--dot_config/nvim/lua/plugins/lsp/attach.lua66
-rw-r--r--dot_config/nvim/lua/plugins/lsp/attach2.lua42
-rw-r--r--dot_config/nvim/lua/toast/core.lua67
-rw-r--r--dot_config/nvim/lua/toast/table.lua3
-rw-r--r--dot_config/nvim/post.fnl4
-rw-r--r--dot_config/nvim/post.lua9
-rw-r--r--dot_config/nvim/pre.fnl26
-rw-r--r--dot_config/nvim/pre.lua35
14 files changed, 307 insertions, 123 deletions
diff --git a/dot_config/nvim/fnl/plugins/lsp/attach.fnl b/dot_config/nvim/fnl/plugins/lsp/attach.fnl
new file mode 100644
index 0000000..1f23015
--- /dev/null
+++ b/dot_config/nvim/fnl/plugins/lsp/attach.fnl
@@ -0,0 +1,31 @@
+(import-macros {: tbl : recc} :toast.macros)
+(local {: assoc : map} (require :toast.core))
+(local {: insert} (require :toast.table))
+
+(fn [c b]
+ (let [lsp vim.lsp
+ lbf lsp.buf
+ ll [(tbl "" & :group :+lsp)
+ (tbl :w & :group :+workspace)
+
+ (tbl :D lbf.declaration & :desc "goto declaration")
+ (tbl :d lbf.definition & :desc "goto definition")
+ (tbl :k lbf.hover & :desc "hover")
+ (tbl :K lbf.signature_help & :desc "signature help")
+ (tbl :i lbf.implementation & :desc "goto implementation")
+ (tbl :t lbf.type_definition & :desc "goto type definition")
+ (tbl :r lbf.rename & :desc "rename")
+ (tbl :c lbf.code_action & :desc "code action")
+ (tbl :R lbf.reference & :desc "list references")
+
+ (tbl :wa lbf.add_workspace_folder & :desc "add folder")
+ (tbl :wr lbf.remove_workspace_folder & :desc "remove folder")
+ (tbl :wl #(print (vim.inspect (lbf.list_workspace_folders))) &
+ :desc "list folders")]
+ ll (map #(assoc $ 1 (.. :<localleader><localleader> (. $ 1))) ll)]
+ (vim.api.nvim_buf_set_option b :omnifunc :v:lua.vim.lsp.omnifunc)
+ (recc :which-key :add
+ (tbl (insert ll
+ (tbl :<leader>F #(vim.lsp.buf.format {:async true}) &
+ :desc "run format")) &
+ :buffer b))))
diff --git a/dot_config/nvim/fnl/toast/core.fnl b/dot_config/nvim/fnl/toast/core.fnl
index 3c77e4a..16e69c2 100644
--- a/dot_config/nvim/fnl/toast/core.fnl
+++ b/dot_config/nvim/fnl/toast/core.fnl
@@ -1,20 +1,31 @@
-(local {: insert} (require :toast.table))
+(local {: insert : unpack} (require :toast.table))
+; math
(fn dec [n]
"Decrement n by 1."
(- n 1))
(fn inc [n]
"Increment n by 1."
(+ n 1))
+
+; checks?
+(fn empty? [xs]
+ "Returns true if the lengthable contains no elements."
+ (= 0 (length xs)))
+(fn nil? [x]
+ "Returns true if the argument is nil."
+ (= nil x))
+(fn number? [n]
+ "Returns true if the argument is a number."
+ (= :number (type n)))
+
+; sequences
(fn drop [n xs]
"Returns a table of all but the first n elements in xs."
(let [out []]
(each [i v (ipairs xs)]
(when (> i n) (insert out v)))
out))
-(fn empty? [xs]
- "Returns true if the lengthable contains no elements."
- (= 0 (length xs)))
(fn first [xs]
"The first element in a sequential table."
(. xs 1))
@@ -36,19 +47,45 @@
(insert out []))
(insert (last out) v
out))))))
+
+; HOF
+(fn assoc [?t ...]
+ "Sets the key `k` in table `t` to the value `v`.
+ Accepts an arbitrary amount of `k` and `v` pairs.
+ Returns the mutated table `t`."
+ (let [t (or ?t {})
+ lt (inc (length t)) ; for numerical keys
+ [k v & xs] [...]]
+ (case k
+ nil nil
+ (where k (and (number? k) (> lt k))) (tset t k v) ; TODO: (set (. t k) v)
+ (where k (and (number? k) (= k lt))) (table.insert t k v)
+ _ (tset t k v))
+ (case (length xs)
+ 0 t
+ 1 (error "assoc expects even number of arguments after table, found odd number")
+ _ (assoc t (unpack xs)))))
(fn map [f xs]
"Returns a sequential table consisting of the result of apply f to every item in xs."
(accumulate [out []
- _ v (ipairs xs)]
+ _ v (ipairs (or xs []))]
(let [mapped (f v)]
(insert out (if (= 0 (select :# mapped))
nil
mapped)))))
-{: dec
+{;math
+ : dec
: inc
- : drop
+ ; checks?
: empty?
- : group
+ : nil?
+ : number?
+ ; sequences
+ : drop
: first
- : last}
+ : last
+ : group
+ ; HOF
+ : assoc
+ : map}
diff --git a/dot_config/nvim/fnl/toast/macros.fnl b/dot_config/nvim/fnl/toast/macros.fnl
index bb4375b..b81d8e6 100644
--- a/dot_config/nvim/fnl/toast/macros.fnl
+++ b/dot_config/nvim/fnl/toast/macros.fnl
@@ -2,9 +2,8 @@
(local {: inc
: drop
- : group} (require :toast.core))
-(local {: from-pairs
- : insert} (require :toast.table))
+ : assoc} (require :toast.core))
+(local {: insert} (require :toast.table))
(fn tbl [...]
"Generate a mixed table.
@@ -16,7 +15,7 @@
&until (= v '&)]
(insert out v))
post (drop (inc (length pre)) args)]
- (from-pairs (group 2 post) pre)))
+ (assoc pre (unpack post))))
(fn recc [reqspec key ...]
"A common lua pattern is `require 'something'.call(arg1, arg2)`.
diff --git a/dot_config/nvim/fnl/toast/table.fnl b/dot_config/nvim/fnl/toast/table.fnl
index a294b14..fe118e8 100644
--- a/dot_config/nvim/fnl/toast/table.fnl
+++ b/dot_config/nvim/fnl/toast/table.fnl
@@ -11,5 +11,8 @@
(table.insert t ...)
t)
+(local unpack (or table.unpack unpack))
+
{: from-pairs
- : insert}
+ : insert
+ : unpack}
diff --git a/dot_config/nvim/init.fnl b/dot_config/nvim/init.fnl
new file mode 100644
index 0000000..b74dcd1
--- /dev/null
+++ b/dot_config/nvim/init.fnl
@@ -0,0 +1,28 @@
+; allow running code unconditionally before or after plugins / noplugins are loaded
+(fn doif [path]
+ (let [path (.. (vim.fn.stdpath :config) :/ path)
+ do? (< 0 (vim.fn.filereadable path))]
+ (when do? (dofile path))))
+
+; leader, localleader, options
+(doif :pre.lua)
+
+; plugins
+(if (= 0 (vim.fn.executable :git))
+ (doif :noplugins.lua)
+ (let [lazypath (.. (vim.fn.stdpath :data) :/lazy/lazy.nvim)
+ fstat (vim.loop.fs_stat lazypath)]
+ (when (not fstat)
+ (vim.fn.system [:git
+ :clone
+ :--filter=blob:none
+ :https://github.com/folke/lazy.nvim.git
+ :--branch=stable ; latest stable release
+ lazypath]))
+ (vim.opt.rtp:prepend lazypath)
+ ((. (require :lazy) :setup) :plugins {})
+ (require :bindings)
+ (vim.cmd "colorscheme starlight")))
+
+; custom file associations etc
+(doif :post.lua)
diff --git a/dot_config/nvim/init.lua b/dot_config/nvim/init.lua
index 4dcf175..ec4a55e 100644
--- a/dot_config/nvim/init.lua
+++ b/dot_config/nvim/init.lua
@@ -1,34 +1,26 @@
--- allow running code unconditionally before or after plugins / noplugins are loaded
+-- [nfnl] Compiled from init.fnl by https://github.com/Olical/nfnl, do not edit.
local function doif(path)
- local cpath = vim.fn.stdpath 'config' .. '/'
- if vim.fn.filereadable(cpath .. path) > 0 then
- dofile(cpath .. path)
- end
+ local path0 = (vim.fn.stdpath("config") .. "/" .. path)
+ local do_3f = (0 < vim.fn.filereadable(path0))
+ if do_3f then
+ return dofile(path0)
+ else
+ return nil
+ end
end
-
--- leader, localleader, options
-doif 'pre.lua'
-
--- plugins
-if vim.fn.executable 'git' == 0 then
- doif 'noplugins.lua'
+doif("pre.lua")
+if (0 == vim.fn.executable("git")) then
+ doif("noplugins.lua")
else
- local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
- if not vim.loop.fs_stat(lazypath) then
- vim.fn.system({
- "git",
- "clone",
- "--filter=blob:none",
- "https://github.com/folke/lazy.nvim.git",
- "--branch=stable", -- latest stable release
- lazypath,
- })
- end
- vim.opt.rtp:prepend(lazypath)
- require 'lazy'.setup("plugins", {})
- require 'bindings'
- vim.cmd [[colorscheme starlight]]
+ local lazypath = (vim.fn.stdpath("data") .. "/lazy/lazy.nvim")
+ local fstat = vim.loop.fs_stat(lazypath)
+ if not fstat then
+ vim.fn.system({"git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath})
+ else
+ end
+ do end (vim.opt.rtp):prepend(lazypath)
+ do end (require("lazy")).setup("plugins", {})
+ require("bindings")
+ vim.cmd("colorscheme starlight")
end
-
--- custom file associations etc
-doif 'post.lua'
+return doif("post.lua")
diff --git a/dot_config/nvim/lua/plugins/lsp/attach.lua b/dot_config/nvim/lua/plugins/lsp/attach.lua
index f81303d..54f60f5 100644
--- a/dot_config/nvim/lua/plugins/lsp/attach.lua
+++ b/dot_config/nvim/lua/plugins/lsp/attach.lua
@@ -1,42 +1,26 @@
--- TODO: INITIAL PORT
-local function helper(opts, ...)
- for _, spec in ipairs({...}) do
- for _, v in ipairs(spec) do
- if opts.prefix then
- v[0] = opts.prefix .. v[0]
- end
- if opts.buffer then
- v.buffer = opts.buffer
- end
- end
- end
-end
-
-return function(c, b)
- local lsp = vim.lsp
- local lbf = lsp.buf
- local wk = require 'which-key'
- vim.api.nvim_buf_set_option(b, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
- wk.add(helper({buffer = b}, {
- { '<leader>F', function() vim.lsp.buf.format {async = true} end,
- desc = 'run format' },
- }, helper({prefix = '<localleader><localleader>'}, {
- { '', group = '+lsp' },
- { 'w', group = '+workspace' },
-
- { 'D', lbf.declaration, desc = 'goto declaration' },
- { 'd', lbf.definition, desc = 'goto definition' },
- { 'k', lbf.hover, desc = 'hover' },
- { 'K', lbf.signature_help, desc = 'signature help' },
- { 'i', lbf.implementation, desc = 'goto implementation' },
- { 't', lbf.type_definition, desc = 'goto type definition' },
- { 'r', lbf.rename, desc = 'rename' },
- { 'c', lbf.code_action, desc = 'code action' },
- { 'R', lbf.references, desc = 'list references' },
-
- { 'wa', lbf.add_workspace_folder, 'add folder' },
- { 'wr', lbf.remove_workspace_folder, 'remove folder' },
- { 'wl', function() print(vim.inspect(lbf.list_workspace_folders())) end,
- desc = 'list folders' },
- })))
+-- [nfnl] Compiled from fnl/plugins/lsp/attach.fnl by https://github.com/Olical/nfnl, do not edit.
+local _local_1_ = require("toast.core")
+local assoc = _local_1_["assoc"]
+local map = _local_1_["map"]
+local _local_2_ = require("toast.table")
+local insert = _local_2_["insert"]
+local function _3_(c, b)
+ local lsp = vim.lsp
+ local lbf = lsp.buf
+ local ll
+ local function _4_()
+ return print(vim.inspect(lbf.list_workspace_folders()))
+ end
+ ll = {{"", group = "+lsp"}, {"w", group = "+workspace"}, {"D", lbf.declaration, desc = "goto declaration"}, {"d", lbf.definition, desc = "goto definition"}, {"k", lbf.hover, desc = "hover"}, {"K", lbf.signature_help, desc = "signature help"}, {"i", lbf.implementation, desc = "goto implementation"}, {"t", lbf.type_definition, desc = "goto type definition"}, {"r", lbf.rename, desc = "rename"}, {"c", lbf.code_action, desc = "code action"}, {"R", lbf.reference, desc = "list references"}, {"wa", lbf.add_workspace_folder, desc = "add folder"}, {"wr", lbf.remove_workspace_folder, desc = "remove folder"}, {"wl", _4_, desc = "list folders"}}
+ local ll0
+ local function _5_(_241)
+ return assoc(_241, 1, ("<localleader><localleader>" .. (_241)[1]))
+ end
+ ll0 = map(_5_, ll)
+ vim.api.nvim_buf_set_option(b, "omnifunc", "v:lua.vim.lsp.omnifunc")
+ local function _6_()
+ return vim.lsp.buf.format({async = true})
+ end
+ return (require("which-key")).add({insert(ll0, {"<leader>F", _6_, desc = "run format"}), buffer = b})
end
+return _3_
diff --git a/dot_config/nvim/lua/plugins/lsp/attach2.lua b/dot_config/nvim/lua/plugins/lsp/attach2.lua
new file mode 100644
index 0000000..f81303d
--- /dev/null
+++ b/dot_config/nvim/lua/plugins/lsp/attach2.lua
@@ -0,0 +1,42 @@
+-- TODO: INITIAL PORT
+local function helper(opts, ...)
+ for _, spec in ipairs({...}) do
+ for _, v in ipairs(spec) do
+ if opts.prefix then
+ v[0] = opts.prefix .. v[0]
+ end
+ if opts.buffer then
+ v.buffer = opts.buffer
+ end
+ end
+ end
+end
+
+return function(c, b)
+ local lsp = vim.lsp
+ local lbf = lsp.buf
+ local wk = require 'which-key'
+ vim.api.nvim_buf_set_option(b, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
+ wk.add(helper({buffer = b}, {
+ { '<leader>F', function() vim.lsp.buf.format {async = true} end,
+ desc = 'run format' },
+ }, helper({prefix = '<localleader><localleader>'}, {
+ { '', group = '+lsp' },
+ { 'w', group = '+workspace' },
+
+ { 'D', lbf.declaration, desc = 'goto declaration' },
+ { 'd', lbf.definition, desc = 'goto definition' },
+ { 'k', lbf.hover, desc = 'hover' },
+ { 'K', lbf.signature_help, desc = 'signature help' },
+ { 'i', lbf.implementation, desc = 'goto implementation' },
+ { 't', lbf.type_definition, desc = 'goto type definition' },
+ { 'r', lbf.rename, desc = 'rename' },
+ { 'c', lbf.code_action, desc = 'code action' },
+ { 'R', lbf.references, desc = 'list references' },
+
+ { 'wa', lbf.add_workspace_folder, 'add folder' },
+ { 'wr', lbf.remove_workspace_folder, 'remove folder' },
+ { 'wl', function() print(vim.inspect(lbf.list_workspace_folders())) end,
+ desc = 'list folders' },
+ })))
+end
diff --git a/dot_config/nvim/lua/toast/core.lua b/dot_config/nvim/lua/toast/core.lua
index 3313de7..765a29d 100644
--- a/dot_config/nvim/lua/toast/core.lua
+++ b/dot_config/nvim/lua/toast/core.lua
@@ -1,12 +1,22 @@
-- [nfnl] Compiled from fnl/toast/core.fnl by https://github.com/Olical/nfnl, do not edit.
local _local_1_ = require("toast.table")
local insert = _local_1_["insert"]
+local unpack = _local_1_["unpack"]
local function dec(n)
return (n - 1)
end
local function inc(n)
return (n + 1)
end
+local function empty_3f(xs)
+ return (0 == #xs)
+end
+local function nil_3f(x)
+ return (nil == x)
+end
+local function number_3f(n)
+ return ("number" == type(n))
+end
local function drop(n, xs)
local out = {}
for i, v in ipairs(xs) do
@@ -17,9 +27,6 @@ local function drop(n, xs)
end
return out
end
-local function empty_3f(xs)
- return (0 == #xs)
-end
local function first(xs)
return xs[1]
end
@@ -51,19 +58,65 @@ local function group(n, xs)
return out
end
end
+local function assoc(_3ft, ...)
+ local t = (_3ft or {})
+ local lt = inc(#t)
+ local _let_7_ = {...}
+ local k = _let_7_[1]
+ local v = _let_7_[2]
+ local xs = (function (t, k, e) local mt = getmetatable(t) if 'table' == type(mt) and mt.__fennelrest then return mt.__fennelrest(t, k) elseif e then local rest = {} for k, v in pairs(t) do if not e[k] then rest[k] = v end end return rest else return {(table.unpack or unpack)(t, k)} end end)(_let_7_, 3)
+ do
+ local _8_ = k
+ if (_8_ == nil) then
+ else
+ local function _9_(...)
+ local k0 = _8_
+ return (number_3f(k0) and (lt > k0))
+ end
+ if ((nil ~= _8_) and _9_(...)) then
+ local k0 = _8_
+ t[k0] = v
+ else
+ local function _10_(...)
+ local k0 = _8_
+ return (number_3f(k0) and (k0 == lt))
+ end
+ if ((nil ~= _8_) and _10_(...)) then
+ local k0 = _8_
+ table.insert(t, k0, v)
+ elseif true then
+ local _ = _8_
+ t[k] = v
+ else
+ end
+ end
+ end
+ end
+ local _12_ = #xs
+ if (_12_ == 0) then
+ return t
+ elseif (_12_ == 1) then
+ return error("assoc expects even number of arguments after table, found odd number")
+ elseif true then
+ local _ = _12_
+ return assoc(t, unpack(xs))
+ else
+ return nil
+ end
+end
local function map(f, xs)
local out = {}
- for _, v in ipairs(xs) do
+ for _, v in ipairs((xs or {})) do
local mapped = f(v)
- local function _7_()
+ local function _14_()
if (0 == select("#", mapped)) then
return nil
else
return mapped
end
end
- out = insert(out, _7_())
+ out = insert(out, _14_())
end
return out
end
-return {dec = dec, inc = inc, drop = drop, ["empty?"] = empty_3f, group = group, first = first, last = last}
+return {dec = dec, inc = inc, ["empty?"] = empty_3f, ["nil?"] = nil_3f, ["number?"] = number_3f, drop = drop, first = first, last = last, group = group, assoc = assoc, map = map}
diff --git a/dot_config/nvim/lua/toast/table.lua b/dot_config/nvim/lua/toast/table.lua
index b2633a2..a898a5e 100644
--- a/dot_config/nvim/lua/toast/table.lua
+++ b/dot_config/nvim/lua/toast/table.lua
@@ -13,4 +13,5 @@ local function insert(t, ...)
table.insert(t, ...)
return t
end
-return {["from-pairs"] = from_pairs, insert = insert}
+local unpack = (table.unpack or unpack)
+return {["from-pairs"] = from_pairs, insert = insert, unpack = unpack}
diff --git a/dot_config/nvim/post.fnl b/dot_config/nvim/post.fnl
new file mode 100644
index 0000000..dcde504
--- /dev/null
+++ b/dot_config/nvim/post.fnl
@@ -0,0 +1,4 @@
+; custom filetypes
+(local fts [{:extension {:janet :janet}}
+ {:extension {:cls :latex}}])
+(each [_ v (ipairs fts)] (vim.filetype.add v))
diff --git a/dot_config/nvim/post.lua b/dot_config/nvim/post.lua
index 27ce67e..3650d37 100644
--- a/dot_config/nvim/post.lua
+++ b/dot_config/nvim/post.lua
@@ -1,3 +1,6 @@
--- custom filetypes
-vim.filetype.add {extension = { janet = 'janet' }}
-vim.filetype.add {extension = { cls = 'latex' }}
+-- [nfnl] Compiled from post.fnl by https://github.com/Olical/nfnl, do not edit.
+local fts = {{extension = {janet = "janet"}}, {extension = {cls = "latex"}}}
+for _, v in ipairs(fts) do
+ vim.filetype.add(v)
+end
+return nil
diff --git a/dot_config/nvim/pre.fnl b/dot_config/nvim/pre.fnl
new file mode 100644
index 0000000..13fd676
--- /dev/null
+++ b/dot_config/nvim/pre.fnl
@@ -0,0 +1,26 @@
+(set vim.g.mapleader " ")
+(set vim.g.maplocalleader "\\")
+
+(local options {:timeoutlen 300
+ :clipboard :unnamedplus
+ :completeopt "menu,menuone,noselect"
+ :mouse :a
+ :smartcase true
+ :smartindent true
+ :backup false
+ :swapfile false
+ :termguicolors true
+ :expandtab false
+ :shiftwidth 4
+ :tabstop 4
+ :number true
+ :numberwidth 2
+ :scrolloff 4
+ :sidescrolloff 4
+ :foldmethod :expr
+ :foldexpr "nvim_treesitter#foldexpr()"
+ :foldlevelstart 99
+ :wrap true})
+
+(each [k v (pairs options)]
+ (tset vim.opt k v))
diff --git a/dot_config/nvim/pre.lua b/dot_config/nvim/pre.lua
index 2c822ad..d6c3f96 100644
--- a/dot_config/nvim/pre.lua
+++ b/dot_config/nvim/pre.lua
@@ -1,27 +1,8 @@
-vim.g.mapleader = ' '
-vim.g.maplocalleader = '\\'
-
--- options
-local options = {
- timeoutlen = 300,
- clipboard = 'unnamedplus',
- completeopt = 'menu,menuone,noselect',
- mouse = 'a',
- smartcase = true,
- smartindent = true,
- backup = false,
- swapfile = false,
- termguicolors = true,
- expandtab = false,
- shiftwidth = 4,
- tabstop = 4,
- number = true,
- numberwidth = 2,
- scrolloff = 4,
- sidescrolloff = 4,
- foldmethod = 'expr',
- foldexpr = 'nvim_treesitter#foldexpr()',
- foldlevelstart = 99,
- wrap = true,
-}
-for k, v in pairs(options) do vim.opt[k] = v end
+-- [nfnl] Compiled from pre.fnl by https://github.com/Olical/nfnl, do not edit.
+vim.g.mapleader = " "
+vim.g.maplocalleader = "\\"
+local options = {timeoutlen = 300, clipboard = "unnamedplus", completeopt = "menu,menuone,noselect", mouse = "a", smartcase = true, smartindent = true, termguicolors = true, shiftwidth = 4, tabstop = 4, number = true, numberwidth = 2, scrolloff = 4, sidescrolloff = 4, foldmethod = "expr", foldexpr = "nvim_treesitter#foldexpr()", foldlevelstart = 99, wrap = true, expandtab = false, backup = false, swapfile = false}
+for k, v in pairs(options) do
+ vim.opt[k] = v
+end
+return nil