From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.bugs Subject: bug#33005: 27.0.50; Data loss with Gnus registry Date: Fri, 18 Oct 2019 11:18:54 +0200 Message-ID: <87sgnq5s3l.fsf@web.de> References: <871s8yvsrq.fsf@web.de> <87in29x33z.fsf@ericabrahamsen.net> <87r2gxygox.fsf@web.de> <87efcxwzr2.fsf@ericabrahamsen.net> <874ldtlcks.fsf@web.de> <87ftxdl7w1.fsf@ericabrahamsen.net> <878t33cjf2.fsf@web.de> <87o8za4gbl.fsf@web.de> <87mueuicys.fsf@ericabrahamsen.net> <87d0fgnik0.fsf@ericabrahamsen.net> <87v9srzm9g.fsf@web.de> <87ftjvz045.fsf@ericabrahamsen.net> <87tv8ajd6d.fsf@web.de> <87lftlsr90.fsf@ericabrahamsen.net> <87h849xds3.fsf@web.de> <87eezcpuac.fsf@ericabrahamsen.net> <87lftjkcj7.fsf@web.de> <87sgnr74ig.fsf@ericabrahamsen.net> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="55114"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: 33005@debbugs.gnu.org To: Eric Abrahamsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Oct 18 11:20:41 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iLOR5-000EA8-Jf for geb-bug-gnu-emacs@m.gmane.org; Fri, 18 Oct 2019 11:20:39 +0200 Original-Received: from localhost ([::1]:36926 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLOR3-0008Fq-6I for geb-bug-gnu-emacs@m.gmane.org; Fri, 18 Oct 2019 05:20:38 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45240) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLOQX-0008Bj-1u for bug-gnu-emacs@gnu.org; Fri, 18 Oct 2019 05:20:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iLOQU-0002KV-2B for bug-gnu-emacs@gnu.org; Fri, 18 Oct 2019 05:20:05 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:40558) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iLOQT-0002KK-Q8 for bug-gnu-emacs@gnu.org; Fri, 18 Oct 2019 05:20:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iLOQT-0003VN-Kl for bug-gnu-emacs@gnu.org; Fri, 18 Oct 2019 05:20:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 18 Oct 2019 09:20:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33005 X-GNU-PR-Package: emacs Original-Received: via spool by 33005-submit@debbugs.gnu.org id=B33005.157139034813389 (code B ref 33005); Fri, 18 Oct 2019 09:20:01 +0000 Original-Received: (at 33005) by debbugs.gnu.org; 18 Oct 2019 09:19:08 +0000 Original-Received: from localhost ([127.0.0.1]:49375 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iLOPb-0003Ts-FI for submit@debbugs.gnu.org; Fri, 18 Oct 2019 05:19:08 -0400 Original-Received: from mout.web.de ([212.227.15.14]:37577) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iLOPY-0003TK-QY for 33005@debbugs.gnu.org; Fri, 18 Oct 2019 05:19:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1571390328; bh=M0x5tm74iHA2aGSYFKaTWL6qkJvVQSjA1Bsz6F6wyY4=; h=X-UI-Sender-Class:From:To:Cc:Subject:References:Date:In-Reply-To; b=NII4jX60JzkiXHPMMrpDW3WdBtJGdKgwpDpsst1dihsPwCw37ZrE/0QzXk4/cJ7Mc R4RLqJrQgthEMR4fAz83GPsQmAlwS0LOWDKYpvqY2fh5/zz83n4Og5gyFgMsVxJOW8 XtB7oCziyvpPDwjBGuks5iDZm8HuH0U0v8BQ2uvc= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Original-Received: from drachen.dragon ([94.218.222.9]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0Md4ZG-1idbkL1dVi-00ICXT; Fri, 18 Oct 2019 11:18:48 +0200 In-Reply-To: <87sgnr74ig.fsf@ericabrahamsen.net> (Eric Abrahamsen's message of "Thu, 17 Oct 2019 08:53:11 -0700") X-Provags-ID: V03:K1:Plz4jiByPaOtd1UIEhNprin4fURzJHQFX9V6CxaRc2/yo42x0zK js3XjEVlcq/5T4sOFDig5aFufwcOJ5DPdU6ozKr77jHLIRDiUJkW4HnfscpLszbeSsWyCDW KfASYQlR3iI1ZJ4P6yFjdoQUVZg6/Re1RZzWBDZox7tJlXjRaOr2XMCO2pil88VXUm0ti2/ iISwsHfPlmlbY+M3TFvsQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:dZYm5kEPWlw=:As3k0vwekFPhdLmB8cN+hC XH+FK7wP9iMFFOdynUf7hhmFLnfkZqANnGXAXaYHWcBPP9TqtNdD+VC1M94XlRmGt8Yw+t8VQ DRNZcBSxp1y96m0TQOKERo64ecrbDFn76IFdPI8C0TmC9DrufrnIwYpoAa6iS/R80r635jz2x YEjx6IlBcWirLqN8zCWOmE3bIl8GnAtzjSmsHm0vshN2kx3FkP1S9FeHIUoG7b1+DXwzMBd8r fPBwviM3TR4FpkeIt2hnKfXh4r16PSI8s2zGJvZdBG9uEBWGl45k6bN8S+MkES85aPIM4L5oG MTrXlouMwPKOxLgAuS8tbDTQg20Hp7zLLgBaltXKkIXS4SpvTWn5btMByIxVcUDRutwzfjrmL jaCwd054N1V/Tk/K3KvuFLqjxZkd41+B1/vijHCfLidiblj/hjNOut45xD3ecUmaQrKJxcdZX EBOuwPmraB7lWk8V0Kuv/8A4oMLCq3pNGKT33/OzbIrOXTzzoTssQ2ih5rlfBGoSZfYQVp6IQ x8qatQ+whkMeSNlQUdtxiwJtgCmZCZJDgo03iPHTdHLUzpu+skJcG//91Wd2nqxKTk4tNWd6B 3xDU+jzPDjB9Ao11h/gZdS16iHfRIN6JXJ/ZCixlA3mHQpNRXWW18NUIz3aKB8ygtso2246AW /xmXzv3lq/TOxYBUQEGQij3yNITia5cCbhpqXLyODBoNfk8/xtKvMp5+t3KV4ZIay3it0Q1qT RbsISStcF/JoHMNKdfR+RGAZbIdQdD++HGcqDr8w+uEPBi3A1hX/CEGmcfRvp5F5c/k+TX7C X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:169654 Archived-At: Eric Abrahamsen writes: > 1. Put a breakpoint or edebug or otherwise slow the function down, and > after the data directory has been copied to /tmp, make sure that it > belongs to your user and you have the right permissions? That's the case. > 2. Try this version of gnus-mock-start and see if it works: I did something different. Seems that so-long is to blame: | Debugger entered--entering a function: | * hack-local-variables(no-mode) | run-mode-hooks(so-long-mode-hook) | #f(compiled-function () (interactive nil) #)() | apply(#f(compiled-function () (interactive nil) #) nil) | so-long-mode() | so-long() | so-long--set-auto-mode((closure (t) (&optional keep-mode-if-same) "Sele= ct major mode appropriate for current buffer.\n..." (let ((try-locals (not = (inhibit-local-variables-p))) end done mode modes) (save-excursion (goto-ch= ar (point-min)) (skip-chars-forward " \11\n") (and enable-local-variables t= ry-locals (setq end (set-auto-mode-1)) (if (save-excursion (search-forward = ":" end t)) (while (let ... ...) (skip-chars-forward " \11") (let ... ... .= .. ...)) (setq modes (cons ... modes))))) (if modes (catch 'nop (let ((--do= list-tail-- ...)) (while --dolist-tail-- (let ... ... ...))))) (and (not do= ne) enable-local-variables local-enable-local-variables try-locals (setq mo= de (hack-local-variables t)) (not (memq mode modes)) (if (not (functionp mo= de)) (message "Ignoring unknown mode `%s'" mode) (setq done t) (set-auto-mo= de-0 mode keep-mode-if-same))) (and (not done) (setq mode (save-excursion (= goto-char (point-min)) (if (looking-at auto-mode-interpreter-regexp) (match= -string 2)))) (setq done (assoc-default (file-name-nondirectory mode) (mapc= ar #'... interpreter-mode-alist) #'string-match-p)) (set-auto-mode-0 done k= eep-mode-if-same)) (if done nil (if (setq done (save-excursion (goto-char .= ..) (save-restriction ... ...))) (set-auto-mode-0 done keep-mode-if-same)))= (if done nil (if buffer-file-name (let ((name buffer-file-name) (remote-id= ...) (case-insensitive-p ...)) (setq name (file-name-sans-versions name)) = (if (and ... ...) (progn ...)) (while name (setq mode ...) (if ... ... ...)= (if mode ...))))) (if done nil (if (setq done (save-excursion (goto-char .= ..) (save-restriction ... ...))) (set-auto-mode-0 done keep-mode-if-same)))= (if done nil (set-buffer-major-mode (current-buffer))))) t) | apply(so-long--set-auto-mode (closure (t) (&optional keep-mode-if-same)= "Select major mode appropriate for current buffer.\n..." (let ((try-locals= (not (inhibit-local-variables-p))) end done mode modes) (save-excursion (g= oto-char (point-min)) (skip-chars-forward " \11\n") (and enable-local-varia= bles try-locals (setq end (set-auto-mode-1)) (if (save-excursion (search-fo= rward ":" end t)) (while (let ... ...) (skip-chars-forward " \11") (let ...= ... ... ...)) (setq modes (cons ... modes))))) (if modes (catch 'nop (let = ((--dolist-tail-- ...)) (while --dolist-tail-- (let ... ... ...))))) (and (= not done) enable-local-variables local-enable-local-variables try-locals (s= etq mode (hack-local-variables t)) (not (memq mode modes)) (if (not (functi= onp mode)) (message "Ignoring unknown mode `%s'" mode) (setq done t) (set-a= uto-mode-0 mode keep-mode-if-same))) (and (not done) (setq mode (save-excur= sion (goto-char (point-min)) (if (looking-at auto-mode-interpreter-regexp) = (match-string 2)))) (setq done (assoc-default (file-name-nondirectory mode)= (mapcar #'... interpreter-mode-alist) #'string-match-p)) (set-auto-mode-0 = done keep-mode-if-same)) (if done nil (if (setq done (save-excursion (goto-= char ...) (save-restriction ... ...))) (set-auto-mode-0 done keep-mode-if-s= ame))) (if done nil (if buffer-file-name (let ((name buffer-file-name) (rem= ote-id ...) (case-insensitive-p ...)) (setq name (file-name-sans-versions n= ame)) (if (and ... ...) (progn ...)) (while name (setq mode ...) (if ... ..= . ...) (if mode ...))))) (if done nil (if (setq done (save-excursion (goto-= char ...) (save-restriction ... ...))) (set-auto-mode-0 done keep-mode-if-s= ame))) (if done nil (set-buffer-major-mode (current-buffer))))) t) | #f(advice-wrapper :around (closure (t) (&optional keep-mode-if-same) "S= elect major mode appropriate for current buffer.\n\nTo find the right major= mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry = in the Local Variables section of the file,\nchecks if it uses an interpret= er listed in `interpreter-mode-alist',\nmatches the buffer beginning agains= t `magic-mode-alist',\ncompares the filename against the entries in `auto-m= ode-alist',\nthen matches the buffer beginning against `magic-fallback-mode= -alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches= \n`inhibit-local-variables-regexps', this function does not check\nfor any = mode: tag anywhere in the file. If `local-enable-local-variables'\nis nil,= then the only mode: tag that can be relevant is a -*- one.\n\nIf the optio= nal argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only= if that would change it. In other words\nwe don't actually set it to the = same mode the buffer already has." (let ((try-locals (not (inhibit-local-va= riables-p))) end done mode modes) (save-excursion (goto-char (point-min)) (= skip-chars-forward " \11\n") (and enable-local-variables try-locals (setq e= nd (set-auto-mode-1)) (if (save-excursion (search-forward ":" end t)) (whil= e (let ((case-fold-search t)) (or (and (looking-at "mode:") (goto-char (mat= ch-end 0))) (re-search-forward "[ \11;]mode:" end t))) (skip-chars-forward = " \11") (let ((beg (point))) (if (search-forward ";" end t) (forward-char -= 1) (goto-char end)) (skip-chars-backward " \11") (setq modes (cons (intern = (concat (downcase (buffer-substring beg (point))) "-mode")) modes)))) (setq= modes (cons (intern (concat (downcase (buffer-substring (point) end)) "-mo= de")) modes))))) (if modes (catch 'nop (let ((--dolist-tail-- (nreverse mod= es))) (while --dolist-tail-- (let ((mode (car --dolist-tail--))) (if (not (= functionp mode)) (message "Ignoring unknown mode `%s'" mode) (setq done t) = (or (set-auto-mode-0 mode keep-mode-if-same) (throw 'nop nil))) (setq --dol= ist-tail-- (cdr --dolist-tail--))))))) (and (not done) enable-local-variabl= es local-enable-local-variables try-locals (setq mode (hack-local-variables= t)) (not (memq mode modes)) (if (not (functionp mode)) (message "Ignoring = unknown mode `%s'" mode) (setq done t) (set-auto-mode-0 mode keep-mode-if-s= ame))) (and (not done) (setq mode (save-excursion (goto-char (point-min)) (= if (looking-at auto-mode-interpreter-regexp) (match-string 2)))) (setq done= (assoc-default (file-name-nondirectory mode) (mapcar #'(lambda (e) (cons (= format "\\`%s\\'" (car e)) (cdr e))) interpreter-mode-alist) #'string-match= -p)) (set-auto-mode-0 done keep-mode-if-same)) (if done nil (if (setq done = (save-excursion (goto-char (point-min)) (save-restriction (narrow-to-region= (point-min) (min (point-max) (+ (point-min) magic-mode-regexp-match-limit)= )) (assoc-default nil magic-mode-alist #'(lambda (re _dummy) (cond ((functi= onp re) (funcall re)) ((stringp re) (let ((case-fold-search nil)) (looking-= at re))) (t (error "Problem in magic-mode-alist with element %s" re))))))))= (set-auto-mode-0 done keep-mode-if-same))) (if done nil (if buffer-file-na= me (let ((name buffer-file-name) (remote-id (file-remote-p buffer-file-name= )) (case-insensitive-p (file-name-case-insensitive-p buffer-file-name))) (s= etq name (file-name-sans-versions name)) (if (and (stringp remote-id) (stri= ng-match (regexp-quote remote-id) name)) (progn (setq name (substring name = (match-end 0))))) (while name (setq mode (if case-insensitive-p (let ((case= -fold-search t)) (assoc-default name auto-mode-alist 'string-match)) (or (l= et ((case-fold-search nil)) (assoc-default name auto-mode-alist 'string-mat= ch)) (and auto-mode-case-fold (let ((case-fold-search t)) (assoc-default na= me auto-mode-alist 'string-match)))))) (if (and mode (consp mode) (car (cdr= mode))) (setq mode (car mode) name (substring name 0 (match-beginning 0)))= (setq name nil)) (if mode (progn (set-auto-mode-0 mode keep-mode-if-same) = (setq done t))))))) (if done nil (if (setq done (save-excursion (goto-char = (point-min)) (save-restriction (narrow-to-region (point-min) (min (point-ma= x) (+ (point-min) magic-mode-regexp-match-limit))) (assoc-default nil magic= -fallback-mode-alist #'(lambda (re _dummy) (cond ((functionp re) (funcall r= e)) ((stringp re) (let ((case-fold-search nil)) (looking-at re))) (t (error= "Problem with magic-fallback-mode-alist element: %s" re)))))))) (set-auto-= mode-0 done keep-mode-if-same))) (if done nil (set-buffer-major-mode (curre= nt-buffer))))) so-long--set-auto-mode)(t) | apply(#f(advice-wrapper :around (closure (t) (&optional keep-mode-if-sa= me) "Select major mode appropriate for current buffer.\n..." (let ((try-loc= als (not (inhibit-local-variables-p))) end done mode modes) (save-excursion= (goto-char (point-min)) (skip-chars-forward " \11\n") (and enable-local-va= riables try-locals (setq end (set-auto-mode-1)) (if (save-excursion ...) (w= hile ... ... ...) (setq modes ...)))) (if modes (catch 'nop (let (...) (whi= le --dolist-tail-- ...)))) (and (not done) enable-local-variables local-ena= ble-local-variables try-locals (setq mode (hack-local-variables t)) (not (m= emq mode modes)) (if (not (functionp mode)) (message "Ignoring unknown mode= `%s'" mode) (setq done t) (set-auto-mode-0 mode keep-mode-if-same))) (and = (not done) (setq mode (save-excursion (goto-char ...) (if ... ...))) (setq = done (assoc-default (file-name-nondirectory mode) (mapcar ... interpreter-m= ode-alist) #'string-match-p)) (set-auto-mode-0 done keep-mode-if-same)) (if= done nil (if (setq done (save-excursion ... ...)) (set-auto-mode-0 done ke= ep-mode-if-same))) (if done nil (if buffer-file-name (let (... ... ...) (se= tq name ...) (if ... ...) (while name ... ... ...)))) (if done nil (if (set= q done (save-excursion ... ...)) (set-auto-mode-0 done keep-mode-if-same)))= (if done nil (set-buffer-major-mode (current-buffer))))) so-long--set-auto= -mode) t) | set-auto-mode(t) | (let ((old major-mode)) (set-auto-mode t) (or (eq old major-mode) (hack= -local-variables))) | (or (not change-major-mode-with-file-name) (get major-mode 'mode-class)= (and old-try-locals (not (inhibit-local-variables-p)) (hack-local-variable= s t)) (let ((old major-mode)) (set-auto-mode t) (or (eq old major-mode) (ha= ck-local-variables)))) | (condition-case nil (or (not change-major-mode-with-file-name) (get maj= or-mode 'mode-class) (and old-try-locals (not (inhibit-local-variables-p)) = (hack-local-variables t)) (let ((old major-mode)) (set-auto-mode t) (or (eq= old major-mode) (hack-local-variables)))) (error nil)) | (let (truename old-try-locals) (if filename (setq filename (if (string-= equal filename "") nil (expand-file-name filename)))) (if filename (progn (= setq truename (file-truename filename)) (if find-file-visit-truename (setq = filename truename)))) (if filename (let ((new-name (file-name-nondirectory = filename))) (if (string=3D new-name "") (error "Empty file name")))) (let (= (buffer (and filename (find-buffer-visiting filename)))) (and buffer (not (= eq buffer (current-buffer))) (not no-query) (not (y-or-n-p (format "A buffe= r is visiting %s; proceed? " filename))) (user-error "Aborted"))) (or (equa= l filename buffer-file-name) (progn (and filename (lock-buffer filename)) (= unlock-buffer))) (setq old-try-locals (not (inhibit-local-variables-p)) buf= fer-file-name filename) (if filename (let ((new-name (file-name-nondirector= y buffer-file-name))) (setq default-directory (file-name-directory buffer-f= ile-name)) (or (string=3D new-name (buffer-name)) (rename-buffer new-name t= )))) (setq buffer-backed-up nil) (or along-with-file (clear-visited-file-mo= dtime)) (if truename (progn (setq buffer-file-truename (abbreviate-file-nam= e truename)) (if find-file-visit-truename (setq buffer-file-name truename))= )) (setq buffer-file-number (if filename (nthcdr 10 (file-attributes buffer= -file-name)) nil)) (kill-local-variable 'write-file-functions) (kill-local-= variable 'local-write-file-hooks) (kill-local-variable 'revert-buffer-funct= ion) (kill-local-variable 'backup-inhibited) (if vc-mode (setq buffer-read-= only nil)) (kill-local-variable 'vc-mode) (and buffer-file-name backup-enab= le-predicate (not (funcall backup-enable-predicate buffer-file-name)) (prog= n (make-local-variable 'backup-inhibited) (setq backup-inhibited t))) (let = ((oauto buffer-auto-save-file-name)) (cond ((null filename) (setq buffer-au= to-save-file-name nil)) ((not buffer-auto-save-file-name) (and buffer-file-= name auto-save-default (auto-save-mode t))) (t (setq buffer-auto-save-file-= name (make-auto-save-file-name)))) (and oauto buffer-auto-save-file-name (f= ile-exists-p oauto) (rename-file oauto buffer-auto-save-file-name t))) (and= buffer-file-name (not along-with-file) (set-buffer-modified-p t)) (conditi= on-case nil (or (not change-major-mode-with-file-name) (get major-mode 'mod= e-class) (and old-try-locals (not (inhibit-local-variables-p)) (hack-local-= variables t)) (let ((old major-mode)) (set-auto-mode t) (or (eq old major-m= ode) (hack-local-variables)))) (error nil)) (run-hooks 'after-set-visited-f= ile-name-hook)) | (closure (t) (filename &optional no-query along-with-file) "Change name= of file visited in current buff..." (interactive "FSet visited file name: = ") (if (buffer-base-buffer) (error "An indirect buffer cannot visit a file"= )) (let (truename old-try-locals) (if filename (setq filename (if (string-e= qual filename "") nil (expand-file-name filename)))) (if filename (progn (s= etq truename (file-truename filename)) (if find-file-visit-truename (setq f= ilename truename)))) (if filename (let ((new-name ...)) (if (string=3D new-= name "") (error "Empty file name")))) (let ((buffer (and filename ...))) (a= nd buffer (not (eq buffer ...)) (not no-query) (not (y-or-n-p ...)) (user-e= rror "Aborted"))) (or (equal filename buffer-file-name) (progn (and filenam= e (lock-buffer filename)) (unlock-buffer))) (setq old-try-locals (not (inhi= bit-local-variables-p)) buffer-file-name filename) (if filename (let ((new-= name ...)) (setq default-directory (file-name-directory buffer-file-name)) = (or (string=3D new-name ...) (rename-buffer new-name t)))) (setq buffer-bac= ked-up nil) (or along-with-file (clear-visited-file-modtime)) (if truename = (progn (setq buffer-file-truename (abbreviate-file-name truename)) (if find= -file-visit-truename (setq buffer-file-name truename)))) (setq buffer-file-= number (if filename (nthcdr 10 (file-attributes buffer-file-name)) nil)) (k= ill-local-variable 'write-file-functions) (kill-local-variable 'local-write= -file-hooks) (kill-local-variable 'revert-buffer-function) (kill-local-vari= able 'backup-inhibited) (if vc-mode (setq buffer-read-only nil)) (kill-loca= l-variable 'vc-mode) (and buffer-file-name backup-enable-predicate (not (fu= ncall backup-enable-predicate buffer-file-name)) (progn (make-local-variabl= e 'backup-inhibited) (setq backup-inhibited t))) (let ((oauto buffer-auto-s= ave-file-name)) (cond ((null filename) (setq buffer-auto-save-file-name nil= )) ((not buffer-auto-save-file-name) (and buffer-file-name auto-save-defaul= t ...)) (t (setq buffer-auto-save-file-name ...))) (and oauto buffer-auto-s= ave-file-name (file-exists-p oauto) (rename-file oauto buffer-auto-save-fil= e-name t))) (and buffer-file-name (not along-with-file) (set-buffer-modifie= d-p t)) (condition-case nil (or (not change-major-mode-with-file-name) (get= major-mode 'mode-class) (and old-try-locals (not ...) (hack-local-variable= s t)) (let (...) (set-auto-mode t) (or ... ...))) (error nil)) (run-hooks '= after-set-visited-file-name-hook)))("/tmp/emacs-gnus-mock-WDzPUE/init.el" t) | apply((closure (t) (filename &optional no-query along-with-file) "Chang= e name of file visited in current buffer to F..." (interactive "FSet visite= d file name: ") (if (buffer-base-buffer) (error "An indirect buffer cannot = visit a file")) (let (truename old-try-locals) (if filename (setq filename = (if (string-equal filename "") nil (expand-file-name filename)))) (if filen= ame (progn (setq truename (file-truename filename)) (if find-file-visit-tru= ename (setq filename truename)))) (if filename (let ((new-name (file-name-n= ondirectory filename))) (if (string=3D new-name "") (error "Empty file name= ")))) (let ((buffer (and filename (find-buffer-visiting filename)))) (and b= uffer (not (eq buffer (current-buffer))) (not no-query) (not (y-or-n-p (for= mat "A buffer is visiting %s; proceed? " filename))) (user-error "Aborted")= )) (or (equal filename buffer-file-name) (progn (and filename (lock-buffer = filename)) (unlock-buffer))) (setq old-try-locals (not (inhibit-local-varia= bles-p)) buffer-file-name filename) (if filename (let ((new-name (file-name= -nondirectory buffer-file-name))) (setq default-directory (file-name-direct= ory buffer-file-name)) (or (string=3D new-name (buffer-name)) (rename-buffe= r new-name t)))) (setq buffer-backed-up nil) (or along-with-file (clear-vis= ited-file-modtime)) (if truename (progn (setq buffer-file-truename (abbrevi= ate-file-name truename)) (if find-file-visit-truename (setq buffer-file-nam= e truename)))) (setq buffer-file-number (if filename (nthcdr 10 (file-attri= butes buffer-file-name)) nil)) (kill-local-variable 'write-file-functions) = (kill-local-variable 'local-write-file-hooks) (kill-local-variable 'revert-= buffer-function) (kill-local-variable 'backup-inhibited) (if vc-mode (setq = buffer-read-only nil)) (kill-local-variable 'vc-mode) (and buffer-file-name= backup-enable-predicate (not (funcall backup-enable-predicate buffer-file-= name)) (progn (make-local-variable 'backup-inhibited) (setq backup-inhibite= d t))) (let ((oauto buffer-auto-save-file-name)) (cond ((null filename) (se= tq buffer-auto-save-file-name nil)) ((not buffer-auto-save-file-name) (and = buffer-file-name auto-save-default (auto-save-mode t))) (t (setq buffer-aut= o-save-file-name (make-auto-save-file-name)))) (and oauto buffer-auto-save-= file-name (file-exists-p oauto) (rename-file oauto buffer-auto-save-file-na= me t))) (and buffer-file-name (not along-with-file) (set-buffer-modified-p = t)) (condition-case nil (or (not change-major-mode-with-file-name) (get maj= or-mode 'mode-class) (and old-try-locals (not (inhibit-local-variables-p)) = (hack-local-variables t)) (let ((old major-mode)) (set-auto-mode t) (or (eq= old major-mode) (hack-local-variables)))) (error nil)) (run-hooks 'after-s= et-visited-file-name-hook))) ("/tmp/emacs-gnus-mock-WDzPUE/init.el" t)) | set-visited-file-name("/tmp/emacs-gnus-mock-WDzPUE/init.el" t) | (progn (if (directory-name-p filename) (setq filename (concat filename = (file-name-nondirectory (or buffer-file-name (buffer-name)))))) (and confir= m (file-exists-p filename) (not (and (eq (framep-on-display) 'ns) (listp la= st-nonmenu-event) use-dialog-box)) (or (y-or-n-p (format-message "File `%s'= exists; overwrite? " filename)) (user-error "Canceled"))) (set-visited-fil= e-name filename (not confirm))) | (or (null filename) (string-equal filename "") (progn (if (directory-na= me-p filename) (setq filename (concat filename (file-name-nondirectory (or = buffer-file-name (buffer-name)))))) (and confirm (file-exists-p filename) (= not (and (eq (framep-on-display) 'ns) (listp last-nonmenu-event) use-dialog= -box)) (or (y-or-n-p (format-message "File `%s' exists; overwrite? " filena= me)) (user-error "Canceled"))) (set-visited-file-name filename (not confirm= )))) | (closure (t) (filename &optional confirm) "Write current buffer into fi= le FILENAME.\nThis make..." (interactive (list (if buffer-file-name (read-f= ile-name "Write file: " nil nil nil nil) (read-file-name "Write file: " def= ault-directory (expand-file-name (file-name-nondirectory ...) default-direc= tory) nil nil)) (not current-prefix-arg))) (or (null filename) (string-equa= l filename "") (progn (if (directory-name-p filename) (setq filename (conca= t filename (file-name-nondirectory ...)))) (and confirm (file-exists-p file= name) (not (and (eq ... ...) (listp last-nonmenu-event) use-dialog-box)) (o= r (y-or-n-p (format-message "File `%s' exists; overwrite? " filename)) (use= r-error "Canceled"))) (set-visited-file-name filename (not confirm)))) (set= -buffer-modified-p t) (and buffer-file-name (file-writable-p buffer-file-na= me) (setq buffer-read-only nil)) (save-buffer) (vc-refresh-state))("/tmp/em= acs-gnus-mock-WDzPUE/init.el") | apply((closure (t) (filename &optional confirm) "Write current buffer i= nto file FILENAME.\nThis make..." (interactive (list (if buffer-file-name (= read-file-name "Write file: " nil nil nil nil) (read-file-name "Write file:= " default-directory (expand-file-name (file-name-nondirectory ...) default= -directory) nil nil)) (not current-prefix-arg))) (or (null filename) (strin= g-equal filename "") (progn (if (directory-name-p filename) (setq filename = (concat filename (file-name-nondirectory ...)))) (and confirm (file-exists-= p filename) (not (and (eq ... ...) (listp last-nonmenu-event) use-dialog-bo= x)) (or (y-or-n-p (format-message "File `%s' exists; overwrite? " filename)= ) (user-error "Canceled"))) (set-visited-file-name filename (not confirm)))= ) (set-buffer-modified-p t) (and buffer-file-name (file-writable-p buffer-f= ile-name) (setq buffer-read-only nil)) (save-buffer) (vc-refresh-state)) "/= tmp/emacs-gnus-mock-WDzPUE/init.el") | write-file("/tmp/emacs-gnus-mock-WDzPUE/init.el") | gnus-mock-start() | funcall-interactively(gnus-mock-start) | call-interactively(gnus-mock-start record nil) | command-execute(gnus-mock-start record) When I delete the (buffer-read-only . t) association from `so-long-variable-overrides' the problem is fixed. The only so-long thing in my init file is (global-so-long-mode 1). Since some people will do this and the default behavior breaks gnus-mock I guess you will want to handle this somehow. Regards, Michael.