Repository navigation
CoC language servers, proselint 0.16, Markdown linting, inert #44 items - #143
Merged
Merged
Conversation
…s stays coc-docker, already in the extension list, starts the Dockerfile language server from its own bundled copy (its activation covers the dockerfile filetype), so the hand-written languageserver.dockerfile block started the same server a second time. It is removed. terraform-ls has no CoC extension that bundles it; the one published extension only starts the same external binary. The hand-written block stays, with a comment saying why. The new tests/vim/intellisense.bats checks the languageserver keys CoC is given. Refs #21 Co-Authored-By: AI Agent <noreply@harleypig.com>
…tarted languageserver.html ran `vscode-html-languageservice`, an npm library that ships no executable, so the server never started. Its filetype list also named `mustache`, while vim-polyglot sets `html.mustache` and CoC passes the whole filetype as the language id, so it would not have attached to Mustache templates either. coc-html bundles the same language service and starts it itself, which is the #21 case: the hand-written block is removed. Its `html.filetypes` setting keeps coc-html's defaults and adds `html.mustache`, keeping the old block's intent for Mustache. Adding coc-html to g:coc_global_extensions is a .vimrc change made in a sibling pull request. docs/html.md now describes coc-html in place of the library. Refs #133 Co-Authored-By: AI Agent <noreply@harleypig.com>
The diagnostic-languageserver entry ran `proselint --config $HOME/.vim/.proselint-config.json -`. proselint 0.16.0 (the current release) takes a subcommand, so that line fails with "invalid choice: '-'", and the config file it named has not existed since 2023. It now runs `proselint check`, which reads the buffer on stdin when given no paths. There is no --config: proselint finds a proselint.json in or above the working directory, or $XDG_CONFIG_HOME/proselint/config.json, and falls back to its defaults. The output format the existing formatPattern reads is unchanged, and its columns are 1-based, which is what diagnostic-languageserver expects with offsetColumn 0. Checked against proselint 0.16.0 and its README. coc-diagnostic's own built-in proselint preset uses the old `-j` flag, so the entry stays ours rather than falling back to it. docs/proselint.md drops the missing config file, and (for #104) says that ALE also runs proselint and markdownlint on Markdown, that the pinned ALE still runs proselint's old command line there, and that the problems show through ALE in the gutter and the quickfix list. Closes #132 Refs #104 Co-Authored-By: AI Agent <noreply@harleypig.com>
prettier was ALE's Markdown fixer, run on every save. It writes every
bullet as `-` and has no option to keep `*`, so each save undid what
CONVENTIONS.md and MD004 in .markdownlint.yaml ask for (checked with
prettier 3.9.6). It is dropped; Markdown now gets only the global fixers.
markdownlint-cli reads .markdownlint.{jsonc,json,yaml,yml} only from the
directory it runs in, and ALE runs it from Vim's working directory, so a
file opened from anywhere else was linted with the defaults. A new
after/ftplugin/markdown.vim finds the nearest such file above the buffer
and passes it with --config, buffer-locally.
load.bats asserted the prettier fixer; that line now expects no Markdown
key.
Closes #51
Co-Authored-By: AI Agent <noreply@harleypig.com>
plugin/diagnostic-colors.vim set the ALEVirtualTextError, Warning and Info highlights, but ALE's virtual text is switched off (g:ale_virtualtext_cursor = 'disabled' in the early ale.vim), so nothing drew with them. They are removed; were virtual text turned back on, ALE links them to its own defaults. .eslintrc.json configured ESLint, which nothing runs: ALE lints only the filetypes it is given, none of them JavaScript, and coc-eslint is no longer installed. It is removed. Refs #44 Co-Authored-By: AI Agent <noreply@harleypig.com>
This was referenced Nov 3, 2026
This was referenced Nov 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Language servers, prose linting and Markdown linting in the editor, plus two
inert items from #44. One commit per issue:
languageserver.dockerfileis removed. coc-docker alreadystarts the same server from its own bundled copy, so it was running twice.
A live CoC session on
masterlists bothlanguageserver.dockerfileanddockeras running; on this branch onlydockerruns.languageserver.terraformstays, with a comment: no CoC extension bundlesterraform-ls (the one published
coc-terraformstarts the same externalbinary).
languageserver.htmlnever started. It ranvscode-html-languageservice, an npm library with no executable, forfiletype
mustache, while vim-polyglot setshtml.mustache. The block isremoved in favour of coc-html, which bundles the same service. That is
the Remove language-server blocks in coc-settings.json that a CoC extension already provides #21 case.
html.filetypeskeeps coc-html's defaults and addshtml.mustache.docs/html.mdnow describes coc-html.proselint --config … -failed withinvalid choice: '-'. The configfile it named has not existed since 2023. CoC now runs
proselint check,which reads stdin, and proselint finds its own config. The existing
formatPatternmatches 0.16's output, and the columns are 1-based, asdiagnostic-languageserver expects.
docs/proselint.mdis updated,including the Language pages credit ale.vim with ftplugin settings, and miss configured linters #104 items for that page.
*bullets to
-and has no option to keep*(checked with prettier3.9.6), so it is dropped and Markdown gets only the global fixers.
markdownlint-cli reads
.markdownlint.yamlonly from its workingdirectory, and ALE runs it from Vim's. A new
after/ftplugin/markdown.vimpasses the nearest config file above the buffer with
--config.ALEVirtualText*highlights indiagnostic-colors.vimare removed, because ALE's virtual text is off(
g:ale_virtualtext_cursor = 'disabled')..eslintrc.jsonis removed,because nothing runs ESLint: ALE lints only the filetypes it is given, and
coc-eslint is gone.
Closes #21
Refs #133
Closes #132
Closes #51
Closes #104
Refs #44
#133 stays open (
Refs) until a sibling pull request this round addscoc-htmltog:coc_global_extensionsin.vimrc. Until then HTML has nolanguage server, but it had no working one before either.
#104 is closed here because this PR carries its last item, the
docs/proselint.mdlines. The rest of #104 landed in #140.Decisions (operator's standing rule: remove, make work, or keep with a note)
languageserver.dockerfilelanguageserver.terraformlanguageserver.htmlcheckon stdin, no dead--config*--configto the nearest file, set per bufferALEVirtualText*highlights.eslintrc.jsonSources
proselint --helpandproselint check --helpfromthe PyPI release, run in a scratch venv; config search order from the
project README (
## Configuring).docs/options.mdlists no list-marker option.## Configuration: the.markdownlint.*fileis read from "the current folder".
package.json:html.filetypesand its default.doc/coc.txtcoc-document-filetype: only a few filetypes areremapped; others go through as they are.
Changes needed outside this PR
.vimrc: add'coc-html'tog:coc_global_extensions(sibling PR).bin/post-clone: thedockerfile-language-server-nodejsinstall (line37) and the
prettierinstall (line 39) are no longer used (sibling PR).80ff84db) runsproselint %tforMarkdown, which proselint 0.16 rejects. Upstream fixed it in
d59cb7b3(fix-proselint, fix-proselint dense-analysis/ale#5074).
docs/proselint.mdsays so.After #140 merges
Apply these on rebase, before this PR merges:
docs/editor-settings.md, the diagnostic-colors table: dropALEVirtualTextError,ALEVirtualTextWarningandALEVirtualTextInfofrom the Groups column, and drop them from the sentence "The
Coc*Signand
ALEVirtualText*groups are set but do not show". Any line rangecited for
diagnostic-colors.vimshrinks by 16 lines (71-86 are gone).docs/docker.md: the Dockerfile language server is started bycoc-docker from its own bundled copy, not by a block in
coc-settings.json. Credit coc-docker, and stop pointing thelanguage-server configuration at
coc-settings.json. The ExternalPackages entry for
dockerfile-language-server-nodejsgoes oncepost-clonestops installing it.Test plan
bats tests/vim: 56 ok, 0 failed.bats tests/shell: all ok.markdownlint docs/html.md docs/proselint.md: clean.Testing evaluation
Run by the author to the qa-tester's standard; this repository declares no
team-managed:sentinel.tests/vim/intellisense.bats(7 tests), plus one changed line intests/vim/load.bats..claude/TESTS.md. Thecoc-settings tests decode
coc-settings.jsonafter dropping itswhole-line comments; a file that will not decode fails.
masterand green on this branch(test 6 is the over-match guard and is green on both by design):
dockerfileorhtmlis present.html.filetypes: red withouthtml.mustache, or with the key absent.["check"].g:ale_fixers.markdownexists..markdownlint.yaml, opened from another cwd, gets no--config.config file exists.
ALEVirtualText*a background.path.
Manual verification
Dockerfilein Vim with CoC running, wait for CoC to start,and run
:echo map(CocAction('services'), 'v:val.id . ":" . v:val.state').Success:
docker:runningand nolanguageserver.dockerfileentry.(
cd /tmp && vim ~/projects/dotvim/docs/x.md) and run:echo b:ale_markdown_markdownlint_options. Success:--config '…/dotvim/.markdownlint.yaml'. Put a- dashbullet in the file andsave. Success: ALE reports MD004 "Expected: asterisk; Actual: dash",
and the bullet is not rewritten.
printf 'This is very unique.\n' | proselint check. Success:<stdin>:1:9: uncomparables: …..mustachefile and checkCocAction('services')lists the HTML server running.languageserver.dockerfilelisted again;in (b), no MD004 report, or the dash rewritten on save; in (c),
invalid choice.coc-settings.json):services=["languageserver.terraform:init", "diagnostic-languageserver:init","docker:running"]. The same Vim onmaster's settings listedlanguageserver.dockerfile:runninganddocker:runningtogether.docs/, from ascratch directory:
'markdownlint' --config '…/.markdownlint.yaml' %s.With the option it reported
MD004/ul-style … [Expected: asterisk; Actual: dash], exit 1. Without it, from the same directory, nothing,exit 0.
<stdin>:1:9: uncomparables: …,exit 1 (findings). The old command line gave
invalid choice: '-',exit 2.
loaded from a scratch CoC data directory failed to start without its
npm dependencies, and installing them was declined in this
environment. To run it: coc-html installed through
.vimrc's list(sibling PR), then step d as written.
Review
code-review-style self-review of the full diff. It found no defects.Observations:
after/ftplugin/markdown.vimcalls ALE's autoload functions. ALE is astart package that loads with or without Node (
tests/vim/coc.bats), sothey are always available.
.markdownlint.*in any directory abovethe test's temp directory. That holds on CI and on this host.
ale.vimstill sets the Markdown linters globally under a"TODO: Move to ftplugin/markdown.vim". Moving them is out of scope here.
Completion report
pending coc-html (sibling PR) and The HTML language server in coc-settings never starts or attaches #133 stays open on it.
with no access surface.
markdownlint's options alone (test 6).
docs/html.mdanddocs/proselint.md.docs/docker.mdanddocs/editor-settings.mdare updated after docs: editor settings page, statusline row, language-page drift (#109, #102, #104) #140,as described above.
Co-Authored-By: AI Agent noreply@harleypig.com