unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#61321: 30.0.50; Fail to load file with file variables and CRLF EOL without EOL conversion
@ 2023-02-06 14:02 Kazuhiro Ito
  2023-02-06 15:17 ` Eli Zaretskii
  0 siblings, 1 reply; 4+ messages in thread
From: Kazuhiro Ito @ 2023-02-06 14:02 UTC (permalink / raw)
  To: 61321

I receive user error in opening a file with file varibles and CRLF EOL
when I inhibit EOL conversion.

(let ((filename (expand-file-name "test.txt"
				  temporary-file-directory)))
  (with-temp-buffer
    (setq buffer-file-coding-system 'dos)
    (insert "This is a test.\n"
	    "\n"
	    "Local Variables:\n"
	    "comment-column: 0\n"
	    "End:\n")
    (write-file filename))
  (unwind-protect
      (let (;; (coding-system-for-read 'unix)
	    (inhibit-eol-conversion t)
	    )
	(find-file filename))
    (delete-file filename)))

-> Local variables entry is missing the suffix

I bumped this issue by calling url-retrieve-synchronously with
coding-system-for-read is let-bound to 'binary.  On MS-Windows, url
package saves cookies into a file with CRLF EOL and fails to load it
under such condition.

Of course I can fix the caller and have already fixed, but
inhibit-eol-conversion is customizable variable and file variables can
be set in any text files.  So this issue may occur in opening any
files, although it should have rarely been a real problem.  (I
confirmed that the issue had been introduced emacs 22 at the latest.)

-- 
Kazuhiro Ito





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#61321: 30.0.50; Fail to load file with file variables and CRLF EOL without EOL conversion
  2023-02-06 14:02 bug#61321: 30.0.50; Fail to load file with file variables and CRLF EOL without EOL conversion Kazuhiro Ito
@ 2023-02-06 15:17 ` Eli Zaretskii
  2023-02-06 16:01   ` Kazuhiro Ito
  0 siblings, 1 reply; 4+ messages in thread
From: Eli Zaretskii @ 2023-02-06 15:17 UTC (permalink / raw)
  To: Kazuhiro Ito; +Cc: 61321

> Date: Mon, 06 Feb 2023 23:02:01 +0900
> From: Kazuhiro Ito <kzhr@d1.dion.ne.jp>
> 
> (let ((filename (expand-file-name "test.txt"
> 				  temporary-file-directory)))
>   (with-temp-buffer
>     (setq buffer-file-coding-system 'dos)
>     (insert "This is a test.\n"
> 	    "\n"
> 	    "Local Variables:\n"
> 	    "comment-column: 0\n"
> 	    "End:\n")
>     (write-file filename))
>   (unwind-protect
>       (let (;; (coding-system-for-read 'unix)
> 	    (inhibit-eol-conversion t)
> 	    )
> 	(find-file filename))
>     (delete-file filename)))
> 
> -> Local variables entry is missing the suffix

Thanks.  Does the patch below give good results?

diff --git a/lisp/files.el b/lisp/files.el
index 9da8244..b0ec6bb 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -4017,6 +4017,7 @@ hack-local-variables--find-variables
 	  (forward-line 1)
 	  (let ((startpos (point))
 	        endpos
+                (selective-p (eq selective-display t))
 	        (thisbuf (current-buffer)))
 	    (save-excursion
 	      (unless (let ((case-fold-search t))
@@ -4033,7 +4034,8 @@ hack-local-variables--find-variables
 	    (with-temp-buffer
 	      (insert-buffer-substring thisbuf startpos endpos)
 	      (goto-char (point-min))
-	      (subst-char-in-region (point) (point-max) ?\^m ?\n)
+              (if selective-p
+	          (subst-char-in-region (point) (point-max) ?\r ?\n))
 	      (while (not (eobp))
 	        ;; Discard the prefix.
 	        (if (looking-at prefix)





^ permalink raw reply related	[flat|nested] 4+ messages in thread

* bug#61321: 30.0.50; Fail to load file with file variables and CRLF EOL without EOL conversion
  2023-02-06 15:17 ` Eli Zaretskii
@ 2023-02-06 16:01   ` Kazuhiro Ito
  2023-02-06 16:30     ` Eli Zaretskii
  0 siblings, 1 reply; 4+ messages in thread
From: Kazuhiro Ito @ 2023-02-06 16:01 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 61321

> > (let ((filename (expand-file-name "test.txt"
> > 				  temporary-file-directory)))
> >   (with-temp-buffer
> >     (setq buffer-file-coding-system 'dos)
> >     (insert "This is a test.\n"
> > 	    "\n"
> > 	    "Local Variables:\n"
> > 	    "comment-column: 0\n"
> > 	    "End:\n")
> >     (write-file filename))
> >   (unwind-protect
> >       (let (;; (coding-system-for-read 'unix)
> > 	    (inhibit-eol-conversion t)
> > 	    )
> > 	(find-file filename))
> >     (delete-file filename)))
> > 
> > -> Local variables entry is missing the suffix
> 
> Thanks.  Does the patch below give good results?

I confirmed the problem was fixed.  Thank you for the quick fix!

-- 
Kazuhiro Ito





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#61321: 30.0.50; Fail to load file with file variables and CRLF EOL without EOL conversion
  2023-02-06 16:01   ` Kazuhiro Ito
@ 2023-02-06 16:30     ` Eli Zaretskii
  0 siblings, 0 replies; 4+ messages in thread
From: Eli Zaretskii @ 2023-02-06 16:30 UTC (permalink / raw)
  To: Kazuhiro Ito; +Cc: 61321-done

> Date: Tue, 07 Feb 2023 01:01:53 +0900
> From: Kazuhiro Ito <kzhr@d1.dion.ne.jp>
> Cc: 61321@debbugs.gnu.org
> 
> > > (let ((filename (expand-file-name "test.txt"
> > > 				  temporary-file-directory)))
> > >   (with-temp-buffer
> > >     (setq buffer-file-coding-system 'dos)
> > >     (insert "This is a test.\n"
> > > 	    "\n"
> > > 	    "Local Variables:\n"
> > > 	    "comment-column: 0\n"
> > > 	    "End:\n")
> > >     (write-file filename))
> > >   (unwind-protect
> > >       (let (;; (coding-system-for-read 'unix)
> > > 	    (inhibit-eol-conversion t)
> > > 	    )
> > > 	(find-file filename))
> > >     (delete-file filename)))
> > > 
> > > -> Local variables entry is missing the suffix
> > 
> > Thanks.  Does the patch below give good results?
> 
> I confirmed the problem was fixed.  Thank you for the quick fix!

Thanks, I've now installed this on the master branch, and I'm
therefore closing this bug.





^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-02-06 16:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-06 14:02 bug#61321: 30.0.50; Fail to load file with file variables and CRLF EOL without EOL conversion Kazuhiro Ito
2023-02-06 15:17 ` Eli Zaretskii
2023-02-06 16:01   ` Kazuhiro Ito
2023-02-06 16:30     ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).