Subject: 27.1; Regression in `ffap-read-file-or-url'

From: Drew Adams <[email-masked]>
Date: Mon, 23 Nov 2020 09:23:37 -0800 (PST)

`ffap-read-file-or-url' now reads a URL as a file name, truncating to
remove a prefix such as http:/.  Prior to Emacs 27, it correctly
returned the URL.

If point is not on a URL, then the guess is nil.  The user is prompted
(as before) with the default directory as default.  If the user rejects
that default value and replaces it by a URL (e.g. yanking), then
`ffap-read-file-or-url' should just return that URL, as it has always
done.  In Emacs 27, it instead tries to handle it as a file name,
removing the prefix up to the first `/' before a non-/ char.

emacs -Q

;; With point not on a URL or file name:

(ffap-read-file-or-url "URL: " nil)

;; User is prompted, with the default-directory as default:

URL: /my/default/dir/

;; User pastes a URL after that or replaces that with a URL.

URL: /my/default/dir/http://foobar.com RET
;; or
URL: http://foobar.com RET

;; This is returned: /foobar.com

In Emacs 26.3 the URL entered by the user is returned correctly.

A main use of `read-file-or-url' is to prompt for and read a URL.  If a
user enters a URL when FFAP has not been able to guess a URL, FFAP now
just treats the input as a filename.  It treats prefix `http:/' the same
way it would treat prefix `c:' on MS Windows.

Reading a URL is maybe the main use case of `ffap-read-file-or-url'.  (There is no `ffap-read-url'.)  It's now broken.

In GNU Emacs 27.1 (build 1, x86_64-w64-mingw32)
 of 2020-08-12 built on CIRROCUMULUS
Repository revision: 86d8d76aa36037184db0b2897c434cdaab1a9ae8
Repository branch: HEAD
Windowing system distributor 'Microsoft Corp.', version 10.0.18362
System Description: Microsoft Windows 10 Pro (v10.0.1903.18362.1139)