mirror of
https://github.com/LunarVim/LunarVim.git
synced 2025-07-31 08:04:53 +02:00
added more user options
This commit is contained in:
parent
2c5d18ebbc
commit
56798ec142
6 changed files with 122 additions and 44 deletions
|
@ -1,21 +1,64 @@
|
|||
-- Example configuations here: https://github.com/mattn/efm-langserver
|
||||
-- TODO this file needs to be refactored eache lang should be it's own file
|
||||
-- python
|
||||
local python_arguments = {}
|
||||
|
||||
-- TODO replace with path argument
|
||||
local flake8 = {
|
||||
LintCommand = "flake8 --ignore=E501 --stdin-display-name ${INPUT} -",
|
||||
lintStdin = true,
|
||||
lintFormats = {"%f:%l:%c: %m"}
|
||||
}
|
||||
|
||||
local isort = {formatCommand = "isort --quiet -", formatStdin = true}
|
||||
|
||||
local yapf = {formatCommand = "yapf --quiet", formatStdin = true}
|
||||
|
||||
if O.python.linter == 'flake8' then
|
||||
table.insert(python_arguments, flake8)
|
||||
end
|
||||
|
||||
if O.python.formatter == 'yapf' then
|
||||
table.insert(python_arguments, yapf)
|
||||
end
|
||||
|
||||
if O.python.isort then
|
||||
table.insert(python_arguments, isort)
|
||||
end
|
||||
|
||||
-- lua
|
||||
local lua_arguments = {}
|
||||
local luaFormat = {
|
||||
formatCommand = "lua-format -i --no-keep-simple-function-one-line --column-limit=120",
|
||||
formatStdin = true
|
||||
}
|
||||
-- JavaScript/React/TypeScript
|
||||
local prettier = {formatCommand = "./node_modules/.bin/prettier --stdin-filepath ${INPUT}", formatStdin = true}
|
||||
|
||||
local prettier_global = {formatCommand = "prettier --stdin-filepath ${INPUT}", formatStdin = true}
|
||||
if O.lua.formatter == 'lua-format' then
|
||||
table.insert(lua_arguments, luaFormat)
|
||||
end
|
||||
|
||||
-- sh
|
||||
local sh_arguments = {}
|
||||
|
||||
local shfmt = {formatCommand = 'shfmt -ci -s -bn', formatStdin = true}
|
||||
|
||||
local shellcheck = {
|
||||
LintCommand = 'shellcheck -f gcc -x',
|
||||
lintFormats = {'%f:%l:%c: %trror: %m', '%f:%l:%c: %tarning: %m', '%f:%l:%c: %tote: %m'}
|
||||
}
|
||||
|
||||
if O.sh.formatter == 'shfmt' then
|
||||
table.insert(sh_arguments, shfmt)
|
||||
end
|
||||
|
||||
if O.sh.linter == 'shellcheck' then
|
||||
table.insert(sh_arguments, shellcheck)
|
||||
end
|
||||
|
||||
-- tsserver/web javascript react, vue, json, html, css, yaml
|
||||
local prettier = {formatCommand = "prettier --stdin-filepath ${INPUT}", formatStdin = true}
|
||||
-- You can look for project scope Prettier and Eslint with e.g. vim.fn.glob("node_modules/.bin/prettier") etc. If it is not found revert to global Prettier where needed.
|
||||
-- local prettier = {formatCommand = "./node_modules/.bin/prettier --stdin-filepath ${INPUT}", formatStdin = true}
|
||||
|
||||
local eslint = {
|
||||
lintCommand = "./node_modules/.bin/eslint -f unix --stdin --stdin-filename ${INPUT}",
|
||||
|
@ -26,44 +69,48 @@ local eslint = {
|
|||
formatStdin = true
|
||||
}
|
||||
|
||||
local shellcheck = {
|
||||
LintCommand = 'shellcheck -f gcc -x',
|
||||
lintFormats = {'%f:%l:%c: %trror: %m', '%f:%l:%c: %tarning: %m', '%f:%l:%c: %tote: %m'}
|
||||
}
|
||||
local tsserver_args = {}
|
||||
|
||||
local shfmt = {formatCommand = 'shfmt -ci -s -bn', formatStdin = true}
|
||||
if O.tsserver.formatter == 'prettier' then
|
||||
table.insert(tsserver_args, prettier)
|
||||
end
|
||||
|
||||
local markdownlint = {
|
||||
-- TODO default to global lintrc
|
||||
-- lintcommand = 'markdownlint -s -c ./markdownlintrc',
|
||||
lintCommand = 'markdownlint -s',
|
||||
lintStdin = true,
|
||||
lintFormats = {'%f:%l %m', '%f:%l:%c %m', '%f: %l: %m'}
|
||||
}
|
||||
if O.tsserver.linter == 'eslint' then
|
||||
table.insert(tsserver_args, eslint)
|
||||
end
|
||||
|
||||
|
||||
-- local markdownlint = {
|
||||
-- -- TODO default to global lintrc
|
||||
-- -- lintcommand = 'markdownlint -s -c ./markdownlintrc',
|
||||
-- lintCommand = 'markdownlint -s',
|
||||
-- lintStdin = true,
|
||||
-- lintFormats = {'%f:%l %m', '%f:%l:%c %m', '%f: %l: %m'}
|
||||
-- }
|
||||
|
||||
local markdownPandocFormat = {formatCommand = 'pandoc -f markdown -t gfm -sp --tab-stop=2', formatStdin = true}
|
||||
|
||||
require"lspconfig".efm.setup {
|
||||
-- init_options = {initializationOptions},
|
||||
cmd = { DATA_PATH .. "/lspinstall/efm/efm-langserver" },
|
||||
cmd = {DATA_PATH .. "/lspinstall/efm/efm-langserver"},
|
||||
init_options = {documentFormatting = true, codeAction = false},
|
||||
filetypes = {"lua", "python", "javascriptreact", "javascript", "sh", "html", "css", "json", "yaml", "markdown"},
|
||||
settings = {
|
||||
rootMarkers = {".git/"},
|
||||
languages = {
|
||||
lua = {luaFormat},
|
||||
python = {isort, yapf},
|
||||
python = python_arguments,
|
||||
lua = lua_arguments,
|
||||
sh = sh_arguments,
|
||||
javascript = tsserver_args,
|
||||
javascriptreact = tsserver_args,
|
||||
html = {prettier},
|
||||
css = {prettier},
|
||||
json = {prettier},
|
||||
yaml = {prettier},
|
||||
markdown = {markdownPandocFormat}
|
||||
-- javascriptreact = {prettier, eslint},
|
||||
-- javascript = {prettier, eslint},
|
||||
javascriptreact = {prettier},
|
||||
javascript = {prettier_global},
|
||||
sh = {shellcheck, shfmt},
|
||||
html = {prettier_global},
|
||||
css = {prettier_global},
|
||||
json = {prettier_global},
|
||||
yaml = {prettier_global},
|
||||
-- markdown = {markdownPandocFormat, markdownlint},
|
||||
markdown = {markdownPandocFormat}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,5 +15,14 @@ require'lspconfig'.tsserver.setup {
|
|||
-- This makes sure tsserver is not used for formatting (I prefer prettier)
|
||||
-- on_attach = require'lsp'.common_on_attach,
|
||||
root_dir = require('lspconfig/util').root_pattern("package.json", "tsconfig.json", "jsconfig.json", ".git"),
|
||||
settings = {documentFormatting = false}
|
||||
settings = {documentFormatting = false},
|
||||
handlers = {
|
||||
["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
|
||||
virtual_text = O.tsserver.diagnostics.virtual_text,
|
||||
signs = O.tsserver.diagnostics.signs,
|
||||
underline = O.tsserver.diagnostics.underline,
|
||||
update_in_insert = true
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,14 +6,24 @@ O = {
|
|||
linter = '',
|
||||
formatter = '',
|
||||
autoformat = false,
|
||||
isort = false,
|
||||
diagnostics = {virtual_text = true, signs = true, underline = true}
|
||||
},
|
||||
javascript = {linter = '', formatter = '', autoformat = false, virtual_text = true},
|
||||
javascriptreact = {linter = '', formatter = '', autoformat = false, virtual_text = true},
|
||||
lua = {formatter = '', autoformat = false, virtual_text = true},
|
||||
bash = {linter = '', formatter = '', autoformat = false, virtual_text = true},
|
||||
css = {formatter = '', autoformat = false, virtual_text = true},
|
||||
json = {formatter = '', autoformat = false, virtual_text = true}
|
||||
sh = {
|
||||
linter = '',
|
||||
formatter = '',
|
||||
autoformat = false,
|
||||
diagnostics = {virtual_text = true, signs = true, underline = true}
|
||||
},
|
||||
tsserver = {
|
||||
linter = '',
|
||||
formatter = '',
|
||||
autoformat = false,
|
||||
diagnostics = {virtual_text = true, signs = true, underline = true}
|
||||
},
|
||||
-- css = {formatter = '', autoformat = false, virtual_text = true},
|
||||
-- json = {formatter = '', autoformat = false, virtual_text = true}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,11 @@
|
|||
require'nvim-treesitter.configs'.setup {
|
||||
ensure_installed = "all", -- one of "all", "maintained" (parsers with maintainers), or a list of languages
|
||||
-- TODO seems to be broken
|
||||
ignore_install = { "haskell" },
|
||||
ignore_install = {"haskell"},
|
||||
highlight = {
|
||||
enable = true, -- false will disable the whole extension
|
||||
},
|
||||
indent = {
|
||||
enable = true
|
||||
enable = true -- false will disable the whole extension
|
||||
},
|
||||
indent = {enable = true},
|
||||
playground = {
|
||||
enable = true,
|
||||
disable = {},
|
||||
|
@ -15,7 +13,8 @@ require'nvim-treesitter.configs'.setup {
|
|||
persist_queries = false -- Whether the query persists across vim sessions
|
||||
},
|
||||
autotag = {enable = true},
|
||||
rainbow = {enable = true}
|
||||
rainbow = {enable = true},
|
||||
context_commentstring = {enable = true, config = {javascriptreact = {style_element = '{/*%s*/}'}}}
|
||||
-- refactor = {highlight_definitions = {enable = true}}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,6 +53,7 @@ return require('packer').startup(function(use)
|
|||
use 'nvim-treesitter/playground'
|
||||
use 'p00f/nvim-ts-rainbow'
|
||||
use {'lukas-reineke/indent-blankline.nvim', branch = 'lua'}
|
||||
use 'JoosepAlviste/nvim-ts-context-commentstring'
|
||||
|
||||
-- Icons
|
||||
use 'kyazdani42/nvim-web-devicons'
|
||||
|
|
|
@ -8,14 +8,26 @@ an executable
|
|||
]]
|
||||
|
||||
|
||||
O.auto_complete = false
|
||||
-- general
|
||||
O.auto_complete = true
|
||||
O.colorscheme = 'nvcode'
|
||||
|
||||
-- python
|
||||
-- add things like O.python.formatter.yapf.exec_path
|
||||
-- add things like O.python.linter.flake8.exec_path
|
||||
-- add things like O.python.formatter.isort.exec_path
|
||||
O.python.formatter = 'yapf'
|
||||
O.python.linter = nil
|
||||
O.python.linter = 'flake8'
|
||||
O.python.isort = true
|
||||
O.python.autoformat = false
|
||||
O.python.diagnostics.virtual_text = false
|
||||
O.python.diagnostics.signs = false
|
||||
O.python.diagnostics.underline = false
|
||||
O.python.diagnostics.virtual_text = true
|
||||
O.python.diagnostics.signs = true
|
||||
O.python.diagnostics.underline = true
|
||||
|
||||
-- lua
|
||||
O.lua.formatter = 'lua-format'
|
||||
|
||||
-- javascript
|
||||
O.tsserver.formatter = 'prettier'
|
||||
O.tsserver.linter = nil
|
||||
O.tsserver.autoformat = false
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue