diff --git a/nvim/.config/nvim/lua/plugins/languages/sml.lua b/nvim/.config/nvim/lua/plugins/languages/sml.lua new file mode 100644 index 0000000..440c5d5 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/languages/sml.lua @@ -0,0 +1,30 @@ +return { + { + 'jez/vim-better-sml', + config = function() + vim.g.sml_smlnj_executable = 'smlnj' + end, + keys = { + { + 'rs', + [[:SMLReplStart]], + desc = 'SML start repl' + }, + { + 'rc', + [[:SMLReplClear]], + desc = 'SML clear repl' + }, + { + 'rb', + [[:SMLReplBuild]], + desc = 'SML load current file/CM project in repl' + }, + { + 'ro', + [[:SMLReplOpen]], + desc = 'SML open current structure in repl' + }, + } + } +} diff --git a/nvim/.config/nvim/lua/plugins/lsp.lua b/nvim/.config/nvim/lua/plugins/lsp.lua index 7e0e82b..1860145 100644 --- a/nvim/.config/nvim/lua/plugins/lsp.lua +++ b/nvim/.config/nvim/lua/plugins/lsp.lua @@ -18,6 +18,14 @@ return { } }) + lspconfig.millet.setup({ + root_dir = function(fname) + local util = require("lspconfig.util") + return util.root_pattern(".cm", ".mlb")(fname) + or util.path.dirname(fname) + end + }) + vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('UserLspConfig', {}), callback = function(ev) diff --git a/nvim/.config/nvim/lua/plugins/utils.lua b/nvim/.config/nvim/lua/plugins/utils.lua index 69569a3..56c6659 100644 --- a/nvim/.config/nvim/lua/plugins/utils.lua +++ b/nvim/.config/nvim/lua/plugins/utils.lua @@ -82,5 +82,18 @@ return { -- end -- } } + }, + { + 'stevearc/conform.nvim', + opts = { + formatters_by_ft = { + rust = { 'rustfmt', lsp_format = 'fallback' }, + sml = { 'smlfmt' }, + }, + format_on_save = { + timeout_ms = 500, + lsp_format = 'fallback', + } + } } }