Sluggish vim in insert mode on WSL while having auto-pairs plugin loaded for Markdown files
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- vim
- Domain
- devtools, performance
Research direction
Start with the minimal vimrc shown in the issue and run vim README.md under Ubuntu 24.04.2 on WSL2, using the supplied :ALEInfo output as context. Compare insert-mode responsiveness with auto-pairs and ALE loaded versus without them, then trace the relevant interaction. Done means Markdown editing is responsive in the reported WSL setup without breaking the plugin combination.
Written by the indexing model from the issue text.
Description
Information
VIM version
VIM - Vi IMproved 9.1 (2024 Jan 02, compiled Apr 01 2025 20:12:31)
Included patches: 1-16, 647, 678, 697
Operating System: Ubuntu 24.04.2 LTS on Windows 11 WSL2
What went wrong
Vim gets really sluggish in insert mode if jiangmiao/auto-pairs plugin is loaded. Only happens in WSL. Seems to only apply to Mardown (.md) files.
See jiangmiao/auto-pairs#378.
Reproducing the bug
vimrccontents with junegunn/vim-plug loaded plugins
call plug#begin()
Plug 'dense-analysis/ale'
Plug 'jiangmiao/auto-pairs'
call plug#end()
vim README.md- Sluggish in insert mode
:ALEInfo
Expand
Current Filetype: markdown Available Linters: ['alex', 'cspell', 'languagetool', 'markdownlint', 'marksman', 'mdl', 'proselint', 'pymarkdown', 'redpen', 'remark_lint', 'textlint', 'vale', 'writegood'] Linter Aliases: 'remark_lint' -> ['remark-lint'] 'writegood' -> ['write-good'] Enabled Linters: ['alex', 'cspell', 'languagetool', 'markdownlint', 'marksman', 'mdl', 'proselint', 'pymarkdown', 'redpen', 'remark_lint', 'textlint', 'vale', 'writegood'] Ignored Linters: [] Suggested Fixers: 'dprint' - Pluggable and configurable code formatting platform 'pandoc' - Fix markdown files with pandoc. 'prettier' - Apply prettier to a file. 'remark-lint' - Fix markdown files with remark-lint 'remove_trailing_lines' - Remove all blank lines at the end of a file. 'textlint' - Fix text files with textlint --fix 'trim_whitespace' - Remove all trailing whitespace characters at the end of every line.Linter Variables:
let g:ale_markdown_markdownlint_executable = 'markdownlint'
let g:ale_markdown_markdownlint_options = ''
let g:ale_markdown_marksman_executable = 'marksman'
let g:ale_markdown_mdl_executable = 'mdl'
let g:ale_markdown_mdl_options = ''
let g:ale_markdown_pymarkdown_auto_pipenv = 0
let g:ale_markdown_pymarkdown_auto_poetry = 0
let g:ale_markdown_pymarkdown_auto_uv = 0
let g:ale_markdown_pymarkdown_executable = 'pymarkdown'
let g:ale_markdown_pymarkdown_options = ''
let g:ale_markdown_pymarkdown_use_global = 0
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_vale_executable = 'vale'
let g:ale_markdown_vale_input_file = '%t'
let g:ale_markdown_vale_options = ''
Global Variables:
let g:ale_cache_executable_check_failures = v:null
let g:ale_change_sign_column_color = v:false
let g:ale_command_wrapper = v:null
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 = {}
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 = v:true
let g:ale_lint_on_filetype_changed = v:true
let g:ale_lint_on_insert_leave = v:true
let g:ale_lint_on_save = v:true
let g:ale_lint_on_text_changed = 'normal'
let g:ale_linter_aliases = {}
let g:ale_linters = {}
let g:ale_linters_explicit = v:false
let g:ale_linters_ignore = {}
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 = -1
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:false
let g:ale_sign_error = 'E'
let g:ale_sign_info = 'I'
let g:ale_sign_offset = 1000000
let g:ale_sign_style_error = 'E'
let g:ale_sign_style_warning = 'W'
let g:ale_sign_warning = 'W'
let g:ale_sign_highlight_linenrs = v:false
let g:ale_type_map = {}
let g:ale_use_neovim_diagnostics_api = v:false
let g:ale_use_global_executables = v:null
let g:ale_virtualtext_cursor = 'all'
let g:ale_warn_about_trailing_blank_lines = v:true
let g:ale_warn_about_trailing_whitespace = v:true
Command History:
(executable check - failure) alex
(executable check - failure) cspell
(executable check - failure) languagetool
(executable check - failure) markdownlint
(executable check - failure) marksman
(executable check - failure) mdl
(executable check - failure) proselint
(executable check - failure) pymarkdown
(executable check - failure) redpen
(executable check - failure) remark
(executable check - failure) textlint
(executable check - failure) vale
(executable check - failure) write-good
- Dominant language
- Vim Script
- Stars
- 14k
- Forks
- 1.5k
- PR merge metrics
- No merged PRs in 30d
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from dense-analysis/ale
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
dense-analysis/ale#5181 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
dense-analysis/ale#5180 · 1 comment ·
-
new tool
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
dense-analysis/ale#5176 ·
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 75/100
dense-analysis/ale#5174 ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
dense-analysis/ale#5158 ·
All issues in dense-analysis/ale
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
hassanmubiru/StreetJS#209 ·
-
ui/scripts/drive-turn-details.mjs declares `placed` twice in one scope, so the script does not parseOpenbug infrastructure
Difficulty 1/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
bug: NPM_CONFIG_USERCONFIG environment variable generated with programs.npm contains two slashesOpenbug triage
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
nix-community/home-manager#10176 ·
Maintainers usually reply within 1 day
-
Playground demoOpendocumentation
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
wpgenius/stackfolio#21 ·