From ca4c683b18e16766d2315133dfaa3f36d16129d9 Mon Sep 17 00:00:00 2001 From: m1ngsama Date: Sat, 28 Mar 2026 18:20:20 +0800 Subject: [PATCH] Expand LSP and lint coverage for full-stack languages (fixes #6) ALE linters: - Add css/scss: stylelint - Add markdown: markdownlint - Add sql: sqlfluff ALE fixers: - Add scss, less: prettier - Add sql: sqlfmt vim-lsp fallback (no Node.js path): - Add html, css, scss, json, yaml: vscode language servers - Add markdown: marksman - Add sql: sqls install.sh (CoC path): - Add coc-go, coc-rust-analyzer, coc-marksman, coc-sql to auto-install - Expand optional tools section with stylelint, markdownlint, sqlfluff, marksman --- .vimrc | 50 ++++++++++++++++++++++++++++++++------------------ install.sh | 11 +++++++---- 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/.vimrc b/.vimrc index f78fb4f..4a53d0a 100644 --- a/.vimrc +++ b/.vimrc @@ -513,28 +513,35 @@ let g:gitgutter_sign_modified_removed = '~' " --- ALE (Asynchronous Lint Engine) --- let g:ale_linters = { -\ 'python': ['flake8', 'pylint'], +\ 'python': ['flake8', 'pylint'], \ 'javascript': ['eslint'], \ 'typescript': ['eslint', 'tsserver'], -\ 'go': ['gopls', 'golint'], -\ 'rust': ['cargo'], -\ 'sh': ['shellcheck'], -\ 'yaml': ['yamllint'], +\ 'go': ['gopls', 'golint'], +\ 'rust': ['cargo'], +\ 'sh': ['shellcheck'], +\ 'yaml': ['yamllint'], \ 'dockerfile': ['hadolint'], +\ 'css': ['stylelint'], +\ 'scss': ['stylelint'], +\ 'markdown': ['markdownlint'], +\ 'sql': ['sqlfluff'], \} let g:ale_fixers = { -\ '*': ['remove_trailing_lines', 'trim_whitespace'], -\ 'python': ['black', 'isort'], +\ '*': ['remove_trailing_lines', 'trim_whitespace'], +\ 'python': ['black', 'isort'], \ 'javascript': ['prettier', 'eslint'], \ 'typescript': ['prettier', 'eslint'], -\ 'go': ['gofmt', 'goimports'], -\ 'rust': ['rustfmt'], -\ 'json': ['prettier'], -\ 'yaml': ['prettier'], -\ 'html': ['prettier'], -\ 'css': ['prettier'], -\ 'markdown': ['prettier'], +\ 'go': ['gofmt', 'goimports'], +\ 'rust': ['rustfmt'], +\ 'json': ['prettier'], +\ 'yaml': ['prettier'], +\ 'html': ['prettier'], +\ 'css': ['prettier'], +\ 'scss': ['prettier'], +\ 'less': ['prettier'], +\ 'markdown': ['prettier'], +\ 'sql': ['sqlfmt'], \} " Don't fix on save if LSP is handling formatting (avoids double-format) @@ -670,12 +677,19 @@ endif " --- vim-lsp (Native VimScript LSP - fallback when Node.js unavailable) --- if g:use_vimlsp " Auto-configure language servers via vim-lsp-settings - let g:lsp_settings_filetype_python = ['pylsp', 'pyright-langserver'] - let g:lsp_settings_filetype_go = ['gopls'] - let g:lsp_settings_filetype_rust = ['rust-analyzer'] + let g:lsp_settings_filetype_python = ['pylsp', 'pyright-langserver'] + let g:lsp_settings_filetype_go = ['gopls'] + let g:lsp_settings_filetype_rust = ['rust-analyzer'] let g:lsp_settings_filetype_typescript = ['typescript-language-server'] let g:lsp_settings_filetype_javascript = ['typescript-language-server'] - let g:lsp_settings_filetype_sh = ['bash-language-server'] + let g:lsp_settings_filetype_sh = ['bash-language-server'] + let g:lsp_settings_filetype_html = ['vscode-html-language-server'] + let g:lsp_settings_filetype_css = ['vscode-css-language-server'] + let g:lsp_settings_filetype_scss = ['vscode-css-language-server'] + let g:lsp_settings_filetype_json = ['vscode-json-language-server'] + let g:lsp_settings_filetype_yaml = ['yaml-language-server'] + let g:lsp_settings_filetype_markdown = ['marksman'] + let g:lsp_settings_filetype_sql = ['sqls'] " Performance: disable virtual text diagnostics in TTY let g:lsp_diagnostics_virtual_text_enabled = !g:is_tty diff --git a/install.sh b/install.sh index 8cd8984..2316279 100755 --- a/install.sh +++ b/install.sh @@ -94,9 +94,8 @@ if [ "$HAS_NODE" -eq 1 ]; then echo if [[ $REPLY =~ ^[Yy]$ ]]; then step "Installing CoC language servers" - vim +'CocInstall -sync coc-json coc-tsserver coc-pyright coc-sh coc-html coc-css coc-yaml' +qall + vim +'CocInstall -sync coc-json coc-tsserver coc-pyright coc-sh coc-html coc-css coc-yaml coc-go coc-rust-analyzer coc-marksman coc-sql' +qall ok "CoC language servers installed" - echo " Add more with :CocInstall coc-go coc-rust-analyzer etc." fi else echo " To enable LSP without Node.js:" @@ -126,11 +125,15 @@ echo " ctags (F8 tag browser)" echo " Ubuntu: sudo apt install universal-ctags" echo " macOS: brew install universal-ctags" echo "" -echo " Language linters:" +echo " Language linters and formatters:" echo " Python: pip install black flake8 pylint isort" echo " JS/TS: npm install -g prettier eslint typescript" echo " Go: go install golang.org/x/tools/gopls@latest" -echo " Shell: sudo apt install shellcheck" +echo " Shell: sudo apt install shellcheck # or: brew install shellcheck" +echo " CSS/SCSS: npm install -g stylelint stylelint-config-standard" +echo " Markdown: npm install -g markdownlint-cli" +echo " SQL: pip install sqlfluff | npm install -g sqlfmt" +echo " Markdown LS: brew install marksman # or: https://github.com/artempyanykh/marksman" echo "" echo "Getting started:" echo " See QUICKSTART.md for the 5-minute guide"