Incredibly slow on write
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- vim
- Domain
- performance, tooling
Research direction
Reproduce the delay with the minimal vimrc and the save/close profiling workflow described in the issue. Start by tracing FormatCode, codefmt#FormatBuffer(), and maktaba#syscall#Call(); done means saving the 200-line TypeScript file no longer incurs the reported multi-second latency.
Written by the indexing model from the issue text.
Description
Describe the bug
Recently upgraded vim, and I noticed that vim basically froze every time I wrote a file. I opened a typescript file with about 200loc and profiled using this set of commands: https://stackoverflow.com/a/12216578/3269537
To profile I just opened the file and saved it, then closed the file.
Output:
FUNCTIONS SORTED ON TOTAL TIME count total (s) self (s) function
9 5.210759 0.000624 maktaba#function#Call()
2 2.642967 0.000312 codefmt#FormatBuffer()
3 2.611224 0.000173 maktaba#syscall#Call()
3 2.610018 0.000436 <SNR>80_DoSyscallCommon()
3 2.605518 0.000057 maktaba#function#Apply()
3 2.603859 0.001205 maktaba#syscall#DoCall()
2 2.402088 0.001135 42()
1 1.472221 0.000255 <SNR>33_FormatBufferAndSetRepeat()
1 1.171017 0.000016 <SNR>32_FmtIfAutoEnabled()
2 0.240567 0.000527 <SNR>38_GetFormatter()
2 0.239915 0.000078 <SNR>38_IsAvailable()
2 0.239817 0.000679 40()
2 0.020809 0.001005 maktaba#buffer#Overwrite()
2 0.019677 0.019450 maktaba#python#ImportModule()
7 0.004788 0.000730 maktaba#syscall#GetCommand()
24 0.003627 0.001727 maktaba#string#Strip()
5 0.002999 0.000466 codefmt#formatterhelpers#ResolveFlagT
oArray()
2 0.002801 0.000086 maktaba#syscall#WithCwd()
2 0.002715 0.000076 maktaba#syscall#And()
116 0.002186 0.001214 maktaba#ensure#IsString()
notice that maktaba takes ~5s and codefmt takes ~2.5
To Reproduce
Minimal vimrc:
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'google/vim-maktaba'
Plugin 'google/vim-codefmt'
Plugin 'google/vim-glaive'
call vundle#end()
call glaive#Install()
" Set up useful defaults for codefmt.
augroup autoformat_settings
autocmd FileType bzl AutoFormatBuffer buildifier
autocmd FileType c,cpp,proto,arduino AutoFormatBuffer clang-format
autocmd FileType dart AutoFormatBuffer dartfmt
autocmd FileType go AutoFormatBuffer gofmt
autocmd FileType gn AutoFormatBuffer gn
autocmd FileType html,css,sass,scss,less,json,vue,javascript,javascriptreact,typescript,typescriptreact AutoFormatBuffer prettier
autocmd FileType java AutoFormatBuffer google-java-format
autocmd FileType python AutoFormatBuffer yapf
autocmd FileType rust AutoFormatBuffer rustfmt
augroup END
Glaive codefmt plugin[mappings]
autocmd BufWritePre * FormatCode
Expected behavior
Previously this was not nearly this slow. I was expecting a non-noticeable latency on save.
OS (version)
Ubuntu 20.04.3 LTS
Additional context
vim version: VIM - Vi IMproved 9.0 (2022 Jun 28, compiled May 10 2022 08:40:37)
- Dominant language
- Vim Script
- Stars
- 1.1k
- Forks
- 102
- PR merge metrics
- No merged PRs in 30d
Contributor 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 google/vim-codefmt
-
Write a codefmt FAQ Openenhancement
Difficulty 1/5 1-3 hours Newbie friendliness 68/100
google/vim-codefmt#53 ·
-
Add meson format Opennew formatter
Difficulty 3/5 1-2 days Newbie friendliness 45/100
google/vim-codefmt#243 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 52/100
google/vim-codefmt#240 · 1 comment ·
-
Add `:CodefmtInfo` command to report diagnostics to help users check config / diagnose problems Openenhancement
Difficulty 5/5 Over a week Newbie friendliness 35/100
google/vim-codefmt#234 · 2 comments ·
-
Difficulty 1/5 1-3 hours Newbie friendliness 45/100
google/vim-codefmt#222 · 3 comments ·
All issues in google/vim-codefmt
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
[Documentation Request] vLLM kv_load_failure_policy doesn't apply to load failures in L2 adapters Open
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
components-web-app/docs#73 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
jenkinsci/blueocean-plugin#5417 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100