diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2023-10-06 05:39:36 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-06 05:39:36 -0700 |
commit | 01374446af9663dde5c60a7067775418c2cbf135 (patch) | |
tree | e52036a0938de7576da9bab3195c2d3bfda4d54c /src/nvim/window.c | |
parent | 4e4ad4312e6b3755a2114ab81c62033e6bc616fe (diff) | |
parent | 133e2990efa44cadf1410a452a08843dbd8ca86e (diff) | |
download | rneovim-01374446af9663dde5c60a7067775418c2cbf135.tar.gz rneovim-01374446af9663dde5c60a7067775418c2cbf135.tar.bz2 rneovim-01374446af9663dde5c60a7067775418c2cbf135.zip |
Merge #25236 from lsvmello/fix-gf
Diffstat (limited to 'src/nvim/window.c')
-rw-r--r-- | src/nvim/window.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c index 41199306fa..16bb7f5df7 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -6943,11 +6943,13 @@ char *file_name_in_line(char *line, int col, int options, int count, char *rel_f bool is_url = false; // Search backward for first char of the file name. - // Go one char back to ":" before "//" even when ':' is not in 'isfname'. + // Go one char back to ":" before "//", or to the drive letter before ":\" (even if ":" + // is not in 'isfname'). while (ptr > line) { if ((len = (size_t)(utf_head_off(line, ptr - 1))) > 0) { ptr -= len + 1; } else if (vim_isfilec((uint8_t)ptr[-1]) + || (len >= 2 && path_has_drive_letter(ptr - 2)) || ((options & FNAME_HYP) && path_is_url(ptr - 1))) { ptr--; } else { @@ -6957,14 +6959,13 @@ char *file_name_in_line(char *line, int col, int options, int count, char *rel_f // Search forward for the last char of the file name. // Also allow ":/" when ':' is not in 'isfname'. - len = 0; + len = path_has_drive_letter(ptr) ? 2 : 0; while (vim_isfilec((uint8_t)ptr[len]) || (ptr[len] == '\\' && ptr[len + 1] == ' ') || ((options & FNAME_HYP) && path_is_url(ptr + len)) || (is_url && vim_strchr(":?&=", (uint8_t)ptr[len]) != NULL)) { // After type:// we also include :, ?, & and = as valid characters, so that // http://google.com:8080?q=this&that=ok works. - if ((ptr[len] >= 'A' && ptr[len] <= 'Z') - || (ptr[len] >= 'a' && ptr[len] <= 'z')) { + if ((ptr[len] >= 'A' && ptr[len] <= 'Z') || (ptr[len] >= 'a' && ptr[len] <= 'z')) { if (in_type && path_is_url(ptr + len + 1)) { is_url = true; } |