Skip to content

Bump ALE past the proselint 0.16 fix; move Markdown ALE settings to ftplugin - #150

Merged
harleypig merged 2 commits into
masterfrom
fix/ale-bump-145
Nov 4, 2026
Merged

harleypig merged 2 commits into
masterfrom
fix/ale-bump-145

Conversation

@harleypig

Copy link
Copy Markdown
Owner

Summary

Two commits, one per item.

  • Bump ALE past the proselint 0.16 fix (Bump the ALE submodule past the proselint 0.16 fix #145). The ALE submodule moves
    from 80ff84db (v4.0.0-48) to 422c0e8e (v4.0.0-169), the tip of ALE's
    master. No release tag follows fix-proselint dense-analysis/ale#5074 (d59cb7b3,
    fix-proselint): v4.0.0 is still ALE's newest tag. That commit asks
    proselint for its version and runs proselint check %t from 0.16.0 on,
    proselint %t before. The note in docs/proselint.md saying the pinned
    ALE could not run proselint is replaced by what ALE now does.
  • Move ALE's Markdown linters to the ftplugin; drop duplicates (Refs
    Small tidy-ups: envsubstitute help quote, old shell-lint warnings, proselint config path #44).
    • The late ale.vim set g:ale_linters.markdown for every buffer under
      TODO: Move to ftplugin/markdown.vim. It is now b:ale_linters in
      after/ftplugin/markdown.vim, and the "no Markdown fixer" note moved
      with it.
    • The JSONC fixer (jq) was set in the late ale.vim and in
      after/ftplugin/json.vim, which Vim's ftplugin/jsonc.vim runs for
      JSONC buffers (runtime! ftplugin/json.vim). The late ale.vim copy is
      gone; the JSON ftplugin keeps it.
    • g:ale_disable_lsp was set in .vimrc and in the early ale.vim.
      Both are read before ALE's plugin/ale.vim, which sets it to 'auto'
      when nothing set it first. The early ale.vim keeps it, since that file
      is where settings ALE needs before it loads belong; the .vimrc line is
      gone.
    • docs/coc-ale-setup.md and docs/proselint.md say where these
      settings now live.

ALE changes between the two pins

121 commits. I read the log, and the diffs of every linter, fixer and helper
our settings name (gawk, hadolint, markdownlint, proselint, powershell,
sqlint, systemd-analyze, vint, tflint, yamllint; fixers
remove_trailing_lines, trim_whitespace, jq, sqlformat, isort, yapf, shfmt,
terraform, google_java_format; ale#path#FindNearestFile). Nothing breaks
our settings:

  • markdownlint renamed (#5165): the linter is now markdownlint_cli,
    and markdownlint and markdownlint-cli are kept as aliases. Our
    markdownlint still selects it (the new test checks this), and
    markdown_markdownlint_options keeps its name. Problems are now typed by
    markdownlint's own error/warning instead of all being warnings, and
    ALE's messages name the linter markdownlint_cli. A new
    markdownlint_cli2 linter exists; g:ale_linters_explicit keeps it off.
  • ale#path#FindNearestFile now resolves symlinks in the path it
    returns. The Markdown ftplugin passes that path straight to markdownlint,
    so nothing changes for it.
  • vint's version check now runs with PYTHONWARNINGS=ignore. The option
    padding in the shfmt, sqlformat, terraform and google_java_format fixers
    is now done by ale#Pad, which builds the same command line.
  • The fixer registry only gained entries; nothing we use was removed.

Test plan

  • bats tests/vim: 79 tests pass (75 before, plus the 4 new ones), on the
    new pin.
  • bats tests/shell: passes.
  • markdownlint (the pinned CI image) on both changed docs: clean.

Testing evaluation

Run by the PR's author to the qa-tester's standard (this repository declares
no team-managed: sentinel).

  1. Verdict: needs tests for the behaviour item 2 changes; the bump is
    covered by the existing tests/vim/ale-linters.bats, which checks every
    name we configure against the checked-out ALE and passes on the new pin.
  2. Automatable: yes. bats, new file tests/vim/ale-settings.bats.
  3. Falsifiers, each seen red and then green:
    • ALE's LSP support is off once ALE has loaded: red
      (disable_lsp='auto') with the g:ale_disable_lsp line removed from
      the early ale.vim.
    • a Markdown buffer is linted by markdownlint and proselint (also
      checks both are ALE linter names or aliases): red (linters='unset')
      before the move.
    • the Markdown linters are not set for every buffer: red
      (at_start=1, after_markdown=1) before the move.
    • a JSONC buffer is fixed by jq: red (fixers='unset') with the
      JSONC line removed from the JSON ftplugin, which is what makes removing
      the late ale.vim copy safe.
  4. Disposition: written in this PR.

Every test asserts loaded_ale=1, so none passes on a Vim where ALE did not
load.

Manual verification

  1. Where: a terminal with proselint 0.16 or later on PATH and this
    checkout as XDG_DOTVIM.
  2. What: write a Markdown file holding This is very unique., open it
    with vim -N -u "$XDG_DOTVIM/.vimrc" file.md, wait a moment, run
    :copen.
  3. Success: the quickfix list shows proselint warnings for line 1, such
    as Comparison of an uncomparable: 'very unique' is not comparable.
  4. Failure: on the old pin, proselint 0.16 rejects proselint file.md
    and the list shows nothing from proselint.

Run result (headless, proselint 0.16.0 in a scratch venv, the
equivalent of steps 2 and 3 read with ale#engine#GetLoclist):

  • proselint 3: uncomparables: Comparison of an uncomparable: 'very unique' is not comparable.
  • proselint 3: weasel_words.very: Substitute 'damn' every time ...
  • The buffer's b:ale_linters read ['markdownlint', 'proselint'].
  • Step 4 was not re-run on the old pin.

Review

Self-review of the whole diff (the code-review skill was not available to
this seat). Found one false statement in docs/coc-ale-setup.md, now fixed:
it said the late ale.vim sets a Markdown fixer and that Markdown has
fixers of its own. It never had either, so Markdown gets the global
trailing-whitespace fixers, as ALE falls back to * when a filetype names
none.

Completion report

  1. The functionality works: met. Suite green, proselint reports on a
    Markdown buffer.
  2. The access model is defined: not applicable, editor configuration
    with no access surface.
  3. Permissions are implemented: not applicable, as above.
  4. Audit logging is implemented: not applicable, as above.
  5. Validation is complete: not applicable, no input crosses a boundary.
  6. Errors are handled: not applicable, no new error path.
  7. Testing is complete: met, see the testing evaluation.
  8. Documentation exists: met for the two pages in this PR.
    docs/json.md still lists the late ale.vim as also setting the JSONC
    fixer, and the Vim ftplugin's comment says .vimrc sets
    g:ale_disable_lsp; both are outside this PR's files and are left for a
    follow-up.
  9. The AI Completion Report has been produced: met, this section.

Closes #145
Refs #44

Co-Authored-By: AI Agent noreply@harleypig.com

harleypig and others added 2 commits November 4, 2026 01:19
Move the ALE submodule from 80ff84db (v4.0.0-48) to 422c0e8e
(v4.0.0-169), the tip of ALE's master; no release tag follows
dense-analysis/ale#5074 (d59cb7b3, fix-proselint), which runs
`proselint check` from proselint 0.16.0 on. Drop the note in
docs/proselint.md that said the pinned ALE could not run proselint.

Closes #145

Co-Authored-By: AI Agent <noreply@harleypig.com>
The late ale.vim set the Markdown linters for every buffer under a
TODO to move them to ftplugin/markdown.vim, which now exists; they are
b:ale_linters there. The JSONC fixer was set both in the late ale.vim
and in the JSON ftplugin, which also runs for JSONC buffers; the
ftplugin keeps it. g:ale_disable_lsp was set in .vimrc and in the
early ale.vim, both read before ALE loads; the early ale.vim keeps it,
being where settings ALE needs before it loads belong.

tests/vim/ale-settings.bats pins each.

Refs #44

Co-Authored-By: AI Agent <noreply@harleypig.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bump the ALE submodule past the proselint 0.16 fix

1 participant