Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Incredibly slow on write

Open
#215 6 comments 0 reactions 0 assignees View on GitHub

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

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

bug

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from google/vim-codefmt

All issues in google/vim-codefmt

Similar issues

More Performance issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.