[nvim] a bunch of things

This commit is contained in:
Afonso Franco 2024-03-17 12:32:47 +00:00
parent ae228da2ce
commit e296716fa2
Signed by: afonso
SSH key fingerprint: SHA256:JiuxZNdA5bRWXPMUJChI0AQ75yC+cXY4xM0IaVwEVys
14 changed files with 526 additions and 392 deletions

4
.config/nvim/.luarc.json Normal file
View file

@ -0,0 +1,4 @@
{
"$schema": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json",
"runtime.version": "LuaJIT"
}

View file

@ -0,0 +1 @@
au BufRead,BufNewFile *.why,*.mlw set filetype=why3

View file

@ -1,6 +1,5 @@
require("core.variables") require("core.variables")
require('core.package_manager') require('core.package_manager')
require('plugins.remote-theme')
require('winbar') require('winbar')
require('core.theme') require('core.theme')
require('impatient') require('impatient')

View file

@ -1,5 +1,5 @@
{ {
"LuaSnip": { "branch": "master", "commit": "f3b3d3446bcbfa62d638b1903ff00a78b2b730a1" }, "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
"catppuccin": { "branch": "main", "commit": "c0de3b46811fe1ce3912e2245a9dfbea6b41c300" }, "catppuccin": { "branch": "main", "commit": "c0de3b46811fe1ce3912e2245a9dfbea6b41c300" },
"cinnamon.nvim": { "branch": "master", "commit": "c406ffda3a0302f32c23b24ab756ea20467d6578" }, "cinnamon.nvim": { "branch": "master", "commit": "c406ffda3a0302f32c23b24ab756ea20467d6578" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
@ -9,8 +9,8 @@
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"copilot.lua": { "branch": "master", "commit": "03f825956ec49e550d07875d867ea6e7c4dc8c00" }, "conform.nvim": { "branch": "master", "commit": "34b81e70da83e26c048290204de44268eb59814e" },
"distant.nvim": { "branch": "v0.3", "commit": "de7288b1af6fdb2d2e7a8aa00f07a236261c2491" }, "copilot.lua": { "branch": "master", "commit": "f7612f5af4a7d7615babf43ab1e67a2d790c13a6" },
"dressing.nvim": { "branch": "master", "commit": "6f212262061a2120e42da0d1e87326e8a41c0478" }, "dressing.nvim": { "branch": "master", "commit": "6f212262061a2120e42da0d1e87326e8a41c0478" },
"fidget.nvim": { "branch": "main", "commit": "60404ba67044c6ab01894dd5bf77bd64ea5e09aa" }, "fidget.nvim": { "branch": "main", "commit": "60404ba67044c6ab01894dd5bf77bd64ea5e09aa" },
"friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" }, "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
@ -18,40 +18,38 @@
"impatient.nvim": { "branch": "main", "commit": "47302af74be7b79f002773011f0d8e85679a7618" }, "impatient.nvim": { "branch": "main", "commit": "47302af74be7b79f002773011f0d8e85679a7618" },
"instant.nvim": { "branch": "master", "commit": "294b6d08143b3db8f9db7f606829270149e1a786" }, "instant.nvim": { "branch": "master", "commit": "294b6d08143b3db8f9db7f606829270149e1a786" },
"lazy.nvim": { "branch": "main", "commit": "aedcd79811d491b60d0a6577a9c1701063c2a609" }, "lazy.nvim": { "branch": "main", "commit": "aedcd79811d491b60d0a6577a9c1701063c2a609" },
"leap.nvim": { "branch": "main", "commit": "90ca1ded0608c891ba7a63de059ce5bc8533f060" }, "lspkind.nvim": { "branch": "master", "commit": "1735dd5a5054c1fb7feaf8e8658dbab925f4f0cf" },
"ltex-extra.nvim": { "branch": "master", "commit": "42dd3572cb09b52a137e91e515f2dff5eb631b1e" },
"lualine.nvim": { "branch": "master", "commit": "7d131a8d3ba5016229e8a1d08bf8782acea98852" }, "lualine.nvim": { "branch": "master", "commit": "7d131a8d3ba5016229e8a1d08bf8782acea98852" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "21d33d69a81f6351e5a5f49078b2e4f0075c8e73" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "21d33d69a81f6351e5a5f49078b2e4f0075c8e73" },
"mason-nvim-dap.nvim": { "branch": "main", "commit": "3614a39aae98ccd34124b072939d6283853b3dd2" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
"mason.nvim": { "branch": "main", "commit": "3b5068f0fc565f337d67a2d315d935f574848ee7" }, "mason.nvim": { "branch": "main", "commit": "3b5068f0fc565f337d67a2d315d935f574848ee7" },
"mini.animate": { "branch": "main", "commit": "82519630b2760ffc516ebc387bef632f9c07b9f5" },
"nerdy.nvim": { "branch": "main", "commit": "7c9a4ea4a9ca7063e86dbcf7ce0f233cb59bdc10" },
"none-ls.nvim": { "branch": "main", "commit": "4715e3e0480152dbbca1a3b5d09f070508a54691" },
"nvim-autopairs": { "branch": "master", "commit": "c6139ca0d5ad7af129ea6c89cb4c56093f2c034a" }, "nvim-autopairs": { "branch": "master", "commit": "c6139ca0d5ad7af129ea6c89cb4c56093f2c034a" },
"nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" }, "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" },
"nvim-colorizer.lua": { "branch": "master", "commit": "85855b38011114929f4058efc97af1059ab3e41d" }, "nvim-colorizer.lua": { "branch": "master", "commit": "85855b38011114929f4058efc97af1059ab3e41d" },
"nvim-dap": { "branch": "master", "commit": "fc880e82059eb21c0fa896be60146e5f17680648" }, "nvim-dap": { "branch": "master", "commit": "fc880e82059eb21c0fa896be60146e5f17680648" },
"nvim-dap-ui": { "branch": "master", "commit": "9720eb5fa2f41988e8770f973cd11b76dd568a5d" }, "nvim-dap-ui": { "branch": "master", "commit": "9720eb5fa2f41988e8770f973cd11b76dd568a5d" },
"nvim-ghost.nvim": { "branch": "main", "commit": "a1ca0b2dac59881066d7ac9373cf64d59ba29d6a" }, "nvim-ghost.nvim": { "branch": "main", "commit": "a1ca0b2dac59881066d7ac9373cf64d59ba29d6a" },
"nvim-lspconfig": { "branch": "master", "commit": "ec7d51a619049c7c597f469f81ea199db6794651" }, "nvim-lspconfig": { "branch": "master", "commit": "c932a56bf25167b1e88d2a1ebe35bb774b41019a" },
"nvim-tmux-navigation": { "branch": "main", "commit": "4898c98702954439233fdaf764c39636681e2861" }, "nvim-tmux-navigation": { "branch": "main", "commit": "4898c98702954439233fdaf764c39636681e2861" },
"nvim-treesitter": { "branch": "master", "commit": "18aa5ae3fd7245137bc41b5348102fe254405509" }, "nvim-treesitter": { "branch": "master", "commit": "63ca90eaa3ce1cc668add8828a9e3d6728dbbdf1" },
"nvim-treesitter-context": { "branch": "master", "commit": "b8d1ffe58a88e0356da56b167373e89c4579ce15" }, "nvim-treesitter-context": { "branch": "master", "commit": "b8d1ffe58a88e0356da56b167373e89c4579ce15" },
"nvim-web-devicons": { "branch": "master", "commit": "0bb67ef952ea3eb7b1bac9c011281471d99a27bc" }, "nvim-web-devicons": { "branch": "master", "commit": "4adea17610d140a99c313e3f79a9dc01825d59ae" },
"oil.nvim": { "branch": "master", "commit": "132b4ea0740c417b9d717411cab4cf187e1fd095" }, "oil.nvim": { "branch": "master", "commit": "c437f3c5b0da0a9cc6a222d87212cce11b80ba75" },
"orgmode": { "branch": "master", "commit": "36424ff2491ee3d2efb2a074a5ed1862a6d060c6" },
"pastify.nvim": { "branch": "main", "commit": "47317b9bb7bf5fb7dfd994a6eb9bec8f00628dc0" }, "pastify.nvim": { "branch": "main", "commit": "47317b9bb7bf5fb7dfd994a6eb9bec8f00628dc0" },
"plenary.nvim": { "branch": "master", "commit": "4f71c0c4a196ceb656c824a70792f3df3ce6bb6d" }, "plenary.nvim": { "branch": "master", "commit": "4f71c0c4a196ceb656c824a70792f3df3ce6bb6d" },
"presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" },
"rustaceanvim": { "branch": "master", "commit": "b44e1db9056d74cc491aa4a3f625f8bdca0d6743" }, "rustaceanvim": { "branch": "master", "commit": "44465eec3c1b9f7c6620274218fd8e9e60d6618e" },
"telescope.nvim": { "branch": "master", "commit": "7011eaae0ac1afe036e30c95cf80200b8dc3f21a" }, "telescope.nvim": { "branch": "master", "commit": "7011eaae0ac1afe036e30c95cf80200b8dc3f21a" },
"tla.nvim": { "branch": "master", "commit": "e419c75e805ab6d9967c7325bf35734c372d3d4b" }, "tla.nvim": { "branch": "master", "commit": "e419c75e805ab6d9967c7325bf35734c372d3d4b" },
"todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" }, "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" },
"typst.vim": { "branch": "main", "commit": "ff57d27cf5ee7427941a63fb537714f9a80e0246" }, "typst.vim": { "branch": "main", "commit": "ff57d27cf5ee7427941a63fb537714f9a80e0246" },
"undotree": { "branch": "master", "commit": "9dbbf3b7d19dda0d22ceca461818e4739ad8154d" }, "undotree": { "branch": "master", "commit": "9dbbf3b7d19dda0d22ceca461818e4739ad8154d" },
"vim-alloy": { "branch": "master", "commit": "5bd57c4890be39e221dd3e1f6735457dce454bbd" }, "vim-alloy": { "branch": "master", "commit": "5bd57c4890be39e221dd3e1f6735457dce454bbd" },
"vim-be-good": { "branch": "master", "commit": "4fa57b7957715c91326fcead58c1fa898b9b3625" },
"vim-jukit": { "branch": "master", "commit": "73214c9a8abc4b6aa7a6266b5bc2ddbf8b3e3c00" }, "vim-jukit": { "branch": "master", "commit": "73214c9a8abc4b6aa7a6266b5bc2ddbf8b3e3c00" },
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }, "vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
"vim-tpipeline": { "branch": "master", "commit": "649f079a0bee19565978b82b672d831c6641d952" }, "vim-tpipeline": { "branch": "master", "commit": "649f079a0bee19565978b82b672d831c6641d952" },
"vimtex": { "branch": "master", "commit": "afac40289eed684ab1301390dcd246b1609f8119" }, "vimtex": { "branch": "master", "commit": "0cb12b4092cca1e5328a181c76b3ab8c088d52f1" },
"zen-mode.nvim": { "branch": "main", "commit": "78557d972b4bfbb7488e17b5703d25164ae64e6a" } "zen-mode.nvim": { "branch": "main", "commit": "78557d972b4bfbb7488e17b5703d25164ae64e6a" }
} }

View file

@ -1,75 +0,0 @@
--KEYBINDINGS
local map = vim.api.nvim_set_keymap
local opts = { noremap = true, silent = true }
-- Move to previous/next
map('n', '<A-h>', '<Cmd>BufferLineCyclePrev<CR>', opts)
map('n', '<A-l>', '<Cmd>BufferLineCycleNext<CR>', opts)
-- Re-order to previous/next
map('n', '<A-H>', '<Cmd>BufferLineMovePrev<CR>', opts)
map('n', '<A-L>', '<Cmd>BufferLineMoveNext<CR>', opts)
-- Goto buffer in position...
map('n', '<A-1>', '<Cmd>BufferLineGoToBuffer 1<CR>', opts)
map('n', '<A-2>', '<Cmd>BufferLineGoToBuffer 2<CR>', opts)
map('n', '<A-3>', '<Cmd>BufferLineGoToBuffer 3<CR>', opts)
map('n', '<A-4>', '<Cmd>BufferLineGoToBuffer 4<CR>', opts)
map('n', '<A-5>', '<Cmd>BufferLineGoToBuffer 5<CR>', opts)
map('n', '<A-6>', '<Cmd>BufferLineGoToBuffer 6<CR>', opts)
map('n', '<A-7>', '<Cmd>BufferLineGoToBuffer 7<CR>', opts)
map('n', '<A-8>', '<Cmd>BufferLineGoToBuffer 8<CR>', opts)
map('n', '<A-9>', '<Cmd>BufferLineGoToBuffer 9<CR>', opts)
-- Close buffer
map('n', '<A-c>', '<Cmd>BufferLinePickClose<CR>', opts)
-- Set bufferline's options
require("bufferline").setup({
options = {
mode = "buffers",
numbers = "none",
close_command = "bdelete! %d",
right_mouse_command = "bdelete! %d",
left_mouse_command = "buffer %d",
middle_mouse_command = "bdelete! %d",
indicator = {
icon = "",
style = "icon",
},
buffer_close_icon = '',
modified_icon = '',
close_icon = '',
left_trunc_marker = '',
right_trunc_marker = '',
max_name_length = 18,
max_prefix_length = 15,
truncate_names = true,
tab_size = 18,
diagnostics = "nvim_lsp",
diagnostics_update_in_insert = true,
diagnostics_indicator = function(count, level, diagnostics_dict, context)
return "(" .. count .. ")"
end,
color_icons = true,
show_buffer_icons = true,
show_buffer_close_icons = true,
show_buffer_default_icon = true,
show_close_icon = true,
show_tab_indicators = true,
show_duplicate_prefix = true,
persist_buffer_sort = true,
separator_style = "slant",
enforce_regular_tabs = true,
always_show_bufferline = true,
hover = {
enabled = true,
delay = 200,
reveal = { 'close' }
},
sort_by = 'insert_after_current',
custom_filter = function(buf_number, buf_numbers)
-- filter out filetypes you don't want to see
if vim.bo[buf_number].filetype ~= "" then
return true
end
end,
}
})

View file

@ -10,10 +10,23 @@ end
require("luasnip/loaders/from_vscode").lazy_load() require("luasnip/loaders/from_vscode").lazy_load()
local check_backspace = function() local check_backspace = function()
local col = vim.fn.col "." - 1 local col = vim.fn.col(".") - 1
return col == 0 or vim.fn.getline("."):sub(col, col):match "%s" return col == 0 or vim.fn.getline("."):sub(col, col):match("%s")
end end
local lspkind_status_ok, lspkind = pcall(require, "lspkind")
if not lspkind_status_ok then
return
end
cmp.event:on("menu_opened", function()
vim.b.copilot_suggestion_hidden = true
end)
cmp.event:on("menu_closed", function()
vim.b.copilot_suggestion_hidden = false
end)
-- 󰃐 󰆩 󰙅 󰛡  󰅲 some other good icons -- 󰃐 󰆩 󰙅 󰛡  󰅲 some other good icons
local kind_icons = { local kind_icons = {
Text = "󰉿", Text = "󰉿",
@ -46,26 +59,27 @@ local kind_icons = {
} }
-- find more here: https://www.nerdfonts.com/cheat-sheet -- find more here: https://www.nerdfonts.com/cheat-sheet
cmp.setup { cmp.setup({
snippet = { snippet = {
expand = function(args) expand = function(args)
luasnip.lsp_expand(args.body) -- For `luasnip` users. luasnip.lsp_expand(args.body) -- For `luasnip` users.
end, end,
}, },
mapping = { mapping = {
["<C-b>"] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }), ["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }), ["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-u>"] = cmp.mapping.scroll_docs(-4),
["<C-d>"] = cmp.mapping.scroll_docs(4),
["<C-e>"] = cmp.mapping.abort(),
["<C-y>"] = cmp.mapping(
cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Insert,
select = true,
}),
{ "i", "c" }
),
["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), ["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
["<C-y>"] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
["<C-e>"] = cmp.mapping {
i = cmp.mapping.abort(),
c = cmp.mapping.close(),
},
-- Accept currently selected item. If none selected, do nothing. -- Accept currently selected item. If none selected, do nothing.
["<CR>"] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = false
},
["<C-k>"] = cmp.mapping(function(fallback) ["<C-k>"] = cmp.mapping(function(fallback)
if luasnip.expandable() then if luasnip.expandable() then
luasnip.expand() luasnip.expand()
@ -83,47 +97,29 @@ cmp.setup {
else else
fallback() fallback()
end end
end end),
),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
else
fallback()
end
end, {
"i",
"s",
}),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
else
fallback()
end
end, {
"i",
"s",
}),
}, },
formatting = { formatting = {
fields = { "kind", "abbr", "menu" }, fields = { "kind", "abbr", "menu" },
format = function(entry, vim_item) format = lspkind.cmp_format({
-- Kind icons mode = "symbol_text", -- show only symbol annotations
-- if vim.tbl_contains({ "nvim_lsp" }, entry.source.name) then maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters)
-- tailwind = require("tailwindcss-colorizer-cmp") -- can also be a function to dynamically calculate max width such as
-- return tailwind.formatter(entry, vim_item) -- maxwidth = function() return math.floor(0.45 * vim.o.columns) end,
-- else ellipsis_char = "...", -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first)
vim_item.kind = string.format('[%s %s]', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind show_labelDetails = true, -- show labelDetails in menu. Disabled by default
-- The function below will be called before any actual modifications from lspkind
-- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30))
before = function(entry, vim_item)
vim_item.menu = ({ vim_item.menu = ({
nvim_lsp = "[LSP]", nvim_lsp = "[LSP]",
["vim-dadbod-completion"] = "[󰆼]",
nvim_lua = "[LSP]", nvim_lua = "[LSP]",
path = "[Path]", path = "[Path]",
})[entry.source.name] })[entry.source.name]
return vim_item return vim_item
-- end
end, end,
}),
}, },
sorting = { sorting = {
comparators = { comparators = {
@ -133,8 +129,8 @@ cmp.setup {
--Make entries that start with underline appear after --Make entries that start with underline appear after
function(entry1, entry2) function(entry1, entry2)
local _, entry1_under = entry1.completion_item.label:find "^_+" local _, entry1_under = entry1.completion_item.label:find("^_+")
local _, entry2_under = entry2.completion_item.label:find "^_+" local _, entry2_under = entry2.completion_item.label:find("^_+")
entry1_under = entry1_under or 0 entry1_under = entry1_under or 0
entry2_under = entry2_under or 0 entry2_under = entry2_under or 0
if entry1_under > entry2_under then if entry1_under > entry2_under then
@ -143,51 +139,17 @@ cmp.setup {
return true return true
end end
end, end,
}
}, },
sources = cmp.config.sources(
{
{
name = "nvim_lsp",
entry_filter = function(entry, context)
local kind = entry:get_kind()
vim.api.nvim_out_write(kind .. '\n')
if kind == "Text" then return false end
return true
end
}, },
sources = cmp.config.sources({
{ name = 'orgmode' }, { name = "nvim_lsp" },
{ name = 'nvim_lua' }, { name = "nvim_lua" },
{ name = 'luasnip' }, { name = "luasnip" },
--{ name = "vim-dadbod-completion" },
{ name = "path" }, { name = "path" },
}, }, {
{
--This sources will only show up if there aren't any sources from the other list
{ name = "buffer", keyword_length = 5 }, { name = "buffer", keyword_length = 5 },
} }),
), })
confirm_opts = {
behavior = cmp.ConfirmBehavior.Replace,
select = false,
},
window = {
documentation = cmp.config.window.bordered(),
completion = cmp.config.window.bordered({
winhighlight = "Normal:Pmenu,FloatBorder:Pmenu,CursorLine:PmenuSel,Search:None"
})
}, local cmp_autopairs = require("nvim-autopairs.completion.cmp")
experimental = { cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
ghost_text = false,
native_menu = false,
},
}
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
cmp.event:on(
'confirm_done',
cmp_autopairs.on_confirm_done()
)

View file

@ -0,0 +1,10 @@
require("conform").setup({
formatters_by_ft = {
python = { "black" },
javascript = { "prettierd" },
markdown = { "mdformat" },
},
format_on_save = {
lsp_fallback = true,
},
})

View file

@ -1,12 +1,13 @@
require('copilot').setup({ require('copilot').setup({
suggestion = { suggestion = {
enabled = true, enabled = true,
auto_trigger = true, auto_trigger = false,
debounce = 75, debounce = 75,
keymap = { keymap = {
accept = "<C-h>", accept = "<C-h>",
accept_word = false, accept_word = false,
accept_line = false, accept_line = false,
--Option key + ] or [
next = "<M-]>", next = "<M-]>",
prev = "<M-[>", prev = "<M-[>",
dismiss = "<C-]>", dismiss = "<C-]>",

View file

@ -5,13 +5,18 @@ dap.adapters.lldb = {
port = "${port}", port = "${port}",
executable = { executable = {
command = '/Users/afonso/.local/share/nvim/mason/bin/codelldb', command = '/Users/afonso/.local/share/nvim/mason/bin/codelldb',
args = {"--port", "${port}"}, args = { "--port", "${port}" },
} }
} }
dap.adapters.codelldb = {
type = 'server',
host = '127.0.0.1',
port = 13000
}
dap.configurations.c = { dap.configurations.c = {
{ {
name = "codelldb: With args", name = "Manually start codelldb",
type = "codelldb", type = "codelldb",
request = "launch", request = "launch",
program = function() program = function()
@ -24,6 +29,19 @@ dap.configurations.c = {
cwd = '${workspaceFolder}', cwd = '${workspaceFolder}',
stopOnEntry = false, stopOnEntry = false,
}, },
{
name = "Auto start codelldb",
type = "lldb",
request = "launch",
program = function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
args = function()
local args = vim.fn.input('Arguments: ')
return args ~= '' and { args } or nil
end,
cwd = '${workspaceFolder}',
stopOnEntry = false,
},
} }

View file

@ -1,49 +1,49 @@
local lazy = require('lazy') local lazy = require("lazy")
lazy.setup({ lazy.setup({
'lewis6991/impatient.nvim', "lewis6991/impatient.nvim",
-------------------------------------------THEMES------------------------------------------ -------------------------------------------THEMES------------------------------------------
{ {
'catppuccin/nvim', "catppuccin/nvim",
name = "catppuccin", name = "catppuccin",
lazy = false, lazy = false,
priority = 1000, priority = 1000,
opts = {} opts = {},
}, },
'sainnhe/gruvbox-material', "sainnhe/gruvbox-material",
-------------------------------------------------------MFP--------------------------------- -------------------------------------------------------MFP---------------------------------
{ {
'susliko/tla.nvim', "susliko/tla.nvim",
opts = {} opts = {},
}, },
-------------------------------------------------------QOL--------------------------------- -------------------------------------------------------QOL---------------------------------
{ {
'jbyuki/instant.nvim', "jbyuki/instant.nvim",
config = function() config = function()
vim.g.instant_username = 'afonso' vim.g.instant_username = "afonso"
end end,
}, },
'vimpostor/vim-tpipeline', "vimpostor/vim-tpipeline",
{ {
'TobinPalmer/pastify.nvim', "TobinPalmer/pastify.nvim",
cmd = { 'Pastify' }, cmd = { "Pastify" },
opts = {} opts = {},
}, },
--Python notebooks --Python notebooks
{ {
'luk400/vim-jukit', "luk400/vim-jukit",
config = function() config = function()
require 'plugins.jukit' require("plugins.jukit")
end, end,
ft = { 'python', 'json' } ft = { "python", "json" },
}, },
{ {
@ -51,49 +51,49 @@ lazy.setup({
cmd = "Copilot", cmd = "Copilot",
event = "InsertEnter", event = "InsertEnter",
config = function() config = function()
require 'plugins.copilot' require("plugins.copilot")
end, end,
}, },
--Nvim to browser --Nvim to browser
'subnut/nvim-ghost.nvim', "subnut/nvim-ghost.nvim",
{ {
'declancm/cinnamon.nvim', "declancm/cinnamon.nvim",
opts = { opts = {
scroll_limit = 10000, scroll_limit = 10000,
always_scroll = true, always_scroll = true,
} },
}, },
{ {
"folke/todo-comments.nvim", "folke/todo-comments.nvim",
event = "VeryLazy", event = "VeryLazy",
dependencies = { "nvim-lua/plenary.nvim" }, dependencies = { "nvim-lua/plenary.nvim" },
opts = {} opts = {},
}, },
{ {
'folke/zen-mode.nvim', "folke/zen-mode.nvim",
event = "VeryLazy", event = "VeryLazy",
opts = { opts = {
vim.keymap.set('n', '<leader>z', '<Cmd> ZenMode <CR>', { noremap = true, silent = true }) vim.keymap.set("n", "<leader>z", "<Cmd> ZenMode <CR>", { noremap = true, silent = true }),
} },
}, },
--Change add and remove surroundings from words --Change add and remove surroundings from words
'tpope/vim-surround', "tpope/vim-surround",
{ {
'NvChad/nvim-colorizer.lua', "NvChad/nvim-colorizer.lua",
opts = {} opts = {},
}, },
'mbbill/undotree', "mbbill/undotree",
--Tmux navigation --Tmux navigation
{ {
'alexghergh/nvim-tmux-navigation', "alexghergh/nvim-tmux-navigation",
opts = { opts = {
disable_when_zoomed = true, -- defaults to false disable_when_zoomed = true, -- defaults to false
keybindings = { keybindings = {
@ -101,56 +101,57 @@ lazy.setup({
down = "<F6>", down = "<F6>",
up = "<F7>", up = "<F7>",
right = "<F8>", right = "<F8>",
} },
} },
}, },
-- Rename variable pop up -- Rename variable pop up
'stevearc/dressing.nvim', "stevearc/dressing.nvim",
{ {
'windwp/nvim-autopairs', "windwp/nvim-autopairs",
config = function() config = function()
require 'plugins.autopairs' require("plugins.autopairs")
end end,
}, },
'nvim-tree/nvim-web-devicons', "nvim-tree/nvim-web-devicons",
{ {
'nvim-lualine/lualine.nvim', "nvim-lualine/lualine.nvim",
dependencies = { 'nvim-tree/nvim-web-devicons', opt = true }, dependencies = { "nvim-tree/nvim-web-devicons", opt = true },
config = function() config = function()
require 'plugins.lualine' require("plugins.lualine")
end end,
}, },
{ {
'stevearc/oil.nvim', "stevearc/oil.nvim",
opts = {} opts = {},
}, },
-------------------------------------------------------LSP---------------------------------------------- -------------------------------------------------------LSP----------------------------------------------
{ {
'hrsh7th/nvim-cmp', "hrsh7th/nvim-cmp",
dependencies = { dependencies = {
'hrsh7th/cmp-nvim-lsp', -- lsp "hrsh7th/cmp-nvim-lsp", -- lsp
'hrsh7th/cmp-nvim-lua', -- Nvim API completions "hrsh7th/cmp-nvim-lua", -- Nvim API completions
'hrsh7th/cmp-nvim-lsp-signature-help', -- Show function signatures "hrsh7th/cmp-nvim-lsp-signature-help", -- Show function signatures
'hrsh7th/cmp-buffer', --buffer completions "hrsh7th/cmp-buffer", --buffer completions
'hrsh7th/cmp-path', --path completions "hrsh7th/cmp-path", --path completions
'hrsh7th/cmp-cmdline', --cmdline completions "hrsh7th/cmp-cmdline", --cmdline completions
'L3MON4D3/LuaSnip', "L3MON4D3/LuaSnip",
'rafamadriz/friendly-snippets', "rafamadriz/friendly-snippets",
'saadparwaiz1/cmp_luasnip', "saadparwaiz1/cmp_luasnip",
"onsails/lspkind.nvim", --lspkind icons
}, },
config = function() config = function()
require 'plugins.cmp' require("plugins.cmp")
end end,
}, },
--LSP Status --LSP Status
'j-hui/fidget.nvim', "j-hui/fidget.nvim",
{ {
"rcarriga/nvim-dap-ui", "rcarriga/nvim-dap-ui",
@ -169,7 +170,7 @@ lazy.setup({
dap.listeners.before.event_exited["dapui_config"] = function() dap.listeners.before.event_exited["dapui_config"] = function()
dapui.close() dapui.close()
end end
end end,
}, },
{ {
"jay-babu/mason-nvim-dap.nvim", "jay-babu/mason-nvim-dap.nvim",
@ -179,84 +180,89 @@ lazy.setup({
"mfussenegger/nvim-dap", "mfussenegger/nvim-dap",
}, },
opts = { opts = {
handlers = {} handlers = {},
}, },
}, },
{ {
"mfussenegger/nvim-dap", "mfussenegger/nvim-dap",
config = function() config = function()
require 'plugins.dap' require("plugins.dap")
end end,
}, },
{ {
'williamboman/mason.nvim', "williamboman/mason.nvim",
config = function() config = function()
require 'plugins.mason' require("plugins.mason")
end end,
}, },
'williamboman/mason-lspconfig.nvim', "williamboman/mason-lspconfig.nvim",
{ {
'neovim/nvim-lspconfig', "neovim/nvim-lspconfig",
config = function() config = function()
require 'plugins.lspconfig' require("plugins.lspconfig")
end end,
}, },
{ {
'nvimtools/none-ls.nvim', "stevearc/conform.nvim",
event = "VeryLazy",
config = function() config = function()
require 'plugins.none-ls' require("plugins.conform")
end end,
}, },
{ {
'lervag/vimtex', "lervag/vimtex",
config = function() config = function()
require 'plugins.vimtex' require("plugins.vimtex")
end end,
}, },
{ {
'mrcjkb/rustaceanvim', "mrcjkb/rustaceanvim",
version = '^4', -- Recommended version = "^4", -- Recommended
ft = { 'rust' }, ft = { "rust" },
}, },
"barreiroleo/ltex-extra.nvim",
------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------
-- Syntax Highlighting -- Syntax Highlighting
{ {
'nvim-treesitter/nvim-treesitter', "nvim-treesitter/nvim-treesitter",
config = function() config = function()
require 'plugins.treesitter' require("plugins.treesitter")
end end,
}, },
'kaarmu/typst.vim', "kaarmu/typst.vim",
--Sticky headers --Sticky headers
{ {
'nvim-treesitter/nvim-treesitter-context', "nvim-treesitter/nvim-treesitter-context",
config = function() config = function()
require 'plugins.treesitter-context' require("plugins.treesitter-context")
end end,
}, },
"runoshun/vim-alloy", "runoshun/vim-alloy",
--does so much --does so much
{ {
'nvim-telescope/telescope.nvim', "nvim-telescope/telescope.nvim",
tag = '0.1.4', tag = "0.1.4",
-- or , branch = '0.1.x', -- or , branch = '0.1.x',
dependencies = { 'nvim-lua/plenary.nvim' }, dependencies = { "nvim-lua/plenary.nvim" },
config = function() require('plugins.telescope') end config = function()
require("plugins.telescope")
end,
}, },
--Discord Rich Presence --Discord Rich Presence
'andweeb/presence.nvim' "andweeb/presence.nvim",
--Vim be good
'ThePrimeagen/vim-be-good',
}) })

View file

@ -1,75 +1,91 @@
local mason_lspconfig = require "mason-lspconfig" local mason_lspconfig = require("mason-lspconfig")
local lspconfig = require "lspconfig" local lspconfig = require("lspconfig")
mason_lspconfig.setup({ mason_lspconfig.setup({
automatic_installation = false automatic_installation = false,
})
-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev)
-- Enable completion triggered by <c-x><c-o>
vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
local telescope = require("telescope.builtin")
local conform = require("conform")
-- Mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local bufopts = { noremap = true, silent = true, buffer = ev.buf }
vim.keymap.set("n", "<space>e", vim.diagnostic.open_float, bufopts)
vim.keymap.set("n", "<space>q", vim.diagnostic.setloclist, bufopts)
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, bufopts)
vim.keymap.set("n", "gd", telescope.lsp_definitions, bufopts)
vim.keymap.set("n", "K", vim.lsp.buf.hover, bufopts)
vim.keymap.set("n", "gi", telescope.lsp_implementations, bufopts)
vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, bufopts)
vim.keymap.set("n", "<space>D", vim.lsp.buf.type_definition, bufopts)
vim.keymap.set("n", "<space>rn", vim.lsp.buf.rename, bufopts)
vim.keymap.set("n", "<space>ca", vim.lsp.buf.code_action, bufopts)
vim.keymap.set("n", "gr", telescope.lsp_references, bufopts)
vim.keymap.set("n", "<space>ge", function() vim.diagnostic.goto_next() end, bufopts)
vim.keymap.set("n", "<space>gE", function() vim.diagnostic.goto_prev() end, bufopts)
vim.keymap.set("n", "<space>fo", function() conform.format({ lsp_fallback = true }) end, bufopts)
end,
})
-- ADD NVIM CMP AS A CAPABILITY
local lsp_defaults = lspconfig.util.default_config
local capabilities =
vim.tbl_deep_extend("force", lsp_defaults.capabilities, require("cmp_nvim_lsp").default_capabilities())
mason_lspconfig.setup_handlers({
-- This is a default handler that will be called for each installed server (also for new servers that are installed during a session)
function(server_name)
lspconfig[server_name].setup({
capabilities = capabilities,
})
end,
["lua_ls"] = function()
lspconfig["lua_ls"].setup({
capabilities = capabilities,
settings = {
Lua = {
library = {
unpack(vim.api.nvim_get_runtime_file('', true))
},
diagnostics = {
globals = { 'vim' },
},
},
},
})
end,
["hls"] = function()
lspconfig["hls"].setup({
capabilities = capabilities,
filetypes = { 'haskell', 'lhaskell', 'cabal' },
})
end,
["ltex"] = function()
lspconfig["ltex"].setup({
capabilities = capabilities,
--Local on attach
on_attach = function(_, _)
-- rest of your on_attach process.
require("ltex_extra").setup()
end,
})
end
}) })
-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
local on_attach = function(client, bufnr)
-- Enable completion triggered by <c-x><c-o>
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
-- Mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local opts = { noremap = true, silent = true }
local bufopts = { noremap = true, silent = true, buffer = bufnr }
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
vim.keymap.set('n', '<space>ge', function() vim.diagnostic.goto_next() end, bufopts)
vim.keymap.set('n', '<space>gE', function() vim.diagnostic.goto_prev() end, bufopts)
vim.keymap.set('n', '<space>fo', function() vim.lsp.buf.format { async = true } end, bufopts)
vim.keymap.set('n', '<space>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, bufopts)
end
-- ADD NVIM CMP AS A CAPABILITY
local lsp_defaults = lspconfig.util.default_config
local capabilities = vim.tbl_deep_extend(
'force',
lsp_defaults.capabilities,
require('cmp_nvim_lsp').default_capabilities()
)
mason_lspconfig.setup_handlers {
-- This is a default handler that will be called for each installed server (also for new servers that are installed during a session)
function(server_name)
lspconfig[server_name].setup {
on_attach = on_attach,
flags = lsp_flags,
capabilities = capabilities,
}
end,
}
lspconfig["ocamllsp"].setup {
on_attach = on_attach,
flags = lsp_flags,
capabilities = capabilities,
}
vim.g.rustaceanvim = { vim.g.rustaceanvim = {
server = { server = {
on_attach = on_attach, capabilities = capabilities,
flags = lsp_flags,
capabilities = capabilities
}, },
} }

View file

@ -1,8 +0,0 @@
local M = {}
M.change_theme = function(scheme)
vim.cmd('colorscheme ' .. scheme)
end
return M

View file

@ -1,6 +0,0 @@
local present, silicon = pcall(require,'silicon')
-- Generate image of lines in a visual selection
vim.keymap.set('v', '<Leader>s', function() silicon.visualise_api() end )
-- Generate image of a whole buffer, with lines in a visual selection highlighted
vim.keymap.set('v', '<Leader>bs', function() silicon.visualise_api({to_clip = true, show_buf = true}) end )

View file

@ -0,0 +1,208 @@
" Vim syntax file
" Language: Why3
" Filenames: *.why *.mlw
"
" Adapted from syntax file for Ocaml
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax") && b:current_syntax == "why3"
finish
endif
" Why3 is case sensitive.
syn case match
" " Script headers highlighted like comments
" syn match whyComment "^#!.*"
" lowercase identifier - the standard way to match
syn match whyLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/
syn match whyKeyChar "|"
" Errors
syn match whyBraceErr "}"
syn match whyBrackErr "\]"
syn match whyParenErr ")"
syn match whyCommentErr "\*)"
syn match whyCountErr "\<downto\>"
syn match whyCountErr "\<to\>"
syn match whyDoErr "\<do\>"
syn match whyDoneErr "\<done\>"
syn match whyThenErr "\<then\>"
syn match whyTheoryErr "\<theory\>"
syn match whyModuleErr "\<module\>"
syn match whyEndErr "\<end\>"
" Some convenient clusters
syn cluster whyAllErrs contains=whyBraceErr,whyBrackErr,whyParenErr,whyCommentErr,whyCountErr,whyDoErr,whyDoneErr,whyEndErr,whyThenErr,whyTheoryErr,whyModuleErr
syn cluster whyContained contains=whyTodo,whyImport,whyExport,whyTheoryContents,whyModuleContents,whyScopeContents,whyModuleKeyword
" ,whyPreDef,whyModParam,whyModParam1,whyPreMPRestr,whyMPRestr,whyMPRestr1,whyMPRestr2,whyMPRestr3,whyModRHS,whyFuncWith,whyFuncStruct,whyModTypeRestr,whyModTRWith,whyWith,whyWithRest,whyModType,whyFullMod,whyVal
" Enclosing delimiters
syn region whyEncl transparent matchgroup=whyKeyChar start="(" matchgroup=whyKeyChar end=")" contains=ALLBUT,@whyContained,whyParenErr
syn region whyEncl transparent matchgroup=whyKeyChar start="{" matchgroup=whyKeyChar end="}" contains=ALLBUT,@whyContained,whyBraceErr
syn region whyEncl transparent start="\[" end="\]" contains=ALLBUT,@whyContained,whyBrackErr
" Comments
syn region whyComment start="(\*" end="\*)" contains=whyComment,whyTodo
syn match whyOperator "(\*)"
syn keyword whyTodo contained TODO FIXME XXX NOTE
" Blocks
" FIXME? match and try should detect the absence of "with" ?
syn region whyEnd matchgroup=whyKeyword start="\<begin\>" matchgroup=whyKeyword end="\<end\>" contains=ALLBUT,@whyContained,whyEndErr
syn region whyEnd matchgroup=whyKeyword start="\<match\>" matchgroup=whyKeyword end="\<end\>" contains=ALLBUT,@whyContained,whyEndErr
syn region whyEnd matchgroup=whyKeyword start="\<try\>" matchgroup=whyKeyword end="\<end\>" contains=ALLBUT,@whyContained,whyEndErr
syn region whyNone matchgroup=whyKeyword start="\<for\>" matchgroup=whyKeyword end="\<\(to\|downto\)\>" contains=ALLBUT,@whyContained,whyCountErr
syn region whyDo matchgroup=whyKeyword start="\<do\>" matchgroup=whyKeyword end="\<done\>" contains=ALLBUT,@whyContained,whyDoneErr
syn region whyNone matchgroup=whyKeyword start="\<if\>" matchgroup=whyKeyword end="\<then\>" contains=ALLBUT,@whyContained,whyThenErr
" Theories and modules
syn region whyTheory matchgroup=whyKeyword start="\<theory\>" matchgroup=whyModSpec end="\<\u\(\w\|'\)*\>" contains=@whyAllErrs,whyComment skipwhite skipempty nextgroup=whyModuleContents
syn region whyModule matchgroup=whyKeyword start="\<module\>" matchgroup=whyModSpec end="\<\u\(\w\|'\)*\>" contains=@whyAllErrs,whyComment skipwhite skipempty nextgroup=whyModuleContents
syn region whyScope matchgroup=whyKeyword start="\<scope\>" matchgroup=whyModSpec end="\<\u\(\w\|'\)*\>" contains=@whyAllErrs,whyComment,whyImport skipwhite skipempty nextgroup=whyModuleContents
syn region whyModuleContents start="" matchgroup=whyModSpec end="\<end\>" contained contains=ALLBUT,@whyContained,whyEndErr,whyTheory,whyModule
syn region whyNone matchgroup=whyKeyword start="\<\(use\|clone\)\>" matchgroup=whyModSpec end="\<\(\w\+\.\)*\u\(\w\|'\)*\>" contains=@whyAllErrs,whyComment,whyString,whyImport,whyExport
syn keyword whyExport contained export
syn keyword whyImport contained import
syn region whyNone matchgroup=whyKeyword start="\<import\>" matchgroup=whyModSpec end="\<\(\u\(\w\|'\)*\.\)*\u\(\w\|'\)*\>" contains=@whyAllErrs,whyComment
syn region whyNone matchgroup=whyKeyword start="\<\(axiom\|lemma\|goal\)\>" matchgroup=whyNone end="\<\w\(\w\|'\)\>\|" contains=@whyAllErrs,whyComment
syn keyword whyKeyword abstract any as break by
syn keyword whyKeyword coinductive constant continue
syn keyword whyKeyword else epsilon exists exception
syn keyword whyKeyword forall fun function ghost
syn keyword whyKeyword if in inductive
syn keyword whyKeyword label let
syn keyword whyKeyword meta model mutable not
syn keyword whyKeyword partial predicate private
syn keyword whyKeyword raise rec return so then type
syn keyword whyKeyword val while with
syn keyword whyBoolean true false
syn keyword whyType bool float int list map option real range
syn keyword whyType array ref unit
syn keyword whySpec absurd alias assert assume check diverges ensures invariant
syn keyword whySpec pure raises reads requires returns variant writes at old
syn match whyConstructor "(\s*)"
syn match whyConstructor "\u\(\w\|'\)*\>"
syn match whyModPath "\u\(\w\|'\)*\."he=e-1
syn region whyString start=+"+ skip=+\\\\\|\\"+ end=+"+
syn match whyOperator "->"
syn match whyOperator "<->\?"
syn match whyOperator "/\\"
syn match whyOperator "\\/"
syn match whyOperator "&&"
syn match whyOperator "<>"
syn match whyKeyChar "|"
syn match whyKeyChar ";"
" FIXME? is this too inefficient?
syn match whyOperator "[^<>~=:+*/%$&@^.|#!?]=[^<>~=:+*/%$&@^.|#!?]"ms=s+1,me=e-1
syn match whyOperator "^=[^<>~=:+*/%$&@^.|#!?]"me=e-1
syn match whyOperator "[^<>~=:+*/%$&@^.|#!?]=$"ms=s+1
syn match whyAnyVar "\<_\>"
syn match whyNumber "\<-\=\d\(_\|\d\)*\>"
syn match whyNumber "\<-\=0[x|X]\(\x\|_\)\+\>"
syn match whyNumber "\<-\=0[o|O]\(\o\|_\)\+\>"
syn match whyNumber "\<-\=0[b|B]\([01]\|_\)\+\>"
syn match whyFloat "\<-\=\d\+[eE][-+]\=\d\+\>"
syn match whyFloat "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=\>"
syn match whyFloat "\<-\=0[x|X]\x\+\.\?\x*[pP][-+]\=\d\+\>"
" Synchronization
syn sync minlines=50
syn sync maxlines=500
syn sync match whyDoSync grouphere whyDo "\<do\>"
syn sync match whyDoSync groupthere whyDo "\<done\>"
syn sync match whyEndSync grouphere whyEnd "\<\(begin\|match\|try\)\>"
syn sync match whyEndSync groupthere whyEnd "\<end\>"
syn sync match whyTheorySync grouphere whyTheory "\<theory\>"
syn sync match whyTheorySync groupthere whyTheory "\<end\>"
syn sync match whyModuleSync grouphere whyModule "\<module\>"
syn sync match whyModuleSync groupthere whyModule "\<end\>"
syn sync match whyScopeSync grouphere whyScope "\<scope\>"
syn sync match whyScopeSync groupthere whyScope "\<end\>"
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_why_syntax_inits")
if version < 508
let did_why_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink whyBraceErr Error
HiLink whyBrackErr Error
HiLink whyParenErr Error
HiLink whyCommentErr Error
HiLink whyCountErr Error
HiLink whyDoErr Error
HiLink whyDoneErr Error
HiLink whyEndErr Error
HiLink whyThenErr Error
HiLink whyTheoryErr Error
HiLink whyModuleErr Error
HiLink whyComment Comment
HiLink whyModPath Include
HiLink whyModSpec Include
HiLink whyImport Keyword
HiLink whyExport Keyword
HiLink whyModuleKeyword Keyword
HiLink whyConstructor Constant
HiLink whyKeyword Keyword
HiLink whyKeyChar Operator
HiLink whyAnyVar Operator
HiLink whyOperator Operator
HiLink whySpec Identifier
HiLink whyNumber Number
HiLink whyFloat Float
HiLink whyString String
HiLink whyBoolean Boolean
HiLink whyType Type
HiLink whyTodo Todo
HiLink whyEncl Keyword
delcommand HiLink
endif
let b:current_syntax = "why3"
" vim: ts=8