Skip to content

Conversation

@mihaigalos
Copy link

This PR offers case-insensitive support for just files.

@mihaigalos mihaigalos changed the title Match filenames case-insenstively Match just filenames case-insenstively Oct 10, 2021
@mihaigalos mihaigalos changed the title Match just filenames case-insenstively Match just filenames case-insensitively Oct 12, 2021
@alerque
Copy link

alerque commented Oct 3, 2025

Overlaps with #758 and #871. Whatever order these go through, they should all get processed. I'd be willing to help out with merge resolution if anybody is interested in this repo getting some TLC.

Kache added a commit to Kache/vim-polyglot that referenced this pull request Nov 10, 2025
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#758, sheerun#871, NoahTheDuke/vim-just#125
Fix: sheerun#877, sheerun#125, sheerun#829, sheerun#845, sheerun#817
Kache added a commit to Kache/vim-polyglot that referenced this pull request Nov 10, 2025
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#758, sheerun#871, NoahTheDuke/vim-just#125
Fix: sheerun#877, sheerun#829, sheerun#845, sheerun#817
@Kache
Copy link

Kache commented Dec 3, 2025

my #878 addresses this issue for me, demo:

vim -c "set filetype?" -c 'sleep 2' -c 'q!' JUSTFILE

Kache added a commit to Kache/vim-polyglot that referenced this pull request Dec 3, 2025
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#817
Kache added a commit to Kache/vim-polyglot that referenced this pull request Dec 3, 2025
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 "set filetype?" -c 'sleep 2' -c 'q!' foo.jjdescription
    vim -c "set filetype?" -c 'sleep 2' -c 'q!' foo.http
    vim -c "set filetype?" -c 'sleep 2' -c 'q!' .mysql_history

Compare:

    vim --clean -c "set filetype?" -c 'sleep 2' -c 'q!' foo.jjdescription
    vim --clean -c "set filetype?" -c 'sleep 2' -c 'q!' foo.http
    vim --clean -c "set filetype?" -c 'sleep 2' -c 'q!' .mysql_history

And:

    vim -c "set filetype?" -c 'sleep 2' -c 'q!' foo.py
    vim -c "set filetype?" -c 'sleep 2' -c 'q!' foo.bash
    vim -c "set filetype?" -c 'sleep 2' -c 'q!' 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#817
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants