summary refs log tree commit diff
path: root/.vim/lua
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2021-08-30 18:19:54 +0200
committerRobert Günzler <r@gnzler.io>2021-08-31 12:41:19 +0200
commit37aff33a459646cfbbf8646e17851c7a90fdb287 (patch)
tree505971518b16f382cc664a766e458065bff312c7 /.vim/lua
parent78f496f4202b07ee0691ce5b12becd468e321535 (diff)
vim: add zk langserver
Diffstat (limited to '.vim/lua')
-rw-r--r--.vim/lua/lsp.lua6
-rw-r--r--.vim/lua/zk.lua41
2 files changed, 47 insertions, 0 deletions
diff --git a/.vim/lua/lsp.lua b/.vim/lua/lsp.lua
index f5fe263..9822e2c 100644
--- a/.vim/lua/lsp.lua
+++ b/.vim/lua/lsp.lua
@@ -191,6 +191,12 @@ local setup = function()
     capabilities = caps,
   }
 
+  lsp.zk.setup {
+    on_attach = my_attach,
+    capabilities = caps,
+    root_dir = lsp.util.root_pattern('.zk/'),
+  }
+
 end
 
 return {
diff --git a/.vim/lua/zk.lua b/.vim/lua/zk.lua
new file mode 100644
index 0000000..4cd8389
--- /dev/null
+++ b/.vim/lua/zk.lua
@@ -0,0 +1,41 @@
+
+local function zk_new(path, title_dir)
+  path = path or vim.loop.cwd()
+  if not (path and #path > 0) then return end
+
+  title_dir = title_dir or vim.fn.input('New Zettel: ')
+  local o = {}
+  local parts = vim.split(title_dir, '/')
+  if not parts[2] then
+    o.title = vim.trim(parts[1])
+  else
+    o.title = vim.trim(parts[2])
+    o.dir = vim.trim(parts[1])
+  end
+
+  vim.lsp.buf_request(0, 'workspace/executeCommand',
+    {
+      command = 'zk.new',
+      arguments = { path, o },
+    },
+    function(_, _, result)
+      vim.lsp.util.jump_to_location{
+        uri = vim.uri_from_fname(result.path),
+        range = {start={line=2, character=0}},
+      }
+      vim.cmd('startinsert')
+    end,
+  )
+end
+
+local function zk_index(path)
+  path = path or vim.loop.cwd()
+  vim.lsp.buf.execute_command {
+    command = 'zk.index', arguments = {path, nil},
+  }
+end
+
+return {
+  new = zk_new,
+  index = zk_index,
+}