Commit dc1f574
committed
Fix polyglot ftdetect as fallback for native vim
Fix ftdetect for ft ext defined only by native vim, e.g.
`*.jjdescription`, `*.http`, `*.mysql_history`, & others
It seems vim-polyglot loads vim-`filetype.vim` then clobbers it by
"resetting" with `au! filetypedetect` afterwards, even though
vim-polyglot intends to be a fallback, according to comments in
`init.vim`
This is evidenced by `*.jjdescription`, `*.http`, and `.mysql_history`,
filetype extensions defined in vim-`filetype.vim` but not
polyglot-`filetype.vim`:
vim -c "redir >> /dev/stdout" -c "set filetype?" -c "redir END" -c "sleep 3" -c "quit" foo.jjdescription
vim -c "redir >> /dev/stdout" -c "set filetype?" -c "redir END" -c "sleep 3" -c "quit" foo.http
vim -c "redir >> /dev/stdout" -c "set filetype?" -c "redir END" -c "sleep 3" -c "quit" .mysql_history
Compare:
vim --clean -c "redir >> /dev/stdout" -c "set filetype?" -c "redir END" -c "sleep 3" -c "quit" foo.jjdescription
vim --clean -c "redir >> /dev/stdout" -c "set filetype?" -c "redir END" -c "sleep 3" -c "quit" foo.http
vim --clean -c "redir >> /dev/stdout" -c "set filetype?" -c "redir END" -c "sleep 3" -c "quit" .mysql_history
And:
vim -c "redir >> /dev/stdout" -c "set filetype?" -c "redir END" -c "sleep 3" -c "quit" foo.py
vim -c "redir >> /dev/stdout" -c "set filetype?" -c "redir END" -c "sleep 3" -c "quit" foo.bash
vim -c "redir >> /dev/stdout" -c "set filetype?" -c "redir END" -c "sleep 3" -c "quit" foo.js
Note although vim-polyglot does not define `bash.vim` nor
`javascript.vim`, polyglot-`filetype.vim` does define the `*.bash` and
`*.js` extensions, so they "still work"
I'm using `vim --version` and vim-plug:
VIM - Vi IMproved 9.1 (2024 Jan 02, compiled May 23 2025 00:48:59)
Included patches: 1-948, 950-1230, 1242, 1244
Tried to retain original intent to first load poly-`filetype.vim` then
vim-`filetype.vim` on top. Early workarounds:
* disable vim-polyglot ftdetect `let g:polyglot_disabled = ['ftdetect']`
* `init.vim`: comment out `au! filetypedetect`
* `init.vim`: comment out `Load user-defined...` and `Prevent filetype.vim...` paragraphs
Unsure how to test "vim-`filetype.vim` loads first case", which seems
related to [handling nvim and other package managers](sheerun/issues/706#issuecomment-826067169),
which I haven't done
My print debugging output below, indentations for clarity.
Before:
```
poly filetype.vim start
init.vim start
init.vim did_load_polyglot: false
init.vim runtime! filetype.vim
poly filetype.vim start
init.vim init() no-op
poly filetype.vim end
vim filetype.vim start
init.vim init() no-op
vim filetype.vim end
init.vim init() no-op
init.vim did_load_filetypes: true
init.vim end
init.vim init() no-op
poly filetype.vim end
vim filetype.vim start
vim filetype.vim finish early
polyglot.vim start
init.vim init() no-op
polyglot.vim finish
```
After:
```
poly filetype.vim start
init.vim start
init.vim did_load_polyglot: false
init.vim did_load_filetypes: false
init.vim end
init.vim init() no-op
poly filetype.vim end
vim filetype.vim start
init.vim init() no-op
vim filetype.vim end
polyglot.vim start
init.vim init() no-op
polyglot.vim finish
```
Related: sheerun#706, sheerun#758, sheerun#756, sheerun#871, NoahTheDuke/vim-just#125
Fix: sheerun#877, sheerun#829, sheerun#845, sheerun#8171 parent f061edd commit dc1f574
1 file changed
+9
-11
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
142 | 142 | | |
143 | 143 | | |
144 | 144 | | |
145 | | - | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
153 | 145 | | |
154 | 146 | | |
155 | 147 | | |
| |||
161 | 153 | | |
162 | 154 | | |
163 | 155 | | |
164 | | - | |
165 | 156 | | |
166 | | - | |
167 | | - | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
168 | 163 | | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
169 | 167 | | |
170 | 168 | | |
171 | 169 | | |
| |||
0 commit comments