aboutsummaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
-rw-r--r--.config/nvim/ftdetect/microscript.lua7
-rw-r--r--.config/nvim/ftplugin/microscript.vim7
-rw-r--r--.config/nvim/init.lua26
-rw-r--r--.config/nvim/syntax/microscript.vim42
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'