diff options
Diffstat (limited to '.config/nvim')
| -rw-r--r-- | .config/nvim/ftdetect/microscript.lua | 7 | ||||
| -rw-r--r-- | .config/nvim/ftplugin/microscript.vim | 7 | ||||
| -rw-r--r-- | .config/nvim/init.lua | 26 | ||||
| -rw-r--r-- | .config/nvim/syntax/microscript.vim | 42 |
4 files changed, 79 insertions, 3 deletions
diff --git a/.config/nvim/ftdetect/microscript.lua b/.config/nvim/ftdetect/microscript.lua new file mode 100644 index 0000000..d14f783 --- /dev/null +++ b/.config/nvim/ftdetect/microscript.lua @@ -0,0 +1,7 @@ +---@diagnostic disable: undefined-global +vim.api.nvim_create_autocmd({"BufNewFile", "BufRead"}, { + pattern = {"*.us", "*.microscript"}, + callback = function() + vim.o.filetype = "microscript" + end +}) diff --git a/.config/nvim/ftplugin/microscript.vim b/.config/nvim/ftplugin/microscript.vim new file mode 100644 index 0000000..13f29fc --- /dev/null +++ b/.config/nvim/ftplugin/microscript.vim @@ -0,0 +1,7 @@ +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +setlocal comments=# +setlocal commentstring=#\ %s diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index f553aaa..3d37a0e 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -7,7 +7,8 @@ vim.o.cc = "80" vim.o.splitright = true vim.o.splitbelow = true vim.o.ignorecase = true -vim.o.winborder = "single" +vim.o.winborder="single" +vim.o.completeopt = "menu,menuone,noselect" vim.o.mouse = "" vim.o.guicursor = "n-c-sm-ve:block-Cursor,i-ci:block-Cursor_i,v:block-Cursor_v" @@ -70,10 +71,11 @@ vim.api.nvim_create_autocmd("FileType", { vim.keymap.set("n", "<leader>f", ":Pick files tool='rg'<CR>") vim.keymap.set("v", "p", '"_dP', opts) +vim.keymap.set("n", "<leader>s", ":SwapFile<CR>") -- Switch between semantically related files easily :) local exts = {{"c", "h"}, {"cc", "hh"}, {"cpp", "hpp"}, {"frag", "vert"}} -vim.keymap.set("n", "<leader>s", function() +vim.api.nvim_create_user_command("SwapFile", function() local bufpath = vim.api.nvim_buf_get_name(0) for _, pair in ipairs(exts) do for i, ext in ipairs(pair) do @@ -85,7 +87,23 @@ vim.keymap.set("n", "<leader>s", function() end end print("no files to swap to") -end) +end, {}) + +-- gd and gD don't work until you open a file, so this commands loads all the +-- files in the directory you're in. +vim.api.nvim_create_user_command("OpenAll", function() + local bufnr = vim.api.nvim_get_current_buf() + vim.cmd[[arg **/*]] + vim.api.nvim_set_current_buf(bufnr) +end, {}) + +vim.api.nvim_create_autocmd("LspAttach", { + callback = function(ev) + local opts = {silent=true, buffer=ev.buf} + vim.keymap.set("n", "gD", function() vim.lsp.buf.declaration() end, opts) + vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) + end, +}) vim.lsp.enable({"lua_ls", "clangd"}) vim.diagnostic.config({ @@ -96,3 +114,5 @@ vim.diagnostic.config({ vim.cmd.colorscheme("acario_dark") vim.api.nvim_set_hl(0, "Cursor_i", {bg="#00FFFF"}) vim.api.nvim_set_hl(0, "Cursor_v", {bg="#FF00FF"}) + +require("vim._core.ui2").enable({}) diff --git a/.config/nvim/syntax/microscript.vim b/.config/nvim/syntax/microscript.vim new file mode 100644 index 0000000..e6b77f7 --- /dev/null +++ b/.config/nvim/syntax/microscript.vim @@ -0,0 +1,42 @@ +if exists("b:current_syntax") + finish +endif + +syn keyword usStatement break next ret +syn keyword usStructure let global +syn keyword usLiteral true false zilch nada +syn keyword usConditional else elseif +syn keyword usOperator and or +syn keyword usTodo TODO FIXME HACK XXX + +syn region usIfEnd transparent matchgroup=usConditional start="\<if\>" end="\<end\>" contains=TOP +syn region usRepeatEnd transparent matchgroup=usRepeat start="\<loop\>" end="\<end\>" contains=TOP +syn region usDoEnd transparent matchgroup=usStatement start="\<do\>" end="\<end\>" contains=TOP +syn region usFunEnd transparent matchgroup=usStructure start="\<fun\>" end="\<end\>" contains=TOP +syn region usString start=/"/ end=/"/ contains=usSpecial +syn region usString start=/'/ end=/'/ contains=usSpecial + +syn match usFunction /[a-zA-Z_][a-zA-Z0-9_:]*\ze(/ +syn match usLabel /<[a-zA-Z_][a-zA-Z0-9_:]*>$/ +syn match usSpecial contained /\\[\\"'tnr]/ +syn match usComment /\#.*/ contains=usTodo +syn match usNumber /\<\d\+\>/ +syn match usNumber /\<\d\+\.\d*/ +syn match usOperator /=|\+=|-=|\*=|\/=|%=||\+|-|\*|\/|%|<|>|<=|>=|==|!=|!|\.|\.\./ + +hi def link usStructure Structure +hi def link usFunction Function +hi def link usStatement Statement +hi def link usLabel Label +hi def link usConditional Conditional +hi def link usRepeat Repeat +hi def link usModifier StorageClass +hi def link usString String +hi def link usSpecial Special +hi def link usOperator Operator +hi def link usNumber Constant +hi def link usLiteral Constant +hi def link usComment Comment +hi def link usTodo Todo + +let b:current_syntax = 'microscript' |
