To: vim_dev@googlegroups.com Subject: Patch 8.0.1426 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.0.1426 Problem: "gf" and don't accept ? and & in URL. (Dmitrii Tcyganok) Solution: Check for a URL and allow for extra characters. (closes #2493) Files: src/window.c, src/testdir/test_gf.vim *** ../vim-8.0.1425/src/window.c 2017-12-05 20:31:02.520899063 +0100 --- src/window.c 2017-12-25 14:25:10.192459557 +0100 *************** *** 6081,6087 **** count, curbuf->b_ffname); } return file_name_at_cursor(options | FNAME_HYP, count, file_lnum); - } /* --- 6081,6086 ---- *************** *** 6120,6125 **** --- 6119,6126 ---- { char_u *ptr; int len; + int in_type = TRUE; + int is_url = FALSE; /* * search forward for what could be the start of a file name *************** *** 6158,6165 **** */ len = 0; while (vim_isfilec(ptr[len]) || (ptr[len] == '\\' && ptr[len + 1] == ' ') ! || ((options & FNAME_HYP) && path_is_url(ptr + len))) { if (ptr[len] == '\\') /* Skip over the "\" in "\ ". */ ++len; --- 6159,6177 ---- */ len = 0; while (vim_isfilec(ptr[len]) || (ptr[len] == '\\' && ptr[len + 1] == ' ') ! || ((options & FNAME_HYP) && path_is_url(ptr + len)) ! || (is_url && vim_strchr((char_u *)"?&=", ptr[len]) != NULL)) { + /* After type:// we also include ?, & and = as valid characters, so that + * http://google.com?q=this&that=ok works. */ + 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; + } + else + in_type = FALSE; + if (ptr[len] == '\\') /* Skip over the "\" in "\ ". */ ++len; *** ../vim-8.0.1425/src/testdir/test_gf.vim 2017-05-24 10:42:29.402752228 +0200 --- src/testdir/test_gf.vim 2017-12-25 14:22:11.297348014 +0100 *************** *** 7,13 **** \ "first test for URL://machine.name/tmp/vimtest2a and other text", \ "second test for URL://machine.name/tmp/vimtest2b. And other text", \ "third test for URL:\\\\machine.name\\vimtest2c and other text", ! \ "fourth test for URL:\\\\machine.name\\tmp\\vimtest2d, and other text" \ ]) call cursor(1,1) call search("^first") --- 7,14 ---- \ "first test for URL://machine.name/tmp/vimtest2a and other text", \ "second test for URL://machine.name/tmp/vimtest2b. And other text", \ "third test for URL:\\\\machine.name\\vimtest2c and other text", ! \ "fourth test for URL:\\\\machine.name\\tmp\\vimtest2d, and other text", ! \ "fifth test for URL://machine.name/tmp?q=vim&opt=yes and other text", \ ]) call cursor(1,1) call search("^first") *************** *** 28,33 **** --- 29,38 ---- call search("URL") call assert_equal("URL:\\\\machine.name\\tmp\\vimtest2d", expand("")) + call search("^fifth") + call search("URL") + call assert_equal("URL://machine.name/tmp?q=vim&opt=yes", expand("")) + set isf&vim enew! endfunc *** ../vim-8.0.1425/src/version.c 2017-12-25 13:44:38.340448557 +0100 --- src/version.c 2017-12-25 14:27:04.063886589 +0100 *************** *** 773,774 **** --- 773,776 ---- { /* Add new patch number below this line */ + /**/ + 1426, /**/ -- hundred-and-one symptoms of being an internet addict: 161. You get up before the sun rises to check your e-mail, and you find yourself in the very same chair long after the sun has set. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///