feat: improve luasnip
This commit is contained in:
parent
85bab070c6
commit
22a6b5156c
9 changed files with 115 additions and 67 deletions
|
@ -12,10 +12,6 @@ in
|
|||
|
||||
config = mkIf cfg.enable {
|
||||
home-manager.users.moritz = {
|
||||
xdg.configFile."nvim/snippets" = {
|
||||
recursive = true;
|
||||
source = ./plugins/snippets;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
xdotool # for vimtex
|
||||
|
|
|
@ -5,6 +5,15 @@ let
|
|||
in
|
||||
{
|
||||
home-manager.users.moritz.programs.nixvim = {
|
||||
extraConfigLuaPre = ''
|
||||
local has_words_before = function()
|
||||
if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then
|
||||
return false
|
||||
end
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_text(0, line-1, 0, line-1, col, {})[1]:match("^%s@*$") == nil
|
||||
end
|
||||
'';
|
||||
plugins.cmp = {
|
||||
autoEnableSources = true;
|
||||
enable = true;
|
||||
|
@ -27,7 +36,7 @@ in
|
|||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
|
||||
elseif require("luasnip").locally_jumpable(1) then
|
||||
elseif require("luasnip").locally_jumpable(1) and has_words_before() then
|
||||
require("luasnip").jump(1)
|
||||
else
|
||||
fallback()
|
||||
|
|
|
@ -4,24 +4,35 @@ let
|
|||
inherit (lib) mkEnableOption mkIf readFile;
|
||||
in
|
||||
{
|
||||
home-manager.users.moritz.programs.nixvim = {
|
||||
plugins.luasnip = {
|
||||
enable = true;
|
||||
settings = {
|
||||
history = true;
|
||||
update_events = "TextChanged,TextChangedI";
|
||||
delete_check_events = "TextChanged";
|
||||
ext_opts.__raw = ''
|
||||
{
|
||||
[require("luasnip.util.types").choiceNode] = {
|
||||
active = {
|
||||
virt_text = { { "<--", "Error" } },
|
||||
home-manager.users.moritz = {
|
||||
xdg.configFile."nvim/snippets" = {
|
||||
recursive = true;
|
||||
source = ../snippets;
|
||||
};
|
||||
programs.nixvim = {
|
||||
plugins.luasnip = {
|
||||
enable = true;
|
||||
settings = {
|
||||
history = true;
|
||||
update_events = "TextChanged,TextChangedI";
|
||||
delete_check_events = "TextChanged";
|
||||
ext_opts.__raw = ''
|
||||
{
|
||||
[require("luasnip.util.types").choiceNode] = {
|
||||
active = {
|
||||
virt_text = { { "<--", "Error" } },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
'';
|
||||
ft_func.__raw = ''require("luasnip.extras.filetype_functions").from_pos_or_filetype'';
|
||||
}
|
||||
'';
|
||||
ft_func.__raw = ''require("luasnip.extras.filetype_functions").from_pos_or_filetype'';
|
||||
};
|
||||
};
|
||||
extraConfigLuaPost = ''
|
||||
require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/snippets" })
|
||||
require("luasnip.loaders.from_snipmate").lazy_load({ paths = "~/.config/nvim/snippets" })
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local sn = ls.snippet_node
|
||||
local isn = ls.indent_snippet_node
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
local f = ls.function_node
|
||||
local c = ls.choice_node
|
||||
local d = ls.dynamic_node
|
||||
local r = ls.restore_node
|
||||
local events = require("luasnip.util.events")
|
||||
local ai = require("luasnip.nodes.absolute_indexer")
|
||||
local extras = require("luasnip.extras")
|
||||
local l = extras.lambda
|
||||
local rep = extras.rep
|
||||
local p = extras.partial
|
||||
local m = extras.match
|
||||
local n = extras.nonempty
|
||||
local dl = extras.dynamic_lambda
|
||||
local fmt = require("luasnip.extras.fmt").fmt
|
||||
local fmta = require("luasnip.extras.fmt").fmta
|
||||
local conds = require("luasnip.extras.expand_conditions")
|
||||
local postfix = require("luasnip.extras.postfix").postfix
|
||||
local types = require("luasnip.util.types")
|
||||
local parse = require("luasnip.util.parser").parse_snippet
|
||||
local ms = ls.multi_snippet
|
||||
local k = require("luasnip.nodes.key_indexer").new_key
|
||||
|
||||
local def_template = [[
|
||||
def {fname}({args}) do
|
||||
{final}
|
||||
end
|
||||
]]
|
||||
|
||||
local def = s(
|
||||
"def",
|
||||
fmt(def_template, {
|
||||
fname = i(1, "fname"),
|
||||
args = i(2),
|
||||
final = i(3),
|
||||
}, { priority = 1001 })
|
||||
)
|
||||
|
||||
return {
|
||||
def,
|
||||
}
|
71
modules/programs/nvim/snippets/elixir.snippets
Normal file
71
modules/programs/nvim/snippets/elixir.snippets
Normal file
|
@ -0,0 +1,71 @@
|
|||
snippet defmodule "Define a new module"
|
||||
defmodule ${1} do
|
||||
${2}
|
||||
end
|
||||
|
||||
snippet def "Define a function"
|
||||
def ${1} do
|
||||
${2}
|
||||
end
|
||||
|
||||
snippet defw "Define a function with guard"
|
||||
def ${1}(${2}) when ${3} do
|
||||
${4}
|
||||
end
|
||||
|
||||
snippet defa "Define a function with arguments"
|
||||
def ${1}(${2}) do
|
||||
${3}
|
||||
end
|
||||
|
||||
snippet defp "Define a private function"
|
||||
defp ${1} do
|
||||
${2}
|
||||
end
|
||||
|
||||
snippet defpw "Define a private function with guard"
|
||||
defp ${1}(${2}) when ${3} do
|
||||
${4}
|
||||
end
|
||||
|
||||
snippet defpa "Define a private function with arguments"
|
||||
defp ${1}(${2}) do
|
||||
${3}
|
||||
end
|
||||
|
||||
snippet defmacro "Define a macro"
|
||||
defmacro ${1}(${2}) do
|
||||
${3}
|
||||
end
|
||||
|
||||
snippet defmacrow "Define a macro with guard"
|
||||
defmacro ${1}(${2}) when ${3} do
|
||||
${4}
|
||||
end
|
||||
|
||||
snippet quote "Quote block"
|
||||
quote do
|
||||
${1}
|
||||
end
|
||||
|
||||
snippet quoteb "Quote block with bind_quoted"
|
||||
quote bind_quoted: [${1}] do
|
||||
${2}
|
||||
end
|
||||
|
||||
snippet do "Do block"
|
||||
do
|
||||
${1}
|
||||
end
|
||||
|
||||
snippet if "If block"
|
||||
if ${1} do
|
||||
${2}
|
||||
end
|
||||
|
||||
snippet ife "If-Else block"
|
||||
if ${1} do
|
||||
${2}
|
||||
else
|
||||
${3}
|
||||
end
|
7
modules/programs/nvim/snippets/snippets.snippets
Normal file
7
modules/programs/nvim/snippets/snippets.snippets
Normal file
|
@ -0,0 +1,7 @@
|
|||
snippet snip
|
||||
snippet ${1:trigger} "${2:description}"
|
||||
${0:${VISUAL}}
|
||||
snippet v
|
||||
{VISUAL}
|
||||
snippet $
|
||||
${${1:1}:${0:text}}
|
Loading…
Reference in a new issue