dense-analysis / dense-analysis/ale
rumdl ignores `g:ale_lint_on_text_changed` and hides warnings on save
- Dominant language
- Vim Script
- Stars
- 14k
- Forks
- 1.5k
- Avg merge
- 17h 49m
- Merged PRs (30d)
- 1
Description
## Information
**VIM version**
NVIM v0.12.4
Build type: RelWithDebInfo
Operating System: EndeavourOS
## What went wrong
When editing a Markdown file with rumdl as the only enabled linter and `g:ale_lint_on_text_changed = 0`, it nonetheless lints immediately after every keypress.
Furthermore, when saving the file, all the warnings disappear, regardless of the `g:ale_lint_on_save` setting.
I searched through both open and closed issues for the same problem before reporting a bug here.
Tagging @vEnhance who added rumdl support in #5115.
## Reproducing the bug
1. Install rumdl.
2. `let g:ale_linters = {'markdown': ['rumdl']}`
3. `let g:ale_lint_on_text_changed = 0`
4. Open a Markdown file in vim.
5. Make an edit that would trigger a rumdl warning (e.g. adding a trailing space).
- Expected: No rumdl warning is displayed.
- Actual: A rumdl warning is displayed.
6. Save the file.
- Expected: The warning remains visible.
- Actual: The warning disappears.
### :ALEInfo
Expand
```
Current Filetype: markdown
Available Linters: ['alex', 'cspell', 'harper', 'languagetool', 'markdownlint', 'marksman', 'mdl', 'proselint', 'pymarkdown', 'redpen', 'remark_lint', 'rumdl', 'textlint', 'vale', 'writegood']
Linter Aliases:
'remark_lint' -> ['remark-lint']
'writegood' -> ['write-good']
Enabled Linters: ['rumdl']
Ignored Linters: []
Suggested Fixers:
'dprint' - Pluggable and configurable code formatting platform
'markdownlint' - Fix markdown files with markdownlint.
'mdformat' - Fix Markdown files with mdformat.
'pandoc' - Fix markdown files with pandoc.
'prettier' - Apply prettier to a file.
'pymarkdown' - Fix markdown files with pymarkdown.
'remark-lint' - Fix markdown files with remark-lint
'remove_trailing_lines' - Remove all blank lines at the end of a file.
'replace_emdash' - Replace em dash with -- ASCII characters.
'rumdl' - Fix markdown files with rumdl.
'textlint' - Fix text files with textlint --fix
'trim_whitespace' - Remove all trailing whitespace characters at the end of every line.
Linter Variables:
" Press Space to read :help for a setting
let g:ale_markdown_remark_lint_executable = 'remark'
let g:ale_markdown_remark_lint_options = ''
let g:ale_markdown_remark_lint_use_global = 0
let g:ale_markdown_rumdl_executable = 'rumdl'
let g:ale_markdown_rumdl_options = ''
Global Variables:
" Press Space to read :help for a setting
let g:ale_cache_executable_check_failures = v:null
let g:ale_change_sign_column_color = v:null
let g:ale_command_wrapper = ''
let g:ale_completion_delay = v:null
let g:ale_completion_enabled = v:false
let g:ale_completion_max_suggestions = v:null
let g:ale_disable_lsp = 'auto'
let g:ale_echo_cursor = v:true
let g:ale_echo_msg_error_str = 'Error'
let g:ale_echo_msg_format = '%code: %%s'
let g:ale_echo_msg_info_str = 'Info'
let g:ale_echo_msg_warning_str = 'Warning'
let g:ale_enabled = 1
let g:ale_fix_on_save = v:false
let g:ale_fixers = {'sh': ['shfmt'], 'jsonc': ['biome'], 'go': ['gofmt'], 'c': ['clang-format'], 'haskell': ['hlint', 'ormolu'], 'typescript': ['biome'], 'json': ['biome'], 'javascript': ['biome'], 'html': ['prettier'], 'rust': ['rustfmt'], 'cpp': ['clang-format'], 'css': ['prettier'], 'python': ['ruff', 'ruff_format'], 'vim': []}
let g:ale_history_enabled = v:true
let g:ale_info_default_mode = 'preview'
let g:ale_history_log_output = v:true
let g:ale_keep_list_window_open = 0
let g:ale_lint_delay = 200
let g:ale_lint_on_enter = 1
let g:ale_lint_on_filetype_changed = 1
let g:ale_lint_on_insert_leave = 0
let g:ale_lint_on_save = 1
let g:ale_lint_on_text_changed = 0
let g:ale_linter_aliases = {}
let g:ale_linters = {'markdown': ['rumdl'], 'python': ['ruff', 'ty']}
let g:ale_linters_explicit = v:false
let g:ale_linters_ignore = {'c': ['cc'], 'perl': ['perlcritic'], 'html': ['stylelint'], 'tex': ['lacheck', 'chktex']}
let g:ale_list_vertical = v:false
let g:ale_list_window_size = 10
let g:ale_loclist_msg_format = '%code: %%s'
let g:ale_max_buffer_history_size = 20
let g:ale_max_signs = v:null
let g:ale_maximum_file_size = v:null
let g:ale_open_list = v:false
let g:ale_pattern_options = v:null
let g:ale_pattern_options_enabled = v:null
let g:ale_root = {}
let g:ale_set_balloons = v:false
let g:ale_set_highlights = v:true
let g:ale_set_loclist = v:true
let g:ale_set_quickfix = v:false
let g:ale_set_signs = v:true
let g:ale_sign_column_always = v:null
let g:ale_sign_error = v:null
let g:ale_sign_info = v:null
let g:ale_sign_offset = v:null
let g:ale_sign_style_error = v:null
let g:ale_sign_style_warning = v:null
let g:ale_sign_warning = v:null
let g:ale_sign_highlight_linenrs = v:null
let g:ale_type_map = {'flake8': {'ES': 'WS'}}
let g:ale_use_neovim_diagnostics_api = v:true
let g:ale_use_global_executables = v:null
let g:ale_virtualtext_cursor = 0
let g:ale_warn_about_trailing_blank_lines = v:true
let g:ale_warn_about_trailing_whitespace = v:true
Command History:
(executable check - success) rumdl
(started) ['/bin/zsh', '-c', '''rumdl'' server --stdio']
```
Contributor guide
Research direction
Start with the rumdl support added in #5115 and trace how ALE handles the g:ale_lint_on_text_changed and g:ale_lint_on_save settings for this linter. Reproduce the listed steps with rumdl enabled for Markdown, then verify that text-change linting is suppressed and warnings remain visible after saving.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- markdown, vim
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100