unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Radon Rosborough <radon.neon@gmail.com>
To: "Stefan Monnier" <monnier@iro.umontreal.ca>,
	"Clément Pit-Claudel" <cpitclaudel@gmail.com>
Cc: emacs-devel <emacs-devel@gnu.org>
Subject: Re: [PATCH] Fixing package-initialize, adding early init file
Date: Sun, 28 Jan 2018 11:42:53 -0800	[thread overview]
Message-ID: <CADB4rJHrDJL38m=Lfw4rpb2pwC2D6KTeMmYvzuz+DFxuhJ3Ekw@mail.gmail.com> (raw)
In-Reply-To: <jwvtvvasz6z.fsf-monnier+gmane.emacs.devel@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 127 bytes --]

I've fixed all the problems noted by Stefan and Clément, and rebased
onto the latest master. The revised patch is attached.

[-- Attachment #2: 0001-Add-early-init-file-stop-package-initialize-insertio.patch --]
[-- Type: application/octet-stream, Size: 31675 bytes --]

From 7e45f0e4ee1eb666c096ed12435f5edb434bb2bf Mon Sep 17 00:00:00 2001
From: Radon Rosborough <radon.neon@gmail.com>
Date: Sun, 17 Dec 2017 17:31:17 -0700
Subject: [PATCH] Add early init file, stop package-initialize insertion

* lisp/startup.el (early-init-file): New variable, for the filename of
the early init file after it has been loaded.
(load-user-init-file): New function, used to eliminate duplicate code
in loading the early and regular init files.
(command-line): Load the early init file using `load-user-init-file'.
Move the check for an invalid username to just before that, and move
the initialization of the package system to just after.  Load the
regular init file using `load-user-init-file'.

* src/lread.c (Vuser_init_file): Note change in semantics due to its
usage while loading the early init file.

* lisp/emacs-lisp/package.el (package--ensure-init-file): Remove
definition, usage, and documentation.
(package--init-file-ensured): Remove definition and usage.

* doc/lispref/os.texi: Document early init file.

* doc/lispref/package.texi: Document changes to when
package-initialize is called, and advise against calling it in the
init file.

* doc/emacs/package.texi: Document changes to when package-initialize
is called.

* doc/misc/org.texi: Don't recommend to call package-initialize in the
init file.

Discussion on emacs-devel leading up to this change (approximately 150
messages):

- https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00154.html
- https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00433.html
- https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00023.html
- https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00599.html
- https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00332.html
---
 doc/emacs/package.texi     |  31 ++--
 doc/lispref/os.texi        |  14 ++
 doc/lispref/package.texi   |  16 +-
 doc/misc/org.texi          |   4 +-
 etc/NEWS                   |  20 +++
 lisp/emacs-lisp/package.el |  71 +--------
 lisp/startup.el            | 379 ++++++++++++++++++++++++---------------------
 src/lread.c                |   2 +-
 8 files changed, 264 insertions(+), 273 deletions(-)

diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index 5f05bc0f9e..9629f41c80 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -250,31 +250,18 @@ Package Installation
 wide-ranging effects on the Emacs session.  For such information,
 consult the package's help buffer.
 
-  By default, Emacs also automatically loads all installed packages in
-subsequent Emacs sessions.  This happens at startup, after processing
-the init file (@pxref{Init File}).  As an exception, Emacs does not
-load packages at startup if invoked with the @samp{-q} or
-@samp{--no-init-file} options (@pxref{Initial Options}).
+  After a package is installed, it is automatically loaded by Emacs in
+all subsequent sessions.  This happens at startup, before processing
+the init file but after processing the early init file (@pxref{Early
+Init File,,, elisp, The Emacs Lisp Reference Manual}).  As an
+exception, Emacs does not load packages at startup if invoked with the
+@samp{-q} or @samp{--no-init-file} options (@xref{Initial Options}).
 
 @vindex package-enable-at-startup
   To disable automatic package loading, change the variable
-@code{package-enable-at-startup} to @code{nil}.
-
-@findex package-initialize
-  The reason automatic package loading occurs after loading the init
-file is that user options only receive their customized values after
-loading the init file, including user options which affect the
-packaging system.  In some circumstances, you may want to load
-packages explicitly in your init file (usually because some other code
-in your init file depends on a package).  In that case, your init file
-should call the function @code{package-initialize}.  It is up to you
-to ensure that relevant user options, such as @code{package-load-list}
-(see below), are set up prior to the @code{package-initialize} call.
-This will automatically set @code{package-enable-at-startup} to @code{nil}, to
-avoid loading the packages again after processing the init file.
-Alternatively, you may choose to completely inhibit package loading at
-startup, and invoke the command @kbd{M-x package-initialize} to load
-your packages manually.
+@code{package-enable-at-startup} to @code{nil}.  You must do this in
+the early init file, as the variable is read before loading the
+regular init file.  Currently it cannot be done via Customize.
 
 @vindex package-load-list
   For finer control over package loading, you can use the variable
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 0854468835..209e450fbd 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -361,6 +361,7 @@ Init File
 @cindex init file
 @cindex @file{.emacs}
 @cindex @file{init.el}
+@cindex @file{early-init.el}
 
   When you start Emacs, it normally attempts to load your @dfn{init
 file}.  This is either a file named @file{.emacs} or @file{.emacs.el}
@@ -384,6 +385,19 @@ Init File
 file.  If those environment variables are absent, though, Emacs uses
 your user-id to find your home directory.
 
+@cindex early init file
+  Emacs also attempts to load a second init file, called the
+  @dfn{early init file}, if it exists.  This is a file named
+  @file{early-init.el} in a subdirectory named @file{.emacs.d} in your
+  home directory.  The difference is that the early init file is
+  loaded much earlier during the startup process, so you can use it to
+  customize some things that are initialized before loading the
+  regular init file.  For example, you can customize the process of
+  loading installed packages, by setting variables such as
+  @var{package-load-list} or
+  @var{package-enable-at-startup}. @xref{Package Installation,,,
+  emacs,The GNU Emacs Manual}.
+
 @cindex default init file
   An Emacs installation may have a @dfn{default init file}, which is a
 Lisp library named @file{default.el}.  Emacs finds this file through
diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi
index 21dfe1c271..d5ee4cbd47 100644
--- a/doc/lispref/package.texi
+++ b/doc/lispref/package.texi
@@ -106,10 +106,12 @@ Packaging Basics
 
   Whenever Emacs starts up, it automatically calls the function
 @code{package-initialize} to load installed packages.  This is done
-after loading the init file and abbrev file (if any) and before
-running @code{after-init-hook} (@pxref{Startup Summary}).  Automatic
-package loading is disabled if the user option
-@code{package-enable-at-startup} is @code{nil}.
+after loading the early init file, but before loading the regular init
+file and abbrev file (if any) and before running
+@code{after-init-hook} (@pxref{Startup Summary}).  Automatic package
+loading is disabled if the user option
+@code{package-enable-at-startup} is set to @code{nil} in the early
+init file.
 
 @deffn Command package-initialize &optional no-activate
 This function initializes Emacs' internal record of which packages are
@@ -123,6 +125,12 @@ Packaging Basics
 The optional argument @var{no-activate}, if non-@code{nil}, causes
 Emacs to update its record of installed packages without actually
 loading them; it is for internal use only.
+
+In most cases, you should not need to call @code{package-initialize},
+as this is done automatically during startup.  Simply make sure to put
+any code that should run before @code{package-initialize} in the early
+init file, and any code that should run after it in the primary init
+file (@xref{Init File,,, emacs, The GNU Emacs Manual}).
 @end deffn
 
 @node Simple Packages
diff --git a/doc/misc/org.texi b/doc/misc/org.texi
index 762dfafdda..ef2c931b6d 100644
--- a/doc/misc/org.texi
+++ b/doc/misc/org.texi
@@ -890,9 +890,7 @@ Installation
 been visited, i.e., where no Org built-in function have been loaded.
 Otherwise autoload Org functions will mess up the installation.
 
-Then, to make sure your Org configuration is taken into account, initialize
-the package system with @code{(package-initialize)} in your Emacs init file
-before setting any Org option.  If you want to use Org's package repository,
+If you want to use Org's package repository,
 check out the @uref{http://orgmode.org/elpa.html, Org ELPA page}.
 
 @subsubheading Downloading Org as an archive
diff --git a/etc/NEWS b/etc/NEWS
index ad31553603..97f08dc0d9 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -49,6 +49,26 @@ to reduce differences between developer and production builds.
 \f
 * Startup Changes in Emacs 27.1
 
++++
+** Emacs can now be configured using an early init file.
+The file is called 'early-init.el', in 'user-emacs-directory'.  It is
+loaded very early in the startup process: before graphical elements
+such as the tool bar are initialized, and before the package manager
+is initialized.
+
++++
+** Emacs now calls 'package-initialize' before loading the init file.
+This is part of a change intended to eliminate the behavior of
+package.el inserting a call to 'package-initialize' into the init
+file, which was previously done when Emacs was started.  You only need
+to make changes to your configuration if some of it needs to be run
+before 'package-initialize' is called (for example, if you set
+'package-load-list' or 'package-user-dir').  In that case, place the
+configuration that needs to be run before 'package-initialize' into
+the early init file.  Note that variables like 'package-archives' can
+be set after 'package-initialize', so they can still be customized in
+the regular init file.
+
 \f
 * Changes in Emacs 27.1
 
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 71d1c41ec3..ab02d4255b 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1431,16 +1431,11 @@ package-read-all-archive-contents
 ;; available on disk.
 (defvar package--initialized nil)
 
-(defvar package--init-file-ensured nil
-  "Whether we know the init file has package-initialize.")
-
 ;;;###autoload
 (defun package-initialize (&optional no-activate)
   "Load Emacs Lisp packages, and activate them.
 The variable `package-load-list' controls which packages to load.
 If optional arg NO-ACTIVATE is non-nil, don't activate packages.
-If `user-init-file' does not mention `(package-initialize)', add
-it to the file.
 If called as part of loading `user-init-file', set
 `package-enable-at-startup' to nil, to prevent accidentally
 loading packages twice.
@@ -1449,13 +1444,7 @@ package-initialize
 taken care of by `package-initialize'."
   (interactive)
   (setq package-alist nil)
-  (if after-init-time
-      (package--ensure-init-file)
-    ;; If `package-initialize' is before we finished loading the init
-    ;; file, it's obvious we don't need to ensure-init.
-    (setq package--init-file-ensured t
-          ;; And likely we don't need to run it again after init.
-          package-enable-at-startup nil))
+  (setq package-enable-at-startup nil)
   (package-load-all-descriptors)
   (package-read-all-archive-contents)
   (unless no-activate
@@ -1872,64 +1861,6 @@ package-download-transaction
 using `package-compute-transaction'."
   (mapc #'package-install-from-archive packages))
 
-(defun package--ensure-init-file ()
-  "Ensure that the user's init file has `package-initialize'.
-`package-initialize' doesn't have to be called, as long as it is
-present somewhere in the file, even as a comment.  If it is not,
-add a call to it along with some explanatory comments."
-  ;; Don't mess with the init-file from "emacs -Q".
-  (when (and (stringp user-init-file)
-             (not package--init-file-ensured)
-             (file-readable-p user-init-file)
-             (file-writable-p user-init-file))
-    (let* ((buffer (find-buffer-visiting user-init-file))
-           buffer-name
-           (contains-init
-            (if buffer
-                (with-current-buffer buffer
-                  (save-excursion
-                    (save-restriction
-                      (widen)
-                      (goto-char (point-min))
-                      (re-search-forward "(package-initialize\\_>" nil 'noerror))))
-              ;; Don't visit the file if we don't have to.
-              (with-temp-buffer
-                (insert-file-contents user-init-file)
-                (goto-char (point-min))
-                (re-search-forward "(package-initialize\\_>" nil 'noerror)))))
-      (unless contains-init
-        (with-current-buffer (or buffer
-                                 (let ((delay-mode-hooks t)
-                                       (find-file-visit-truename t))
-                                   (find-file-noselect user-init-file)))
-          (when buffer
-            (setq buffer-name (buffer-file-name))
-            (set-visited-file-name (file-chase-links user-init-file)))
-          (save-excursion
-            (save-restriction
-              (widen)
-              (goto-char (point-min))
-              (while (and (looking-at-p "[[:blank:]]*\\(;\\|$\\)")
-                          (not (eobp)))
-                (forward-line 1))
-              (insert
-               "\n"
-               ";; Added by Package.el.  This must come before configurations of\n"
-               ";; installed packages.  Don't delete this line.  If you don't want it,\n"
-               ";; just comment it out by adding a semicolon to the start of the line.\n"
-               ";; You may delete these explanatory comments.\n"
-               "(package-initialize)\n")
-              (unless (looking-at-p "$")
-                (insert "\n"))
-              (let ((file-precious-flag t))
-                (save-buffer))
-              (if buffer
-                  (progn
-                    (set-visited-file-name buffer-name)
-                    (set-buffer-modified-p nil))
-                (kill-buffer (current-buffer)))))))))
-  (setq package--init-file-ensured t))
-
 ;;;###autoload
 (defun package-install (pkg &optional dont-select)
   "Install the package PKG.
diff --git a/lisp/startup.el b/lisp/startup.el
index 8c36c19e82..69bc8fa781 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -312,6 +312,12 @@ inhibit-startup-hooks
 Currently this applies to: `emacs-startup-hook', `term-setup-hook',
 and `window-setup-hook'.")
 
+(defvar early-init-file nil
+  "File name, including directory, of user's early init file.
+See `user-init-file'.  The only difference is that
+`early-init-file' is not set during the course of evaluating the
+early init file.")
+
 (defvar keyboard-type nil
   "The brand of keyboard you are using.
 This variable is used to define the proper function and keypad
@@ -870,6 +876,103 @@ startup--setup-quote-display
           (when standard-display-table
             (aset standard-display-table char nil)))))))
 
+(defun load-user-init-file
+    (filename-function &optional alternate-filename-function load-defaults)
+  "Load a user init-file.
+FILENAME-FUNCTION is called with no arguments and should return
+the name of the init-file to load.  If this file cannot be
+loaded, and ALTERNATE-FILENAME-FUNCTION is non-nil, then it is
+called with no arguments and should return the name of an
+alternate init-file to load.  If LOAD-DEFAULTS is non-nil, then
+load default.el after the init-file.
+
+This function sets `user-init-file' to the name of the loaded
+init-file, or to a default value if loading is not possible."
+  (let ((debug-on-error-from-init-file nil)
+        (debug-on-error-should-be-set nil)
+        (debug-on-error-initial
+         (if (eq init-file-debug t)
+             'startup
+           init-file-debug)))
+    (let ((debug-on-error debug-on-error-initial)
+          ;; We create an anonymous function here so that we can call
+          ;; it in different contexts depending on the value of
+          ;; `debug-on-error'.
+          (read-init-file
+           (lambda ()
+             (when init-file-user
+               (let ((init-file-name (funcall filename-function)))
+
+                 ;; If `user-init-file' is t, then `load' will store
+                 ;; the name of the file that it loads into
+                 ;; `user-init-file'.
+                 (setq user-init-file t)
+                 (load init-file-name 'noerror 'nomessage)
+
+                 (when (and (eq user-init-file t) alternate-filename-function)
+                   (load (funcall alternate-filename-function)
+                         'noerror 'nomessage))
+
+                 ;; If we did not find the user's init file, set
+                 ;; user-init-file conclusively.  Don't let it be
+                 ;; set from default.el.
+                 (when (eq user-init-file t)
+                   (setq user-init-file init-file-name)))
+
+               ;; If we loaded a compiled file, set `user-init-file' to
+               ;; the source version if that exists.
+               (when (equal (file-name-extension user-init-file)
+                            "elc")
+                 (let* ((source (file-name-sans-extension user-init-file))
+                        (alt (concat source ".el")))
+                   (setq source (cond ((file-exists-p alt) alt)
+                                      ((file-exists-p source) source)
+                                      (t nil)))
+                   (when source
+                     (when (file-newer-than-file-p source user-init-file)
+                       (message "Warning: %s is newer than %s"
+                                source user-init-file)
+                       (sit-for 1))
+                     (setq user-init-file source))))
+
+               (when load-defaults
+
+                 ;; Prevent default.el from changing the value of
+                 ;; `inhibit-startup-screen'.
+                 (let ((inhibit-startup-screen nil))
+                   (load "default" 'noerror 'nomessage)))))))
+      ;; Now call our anonymous function.
+      (if init-file-debug
+          ;; Do this without a `condition-case' if the user wants to
+          ;; debug.
+          (funcall read-init-file)
+        (condition-case error
+            (funcall read-init-file)
+          (error
+           (display-warning
+            'initialization
+            (format-message "\
+An error occurred while loading `%s':\n\n%s%s%s\n\n\
+To ensure normal operation, you should investigate and remove the
+cause of the error in your initialization file.  Start Emacs with
+the `--debug-init' option to view a complete error backtrace."
+                            user-init-file
+                            (get (car error) 'error-message)
+                            (if (cdr error) ": " "")
+                            (mapconcat (lambda (s) (prin1-to-string s t))
+                                       (cdr error) ", "))
+            :warning)
+           (setq init-file-had-error t))))
+
+      ;; If we can tell that the init file altered debug-on-error,
+      ;; arrange to preserve the value that it set up.
+      (or (eq debug-on-error debug-on-error-initial)
+          (setq debug-on-error-should-be-set t
+                debug-on-error-from-init-file debug-on-error)))
+
+    (when debug-on-error-should-be-set
+      (setq debug-on-error debug-on-error-from-init-file))))
+
 (defun command-line ()
   "A subroutine of `normal-top-level'.
 Amongst another things, it parses the command-line arguments."
@@ -1021,6 +1124,69 @@ command-line
     (and command-line-args
          (setcdr command-line-args args)))
 
+  ;; Warn for invalid user name.
+  (when init-file-user
+    (if (string-match "[~/:\n]" init-file-user)
+        (display-warning 'initialization
+                         (format "Invalid user name %s"
+                                 init-file-user)
+                         :error)
+      (if (file-directory-p (expand-file-name
+                             ;; We don't support ~USER on MS-Windows
+                             ;; and MS-DOS except for the current
+                             ;; user, and always load .emacs from
+                             ;; the current user's home directory
+                             ;; (see below).  So always check "~",
+                             ;; even if invoked with "-u USER", or
+                             ;; if $USER or $LOGNAME are set to
+                             ;; something different.
+                             (if (memq system-type '(windows-nt ms-dos))
+                                 "~"
+                               (concat "~" init-file-user))))
+          nil
+        (display-warning 'initialization
+                         (format "User %s has no home directory"
+                                 (if (equal init-file-user "")
+                                     (user-real-login-name)
+                                   init-file-user))
+                         :error))))
+
+  ;; Load the early init file, if found.
+  (load-user-init-file
+   (lambda ()
+     (expand-file-name
+      "early-init"
+      (file-name-as-directory
+       (concat "~" init-file-user "/.emacs.d")))))
+  (setq early-init-file user-init-file)
+
+  ;; If any package directory exists, initialize the package system.
+  (and user-init-file
+       package-enable-at-startup
+       (catch 'package-dir-found
+	 (let (dirs)
+	   (if (boundp 'package-directory-list)
+	       (setq dirs package-directory-list)
+	     (dolist (f load-path)
+	       (and (stringp f)
+		    (equal (file-name-nondirectory f) "site-lisp")
+		    (push (expand-file-name "elpa" f) dirs))))
+	   (push (if (boundp 'package-user-dir)
+		     package-user-dir
+		   (locate-user-emacs-file "elpa"))
+		 dirs)
+	   (dolist (dir dirs)
+	     (when (file-directory-p dir)
+	       (dolist (subdir (directory-files dir))
+		 (when (let ((subdir (expand-file-name subdir dir)))
+                         (and (file-directory-p subdir)
+                              (file-exists-p
+                               (expand-file-name
+                                (package--description-file subdir)
+                                subdir))))
+		   (throw 'package-dir-found t)))))))
+       (package-initialize))
+
   ;; Make sure window system's init file was loaded in loadup.el if
   ;; using a window system.
   ;; Initialize the window-system only after processing the command-line
@@ -1128,153 +1294,47 @@ command-line
     ;; the startup screen.
     (setq inhibit-startup-screen nil)
 
-    ;; Warn for invalid user name.
-    (when init-file-user
-      (if (string-match "[~/:\n]" init-file-user)
-	  (display-warning 'initialization
-			   (format "Invalid user name %s"
-				   init-file-user)
-			   :error)
-	(if (file-directory-p (expand-file-name
-			       ;; We don't support ~USER on MS-Windows
-			       ;; and MS-DOS except for the current
-			       ;; user, and always load .emacs from
-			       ;; the current user's home directory
-			       ;; (see below).  So always check "~",
-			       ;; even if invoked with "-u USER", or
-			       ;; if $USER or $LOGNAME are set to
-			       ;; something different.
-			       (if (memq system-type '(windows-nt ms-dos))
-				   "~"
-				 (concat "~" init-file-user))))
-	    nil
-	  (display-warning 'initialization
-			   (format "User %s has no home directory"
-				   (if (equal init-file-user "")
-				       (user-real-login-name)
-				     init-file-user))
-			   :error))))
-
     ;; Load that user's init file, or the default one, or none.
-    (let (debug-on-error-from-init-file
-	  debug-on-error-should-be-set
-	  (debug-on-error-initial
-	   (if (eq init-file-debug t) 'startup init-file-debug)))
-      (let ((debug-on-error debug-on-error-initial)
-	    ;; This function actually reads the init files.
-	    (inner
-	     (function
-	      (lambda ()
-		(if init-file-user
-		    (let ((user-init-file-1
-			   (cond
-			     ((eq system-type 'ms-dos)
-			      (concat "~" init-file-user "/_emacs"))
-			     ((not (eq system-type 'windows-nt))
-			      (concat "~" init-file-user "/.emacs"))
-			     ;; Else deal with the Windows situation
-			     ((directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$")
-			      ;; Prefer .emacs on Windows.
-			      "~/.emacs")
-			     ((directory-files "~" nil "^_emacs\\(\\.elc?\\)?$")
-			      ;; Also support _emacs for compatibility, but warn about it.
-			      (push `(initialization
-				      ,(format-message
-					"`_emacs' init file is deprecated, please use `.emacs'"))
-				    delayed-warnings-list)
-			      "~/_emacs")
-			     (t ;; But default to .emacs if _emacs does not exist.
-			      "~/.emacs"))))
-		      ;; This tells `load' to store the file name found
-		      ;; into user-init-file.
-		      (setq user-init-file t)
-		      (load user-init-file-1 t t)
-
-		      (when (eq user-init-file t)
-			;; If we did not find ~/.emacs, try
-			;; ~/.emacs.d/init.el.
-			(let ((otherfile
-			       (expand-file-name
-				"init"
-				(file-name-as-directory
-				 (concat "~" init-file-user "/.emacs.d")))))
-			  (load otherfile t t)
-
-			  ;; If we did not find the user's init file,
-			  ;; set user-init-file conclusively.
-			  ;; Don't let it be set from default.el.
-			  (when (eq user-init-file t)
-			    (setq user-init-file user-init-file-1))))
-
-		      ;; If we loaded a compiled file, set
-		      ;; `user-init-file' to the source version if that
-		      ;; exists.
-		      (when (and user-init-file
-				 (equal (file-name-extension user-init-file)
-					"elc"))
-			(let* ((source (file-name-sans-extension user-init-file))
-			       (alt (concat source ".el")))
-			  (setq source (cond ((file-exists-p alt) alt)
-					     ((file-exists-p source) source)
-					     (t nil)))
-			  (when source
-			    (when (file-newer-than-file-p source user-init-file)
-			      (message "Warning: %s is newer than %s"
-				       source user-init-file)
-			      (sit-for 1))
-			    (setq user-init-file source))))
-
-		      (unless inhibit-default-init
-                        (let ((inhibit-startup-screen nil))
-                          ;; Users are supposed to be told their rights.
-                          ;; (Plus how to get help and how to undo.)
-                          ;; Don't you dare turn this off for anyone
-                          ;; except yourself.
-                          (load "default" t t)))))))))
-	(if init-file-debug
-	    ;; Do this without a condition-case if the user wants to debug.
-	    (funcall inner)
-	  (condition-case error
-	      (progn
-		(funcall inner)
-		(setq init-file-had-error nil))
-	    (error
-	     (display-warning
-	      'initialization
-	      (format-message "\
-An error occurred while loading `%s':\n\n%s%s%s\n\n\
-To ensure normal operation, you should investigate and remove the
-cause of the error in your initialization file.  Start Emacs with
-the `--debug-init' option to view a complete error backtrace."
-		      user-init-file
-		      (get (car error) 'error-message)
-		      (if (cdr error) ": " "")
-		      (mapconcat (lambda (s) (prin1-to-string s t))
-				 (cdr error) ", "))
-	      :warning)
-	     (setq init-file-had-error t))))
-
-      (if (and deactivate-mark transient-mark-mode)
-	    (with-current-buffer (window-buffer)
-	      (deactivate-mark)))
-
-	;; If the user has a file of abbrevs, read it (unless -batch).
-	(when (and (not noninteractive)
-		   (file-exists-p abbrev-file-name)
-		   (file-readable-p abbrev-file-name))
-	    (quietly-read-abbrev-file abbrev-file-name))
-
-	;; If the abbrevs came entirely from the init file or the
-	;; abbrevs file, they do not need saving.
-	(setq abbrevs-changed nil)
-
-	;; If we can tell that the init file altered debug-on-error,
-	;; arrange to preserve the value that it set up.
-	(or (eq debug-on-error debug-on-error-initial)
-	    (setq debug-on-error-should-be-set t
-		  debug-on-error-from-init-file debug-on-error)))
-      (if debug-on-error-should-be-set
-	  (setq debug-on-error debug-on-error-from-init-file)))
+    (load-user-init-file
+     (lambda ()
+       (cond
+        ((eq system-type 'ms-dos)
+         (concat "~" init-file-user "/_emacs"))
+        ((not (eq system-type 'windows-nt))
+         (concat "~" init-file-user "/.emacs"))
+        ;; Else deal with the Windows situation.
+        ((directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$")
+         ;; Prefer .emacs on Windows.
+         "~/.emacs")
+        ((directory-files "~" nil "^_emacs\\(\\.elc?\\)?$")
+         ;; Also support _emacs for compatibility, but warn about it.
+         (push `(initialization
+                 ,(format-message
+                   "`_emacs' init file is deprecated, please use `.emacs'"))
+               delayed-warnings-list)
+         "~/_emacs")
+        (t ;; But default to .emacs if _emacs does not exist.
+         "~/.emacs")))
+     (lambda ()
+       (expand-file-name
+        "init"
+        (file-name-as-directory
+         (concat "~" init-file-user "/.emacs.d"))))
+     (not inhibit-default-init))
+
+    (when (and deactivate-mark transient-mark-mode)
+      (with-current-buffer (window-buffer)
+        (deactivate-mark)))
+
+    ;; If the user has a file of abbrevs, read it (unless -batch).
+    (when (and (not noninteractive)
+               (file-exists-p abbrev-file-name)
+               (file-readable-p abbrev-file-name))
+      (quietly-read-abbrev-file abbrev-file-name))
+
+    ;; If the abbrevs came entirely from the init file or the
+    ;; abbrevs file, they do not need saving.
+    (setq abbrevs-changed nil)
 
     ;; Do this here in case the init file sets mail-host-address.
     (and mail-host-address
@@ -1296,33 +1356,6 @@ command-line
 		 (eq face-ignored-fonts old-face-ignored-fonts))
       (clear-face-cache)))
 
-  ;; If any package directory exists, initialize the package system.
-  (and user-init-file
-       package-enable-at-startup
-       (catch 'package-dir-found
-	 (let (dirs)
-	   (if (boundp 'package-directory-list)
-	       (setq dirs package-directory-list)
-	     (dolist (f load-path)
-	       (and (stringp f)
-		    (equal (file-name-nondirectory f) "site-lisp")
-		    (push (expand-file-name "elpa" f) dirs))))
-	   (push (if (boundp 'package-user-dir)
-		     package-user-dir
-		   (locate-user-emacs-file "elpa"))
-		 dirs)
-	   (dolist (dir dirs)
-	     (when (file-directory-p dir)
-	       (dolist (subdir (directory-files dir))
-		 (when (let ((subdir (expand-file-name subdir dir)))
-                         (and (file-directory-p subdir)
-                              (file-exists-p
-                               (expand-file-name
-                                (package--description-file subdir)
-                                subdir))))
-		   (throw 'package-dir-found t)))))))
-       (package-initialize))
-
   (setq after-init-time (current-time))
   ;; Display any accumulated warnings after all functions in
   ;; `after-init-hook' like `desktop-read' have finalized possible
diff --git a/src/lread.c b/src/lread.c
index 28d4bf9a4f..0f674803f2 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -4897,7 +4897,7 @@ directory.  These file names are converted to absolute at startup.  */);
 If the file loaded had extension `.elc', and the corresponding source file
 exists, this variable contains the name of source file, suitable for use
 by functions like `custom-save-all' which edit the init file.
-While Emacs loads and evaluates the init file, value is the real name
+While Emacs loads and evaluates any init file, value is the real name
 of the file, regardless of whether or not it has the `.elc' extension.  */);
   Vuser_init_file = Qnil;
 
-- 
2.16.1


  reply	other threads:[~2018-01-28 19:42 UTC|newest]

Thread overview: 575+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-18 21:57 [PATCH] Fixing package-initialize, adding early init file Radon Rosborough
2017-09-19 12:30 ` Stefan Monnier
2017-09-25 16:27   ` Radon Rosborough
2017-09-25 16:54     ` John Wiegley
2017-09-25 19:38       ` Radon Rosborough
2017-09-25 21:23         ` Mark Oteiza
2017-09-25 22:16           ` Radon Rosborough
2017-09-25 23:15             ` Mark Oteiza
2017-09-26  3:00               ` Radon Rosborough
2017-09-29 10:22               ` Eli Zaretskii
2017-09-25 16:58     ` Stefan Monnier
2017-09-25 19:40       ` Radon Rosborough
2017-10-09 23:17     ` Radon Rosborough
2017-10-10 16:52 ` Robert Weiner
2017-10-10 16:59   ` Eli Zaretskii
2017-10-14 21:30     ` Mark Oteiza
2017-10-14 21:52       ` Stefan Monnier
2017-10-15  1:18       ` Radon Rosborough
2017-10-15 14:16       ` Eli Zaretskii
2017-10-15 16:26         ` Stefan Monnier
2017-10-25 22:13           ` Radon Rosborough
2017-10-26  0:11             ` Stefan Monnier
2017-12-18  0:45               ` Radon Rosborough
2018-01-25  4:35                 ` Radon Rosborough
2018-01-25 15:43                   ` Clément Pit-Claudel
2018-01-25 16:03                     ` Stefan Monnier
2018-01-25 16:22                       ` Clément Pit-Claudel
2018-01-25 17:12                         ` Stefan Monnier
2018-01-26  9:31                         ` Eli Zaretskii
2018-01-26 14:34                         ` Loading a package applies automatically to future sessions? Richard Stallman
2018-01-26 17:03                           ` Stefan Monnier
2018-01-28 12:07                             ` Richard Stallman
2018-01-28 13:24                               ` Stefan Monnier
2018-01-29  1:50                                 ` Richard Stallman
2018-01-29  5:56                                   ` Radon Rosborough
2018-02-02  2:14                                     ` Richard Stallman
2018-02-02  3:05                                       ` Clément Pit-Claudel
2018-02-04  3:08                                         ` Richard Stallman
2018-02-04 15:21                                           ` Clément Pit-Claudel
2018-02-04 21:27                                             ` Tim Cross
2018-02-05 10:07                                               ` George Plymale II
2018-02-05 21:27                                                 ` Tim Cross
2018-02-05  1:08                                             ` Richard Stallman
2018-02-05  4:15                                               ` Clément Pit-Claudel
2018-02-05 20:36                                                 ` Richard Stallman
2018-01-26 19:24                           ` Radon Rosborough
2018-01-26 20:02                             ` Eli Zaretskii
2018-01-28 18:20                               ` Radon Rosborough
2018-01-29  1:52                                 ` Richard Stallman
2018-02-10 12:00                                 ` Eli Zaretskii
2018-02-11  1:23                                   ` George Plymale II
2018-02-13 21:14                                     ` Stefan's patch to improve package loading (was Loading a package applies automatically to future sessions?) George Plymale II
2018-02-14  2:56                                       ` John Wiegley
2018-02-14 23:32                                         ` George Plymale II
2018-03-09  2:54                                           ` Stefan's patch to improve package loading George Plymale II
2018-02-15  4:40                                   ` Loading a package applies automatically to future sessions? Radon Rosborough
2018-01-27 20:44                             ` Richard Stallman
2018-01-28  6:30                               ` Radon Rosborough
2018-01-28  9:33                                 ` Charles A. Roelli
2018-01-28 13:21                                 ` Stefan Monnier
2018-01-28 17:32                                   ` Radon Rosborough
2018-01-28 22:11                                     ` Stefan Monnier
2018-01-29  1:08                                       ` T.V Raman
2018-01-29  5:53                                       ` Radon Rosborough
2018-01-29  7:21                                         ` John Wiegley
2018-01-29 18:54                                         ` Stefan Monnier
2018-01-29 19:19                                           ` John Wiegley
2018-01-29 19:55                                             ` Stefan Monnier
2018-01-29  6:55                                       ` John Wiegley
2018-01-29 19:08                                         ` Stefan Monnier
2018-01-29 19:55                                           ` John Wiegley
2018-01-29 21:50                                             ` Stefan Monnier
2018-01-29 23:13                                               ` Clément Pit-Claudel
2018-01-30  1:37                                               ` T.V Raman
2018-01-29 20:18                                           ` Clément Pit-Claudel
2018-01-30 15:11                                             ` Stefan Monnier
2018-01-30 22:33                                               ` George Plymale II
2018-01-30 22:56                                                 ` George Plymale II
2018-01-31  3:47                                                 ` Stefan Monnier
2018-01-31  5:17                                                   ` George Plymale II
2018-01-31 20:49                                                     ` George Plymale II
2018-01-31 21:35                                                       ` Stefan Monnier
2018-01-31 21:58                                                         ` George Plymale II
2018-01-31 22:06                                                           ` George Plymale II
2018-02-01 14:48                                                             ` Stefan Monnier
2018-02-01 17:47                                                               ` George Plymale II
2018-02-01 19:11                                                                 ` Stefan Monnier
2018-02-01 19:19                                                                 ` Stephen Berman
2018-02-01 19:28                                                                   ` Stephen Berman
2018-02-01 21:44                                                                   ` George Plymale II
2018-02-01 22:16                                                                     ` Stephen Berman
2018-02-01 23:02                                                                       ` George Plymale II
2018-02-02  8:43                                                                         ` Eli Zaretskii
2018-02-02 17:19                                                                           ` George Plymale II
2018-02-02 17:57                                                                             ` Stefan Monnier
2018-02-02 18:06                                                                             ` Eli Zaretskii
2018-02-02 12:19                                                                         ` Phillip Lord
2018-02-02 19:20                                                                           ` Radon Rosborough
2018-02-02 22:53                                                                         ` Richard Stallman
2018-02-05  9:17                                                                           ` A response to RMS (was Loading a package applies automatically to future sessions?) George Plymale II
2018-02-05 12:55                                                                             ` Clément Pit-Claudel
2018-02-06 23:34                                                                               ` George Plymale II
2018-02-05 20:36                                                                             ` Richard Stallman
2018-02-06 23:42                                                                               ` George Plymale II
2018-02-07 20:45                                                                                 ` Richard Stallman
2018-02-05 20:36                                                                             ` Richard Stallman
2018-02-05 20:36                                                                             ` Richard Stallman
2018-02-06 15:06                                                                         ` Loading a package applies automatically to future sessions? Sam Steingold
2018-02-02 22:53                                                                       ` Richard Stallman
2018-02-02 23:12                                                                         ` Stephen Berman
2018-02-03 19:13                                                                           ` Richard Stallman
2018-02-03 20:40                                                                           ` Stephen Berman
2018-02-04  3:07                                                                             ` Richard Stallman
2018-02-05  9:26                                                                             ` George Plymale II
2018-02-05  9:22                                                                           ` Finding an online resource for the agreement (was Loading a package applies automatically to future sessions?) George Plymale II
2018-02-02  2:14                                                                     ` Loading a package applies automatically to future sessions? Richard Stallman
2018-02-02  7:25                                                                       ` George Plymale II
2018-02-02  9:39                                                                       ` Eli Zaretskii
2018-02-02 17:07                                                                         ` George Plymale II
2018-02-02 17:59                                                                         ` Stefan Monnier
2018-02-02 22:56                                                                         ` Richard Stallman
2018-02-14 22:28                                                                         ` Richard Stallman
2018-02-14 23:18                                                                           ` George Plymale II
2018-02-02  8:39                                                                     ` Eli Zaretskii
2018-02-02 17:21                                                                       ` George Plymale II
2018-02-02 18:08                                                                         ` Eli Zaretskii
2018-02-02  2:12                                                                   ` Richard Stallman
2018-02-02  6:15                                                                     ` George Plymale II
2018-02-04  3:07                                                                       ` Richard Stallman
2018-02-05  9:35                                                                         ` Another response to RMS (was Loading a package applies automatically to future sessions?) George Plymale II
2018-02-05 20:37                                                                           ` Richard Stallman
2018-02-06 23:47                                                                             ` George Plymale II
2018-02-02  2:13                                                               ` Loading a package applies automatically to future sessions? Richard Stallman
2018-02-01 19:24                                                             ` Richard Stallman
2018-02-01 21:36                                                               ` George Plymale II
2018-02-02  2:08                                                                 ` Tim Landscheidt
2018-02-02 22:53                                                                   ` Richard Stallman
2018-02-02  2:17                                                                 ` Richard Stallman
2018-02-02  6:26                                                                   ` George Plymale II
2018-02-02  9:26                                                                   ` Eli Zaretskii
2018-02-02 17:14                                                                     ` George Plymale II
2018-02-02 22:56                                                                     ` Richard Stallman
2018-02-05  9:19                                                                       ` George Plymale II
2018-02-05 20:36                                                                         ` Richard Stallman
2018-02-06 23:44                                                                           ` George Plymale II
2018-02-02  2:17                                                                 ` Richard Stallman
2018-02-02  7:33                                                                   ` George Plymale II
2018-02-02 18:38                                                                     ` Drew Adams
2018-02-02 19:05                                                                       ` Generations (was: Loading a package applies automatically to future sessions?) Stefan Monnier
2018-02-02 21:40                                                                         ` Drew Adams
2018-02-02 22:57                                                                         ` Richard Stallman
2018-02-02 23:03                                                                           ` Drew Adams
2018-02-02 20:36                                                                     ` Loading a package applies automatically to future sessions? Phillip Lord
2018-02-02  2:17                                                                 ` Richard Stallman
2018-02-02  7:24                                                                   ` George Plymale II
2018-02-02 22:28                                                                     ` Paul Eggert
2018-02-05  8:21                                                                       ` George Plymale II
2018-02-05 20:36                                                                         ` Richard Stallman
2018-02-04  3:09                                                                     ` Richard Stallman
2018-02-02 13:37                                                                 ` Clément Pit-Claudel
2018-02-02 17:20                                                                   ` Drew Adams
2018-02-05  4:51                                                                 ` Herring, Davis
2018-02-01 19:47                                                     ` Stefan Monnier
2018-02-01 22:10                                                       ` George Plymale II
2018-02-01 22:44                                                         ` George Plymale II
2018-02-02  1:54                                                           ` Stefan Monnier
2018-02-02 20:32                                                             ` George Plymale II
2018-01-31  3:51                                                 ` T.V Raman
2018-01-31  5:18                                                   ` George Plymale II
2018-01-31  6:56                                                     ` Tim Cross
2018-01-31  7:07                                                       ` George Plymale II
2018-01-31  8:05                                                       ` John Wiegley
2018-02-01  7:26                                                         ` Tim Cross
2018-02-01 15:00                                                           ` Stefan Monnier
2018-02-01 16:23                                                           ` T.V Raman
2018-02-03  0:39                                                             ` Tim Cross
2018-02-05  9:24                                                               ` George Plymale II
2018-01-29  1:50                                   ` Richard Stallman
2018-01-25 17:07                   ` [PATCH] Fixing package-initialize, adding early init file Stefan Monnier
2018-01-28 19:42                     ` Radon Rosborough [this message]
2018-01-30 15:02                       ` Stefan Monnier
2018-01-30 15:44                         ` Eli Zaretskii
2018-02-01  3:12                           ` Mark Oteiza
2018-02-01  4:22                             ` Radon Rosborough
2018-02-01 13:36                               ` Stefan Monnier
2018-02-18  5:40                                 ` Stefan Monnier
2018-02-08  5:54                           ` Radon Rosborough
2018-02-08 15:27                             ` Eli Zaretskii
2018-01-30 19:30                         ` Radon Rosborough
2018-02-10 11:56                       ` Eli Zaretskii
2018-02-10 23:37                         ` Stefan Monnier
2018-02-11  3:26                           ` Radon Rosborough
2018-02-11 14:45                             ` Stefan Monnier
2018-02-11 13:31                           ` Basil L. Contovounesios
2018-02-15  4:38                         ` Radon Rosborough
2018-02-15 15:54                           ` Drew Adams
2018-02-15 16:25                             ` Stefan Monnier
2018-02-15 19:32                             ` John Wiegley
2018-02-15 21:13                               ` Stefan Monnier
2018-02-16  7:00                                 ` John Wiegley
2018-02-17 11:38                           ` Eli Zaretskii
2018-02-17 14:14                             ` Clément Pit-Claudel
2018-02-17 18:17                             ` Radon Rosborough
2018-02-18 18:26                               ` Basil L. Contovounesios
2018-02-18 18:55                                 ` Radon Rosborough
2018-02-19  3:10                                 ` Stefan Monnier
2018-02-20 19:13                                   ` Basil L. Contovounesios
2018-02-20 19:26                                     ` Basil L. Contovounesios
2018-02-20 20:35                                       ` Radon Rosborough
2018-02-21  3:48                                         ` T.V Raman
2018-02-21  8:16                                         ` Stefan Monnier
2018-02-21 20:48                                           ` Radon Rosborough
2018-02-21 21:26                                             ` Stefan Monnier
2018-02-21  3:43                                       ` T.V Raman
2017-10-10 19:03   ` Radon Rosborough
2017-10-10 19:31     ` Robert Weiner
2017-10-10 19:41       ` Radon Rosborough
2017-10-13 21:29         ` John Wiegley
2017-10-14  0:49           ` Radon Rosborough
2017-10-14  5:15             ` João Távora
2017-10-14  6:19               ` Radon Rosborough
2017-10-14  9:04                 ` João Távora
2017-10-14 13:47               ` Stefan Monnier
  -- strict thread matches above, loose matches on Subject: below --
2017-11-11  9:17 Reload file from disk Florian Weimer
2017-11-11 10:29 ` Eli Zaretskii
2017-11-11 10:40   ` Eli Zaretskii
2017-11-11 10:54     ` Florian Weimer
2017-11-11 11:55       ` Eli Zaretskii
2017-11-11 13:45         ` Ken Olum
2017-11-11 14:11           ` Eli Zaretskii
     [not found]             ` <(message>
     [not found]               ` <from>
     [not found]                 ` <Eli>
     [not found]                   ` <Zaretskii>
     [not found]                     ` <on>
     [not found]                       ` <Mon>
     [not found]                         ` <17>
     [not found]                       ` <Thu>
     [not found]                         ` <01>
     [not found]                           ` <Feb>
     [not found]                             ` <2018>
     [not found]                               ` <21:17:16>
     [not found]                       ` <Fri>
     [not found]                         ` <09>
     [not found]                         ` <22>
     [not found]                           ` <May>
     [not found]                             ` <2020>
     [not found]                               ` <07:20:57>
     [not found]                                 ` <-0700>
     [not found]                               ` <23:56:00>
     [not found]                               ` <01:18:18>
     [not found]                       ` <Sat>
     [not found]                         ` <11>
     [not found]                           ` <Nov>
     [not found]                             ` <2017>
     [not found]                               ` <16:11:34>
     [not found]                 ` <Richard>
     [not found]                 ` <Drew>
     [not found]                 ` <Juri>
2017-11-11 15:03             ` Ken Olum
2017-11-11 16:48               ` Drew Adams
2017-11-11 11:59     ` Andreas Schwab
2017-11-11 12:44 ` Noam Postavsky
2017-11-12 18:28 ` Joost Kremers
2017-11-13 17:24   ` Tom Tromey
     [not found] <20200515175844.18941.61355@vcs0.savannah.gnu.org>
     [not found] ` <20200515175845.997EC20999@vcs0.savannah.gnu.org>
2020-05-15 18:38   ` Deleting old `:version` from defcustoms (was: master b76cdd0: Delete libraries obsolete since 23.1 and 23.2) Stefan Monnier
2020-05-15 20:58     ` Stefan Kangas
2020-08-07 15:42       ` [PATCH] Remove obsolete fast-lock and lazy-lock libraries (was: Re: Deleting old `:version` from defcustoms) Stefan Kangas
2020-08-08  2:19         ` [PATCH] Remove obsolete fast-lock and lazy-lock libraries Stefan Monnier
2020-05-16 13:18     ` Delete variables obsolete since Emacs 23 Stefan Kangas
2020-05-16 15:49       ` Paul Eggert
2020-05-17  2:52       ` Stefan Monnier
2020-05-17 11:39         ` Dmitry Gutov
2020-08-08  0:28       ` Stefan Kangas
2020-08-14 11:11         ` Stefan Kangas
2020-08-14 15:42         ` Stefan Kangas
2020-08-14 18:56           ` Drew Adams
2020-08-14 19:00             ` Lars Ingebrigtsen
2020-08-14 19:14               ` Drew Adams
2020-08-14 19:55             ` Ulrich Mueller
2020-08-14 23:37             ` Stefan Kangas
2020-08-15  1:28               ` Drew Adams
2020-08-15 12:51                 ` Stefan Monnier
2020-08-15 19:54                   ` Drew Adams
2020-08-16  4:13                 ` Richard Stallman
2020-08-16  5:30                   ` Drew Adams
2020-08-16 13:46                     ` Stefan Monnier
2020-08-17  3:23                     ` Richard Stallman
2020-08-17 14:20                       ` Drew Adams
2020-08-17 14:45                         ` Gregory Heytings via Emacs development discussions.
2020-08-18  1:55                         ` Jeff Norden
2020-08-18  4:53                           ` Eli Zaretskii
2020-08-19  8:31                             ` Gregory Heytings via Emacs development discussions.
2020-08-19 13:26                               ` Drew Adams
2020-08-19 13:39                               ` Stefan Monnier
2020-08-19 13:54                                 ` Gregory Heytings via Emacs development discussions.
2020-08-19 15:15                                   ` Eli Zaretskii
2020-08-20  0:33                                     ` Jeff Norden
2020-08-19 14:36                               ` Eli Zaretskii
2020-08-18 16:14                           ` Drew Adams
2020-08-18  4:06                         ` Richard Stallman
2020-08-18 16:13                           ` Drew Adams
2020-08-18 11:17             ` Lars Ingebrigtsen
2020-08-24  2:28               ` Stefan Kangas
2020-08-25  3:46                 ` Richard Stallman
2020-08-25  4:06                   ` Drew Adams
2020-08-26  1:57                     ` Richard Stallman
2020-08-26  8:59                       ` Gregory Heytings via Emacs development discussions.
2020-08-26 13:22                         ` Stefan Kangas
2020-08-27  2:51                           ` Richard Stallman
2020-08-27  3:51                             ` Stefan Kangas
2020-08-26 17:39                       ` Drew Adams
2020-08-26 18:16                         ` Stefan Monnier
2020-09-04 17:04                 ` Stefan Kangas
2020-09-05 12:39                   ` Lars Ingebrigtsen
2020-09-11 20:01                     ` Stefan Kangas
2020-05-17  3:18     ` Deleting old `:version` from defcustoms (was: master b76cdd0: Delete libraries obsolete since 23.1 and 23.2) Stefan Kangas
2020-05-17 15:18       ` Eli Zaretskii
2020-05-17 16:59         ` Deleting old `:version` from defcustoms Stefan Monnier
     [not found] <874ks9rkyd.fsf@mail.linkov.net>
2020-05-22 18:26 ` bug#41438: [PATCH] Allow windmove keys to be bound without prefix or modifiers Philip K.
2020-05-22 19:15   ` Drew Adams
     [not found] <<fdimdgyaxf.fsf@norden.tntech.edu>
     [not found] ` <<83r1s4ftc7.fsf@gnu.org>
2020-08-18 16:13   ` Delete variables obsolete since Emacs 23 Drew Adams
2020-08-18 19:27     ` Stefan Monnier
2020-08-18 20:21       ` Drew Adams
2020-08-18 21:00       ` Gregory Heytings via Emacs development discussions.
2020-08-18 21:55         ` Stefan Monnier
2020-08-18 21:30       ` Jeff Norden
2020-10-08 15:30 Proposal for an Emacs User Survey Adrien Brochard
2020-10-08 17:27 ` Philip K.
2020-10-08 17:45   ` Adrien Brochard
2020-10-09 11:30     ` Philip K.
2020-10-09 14:37       ` tomas
2020-10-09 17:23       ` Adrien Brochard
2020-10-09 18:17         ` Philip K.
2020-10-09 19:52           ` Adrien Brochard
2020-10-10  3:56             ` Richard Stallman
2020-10-10  9:36               ` Philip K.
2020-10-10 16:33                 ` Drew Adams
2020-10-10 18:02                   ` Dmitry Gutov
2020-10-11 10:46                 ` Jean Louis
2020-10-11 18:42                   ` Philip K.
2020-10-11 19:46                     ` Jean Louis
2020-10-11  1:00               ` Drew Adams
2020-10-10 10:35             ` Philip K.
2020-10-11  5:24               ` Richard Stallman
2020-10-11 17:59                 ` Philip K.
2020-10-12  2:03                   ` Richard Stallman
2020-10-11  7:31               ` Tomas Hlavaty
2020-10-11 12:04                 ` Jean Louis
2020-10-11 17:47                 ` Philip K.
2020-10-09 17:59     ` Jean Louis
2020-10-09  0:41 ` Karl Fogel
2020-10-09  1:26   ` Adrien Brochard
2020-10-10  3:52   ` Richard Stallman
2020-10-10 21:44     ` Dmitry Gutov
2020-10-12  2:04       ` Richard Stallman
2020-10-09  3:35 ` Richard Stallman
2020-10-09 18:01   ` Jean Louis
2020-10-09 23:12   ` Adrien Brochard
2020-10-09 23:31     ` Drew Adams
2020-10-09 23:36       ` Adrien Brochard
2020-10-10  2:21         ` Drew Adams
2020-10-10  2:40           ` Adrien Brochard
2020-10-10  3:53             ` Drew Adams
2020-10-10  8:09     ` Teemu Likonen
2020-10-10 10:45       ` Rasmus
2020-10-11 10:32       ` Jean Louis
2020-10-11 15:15         ` Drew Adams
2020-10-11 18:25           ` Jean Louis
2020-10-11 19:47             ` Drew Adams
2020-10-11 20:36               ` Jean Louis
2020-10-13  3:48             ` How to request changes in Emacs Richard Stallman
2020-10-13  4:59               ` Jean Louis
2020-10-16  4:00                 ` Richard Stallman
2020-10-16  4:47                   ` Drew Adams
2020-10-13 15:56               ` Drew Adams
2020-10-14  4:42                 ` Richard Stallman
2020-10-14  5:12                   ` Drew Adams
2020-10-11 20:19           ` Proposal for an Emacs User Survey Drew Adams
2020-10-11 20:42             ` Jean Louis
2020-10-11 18:33         ` Philip K.
2020-10-11 18:45           ` Jean Louis
2020-10-13  3:48             ` Richard Stallman
2020-10-11 19:47           ` Drew Adams
2020-10-11 20:33             ` Jean Louis
2020-10-11 23:24               ` Drew Adams
2020-10-12  4:10                 ` Jean Louis
2020-10-12 17:35                   ` Drew Adams
2020-10-12 18:33                     ` Jean Louis
2020-10-12 18:41                       ` Drew Adams
2020-10-11 20:54           ` Jean Louis
2020-10-12 14:32       ` Adrien Brochard
2020-10-10 10:54     ` Thibaut Verron
2020-10-10 13:50       ` Philip K.
2020-10-12 14:36         ` Adrien Brochard
2020-10-11 11:58       ` Jean Louis
2020-10-12 14:36       ` Adrien Brochard
2020-10-10 13:17     ` Rasmus
2020-10-12 14:41       ` Adrien Brochard
2020-10-11  5:23     ` Richard Stallman
2020-10-11  7:35       ` Vasilij Schneidermann
2020-10-11 12:08         ` Jean Louis
2020-10-11 12:50           ` Vasilij Schneidermann
2020-10-11 17:15             ` Jean Louis
2020-10-11 17:36               ` Thibaut Verron
2020-10-11 18:13                 ` Brett Gilio
2020-10-11 18:27                   ` Thibaut Verron
2020-10-11 18:44                     ` Jean Louis
2020-10-11 18:58                       ` Thibaut Verron
2020-10-11 20:12                         ` Jean Louis
2020-10-11 18:34                 ` Jean Louis
2020-10-11 19:15                   ` Thibaut Verron
2020-10-11 19:22                     ` Qiantan Hong
2020-10-13  3:47                       ` Richard Stallman
2020-10-11 20:26                     ` Jean Louis
2020-10-12  2:04             ` Richard Stallman
2020-10-12  3:32               ` Thibaut Verron
2020-10-12  5:04                 ` Jean Louis
2020-10-12  5:33                   ` Thibaut Verron
2020-10-12  6:29                     ` Jean Louis
2020-10-12  6:58                       ` Thibaut Verron
2020-10-12  8:16                         ` Jean Louis
2020-10-12  8:37                           ` Thibaut Verron
2020-10-12 14:09                             ` Jean Louis
2020-10-12  7:54                       ` Ihor Radchenko
2020-10-12  8:34                         ` Jean Louis
2020-10-12  8:54                           ` Ihor Radchenko
2020-10-12 16:36                             ` Jean Louis
2020-10-13  3:53                     ` Richard Stallman
2020-10-13  5:25                       ` Jean Louis
2020-10-15  3:59                         ` Richard Stallman
2020-10-15  5:19                           ` Jean Louis
2020-10-13  3:53                     ` Richard Stallman
2020-10-13  5:27                       ` Jean Louis
2020-10-16  3:59                         ` Richard Stallman
2020-10-16  6:02                           ` Marcel Ventosa
2020-10-16  6:52                             ` Thibaut Verron
2020-10-16  7:24                               ` Marcel Ventosa
2020-10-16  7:53                                 ` Thibaut Verron
2020-10-16  8:25                                   ` Marcel Ventosa
2020-10-16 12:17                                     ` Dmitry Gutov
2020-10-16 13:45                                       ` Marcel Ventosa
2020-10-16 14:04                                         ` Dmitry Gutov
2020-10-16 14:33                                           ` Marcel Ventosa
2020-10-16 14:58                                             ` Thibaut Verron
2020-10-16 15:51                                               ` Alfred M. Szmidt
2020-10-16 16:10                                                 ` Thibaut Verron
2020-10-16 16:16                                                   ` Alfred M. Szmidt
2020-10-16 16:32                                                     ` Thibaut Verron
2020-10-16 16:50                                                       ` Alfred M. Szmidt
2020-10-16 17:16                                                         ` Thibaut Verron
2020-10-16 17:32                                                           ` Alfred M. Szmidt
2020-10-16 17:55                                                             ` Thibaut Verron
2020-10-16 18:16                                                               ` Alfred M. Szmidt
2020-10-17  4:20                                               ` Richard Stallman
2020-10-17  4:50                                                 ` Thibaut Verron
2020-10-17  5:44                                                   ` Jean Louis
2020-10-17  6:42                                                     ` Thibaut Verron
2020-10-17  7:52                                                       ` Jean Louis
2020-10-18  4:16                                                       ` Richard Stallman
2020-10-18  5:49                                                         ` Jean Louis
2020-10-18  4:16                                                       ` Richard Stallman
2020-10-18  5:52                                                         ` Jean Louis
2020-10-18  4:16                                                       ` Richard Stallman
2020-10-18  8:36                                                         ` Thibaut Verron
2020-10-20  5:10                                                           ` Richard Stallman
2020-10-17  9:42                                                   ` Yuri Khan
2020-10-16 15:36                                             ` Ergus
2020-10-16 19:08                                             ` Dmitry Gutov
2020-10-16 19:52                                               ` Jean Louis
2020-10-16 20:16                                                 ` Dmitry Gutov
2020-10-16 20:17                                               ` Alfred M. Szmidt
2020-10-17 11:40                                               ` Marcel Ventosa
2020-10-17 19:51                                                 ` Dmitry Gutov
2020-10-17 21:38                                                   ` Alfred M. Szmidt
2020-10-18  2:58                                                   ` Marcel Ventosa
2020-10-16 19:22                                             ` Jean Louis
2020-10-16 19:17                                           ` Jean Louis
2020-10-16 19:36                                             ` Dmitry Gutov
2020-10-16 19:43                                               ` Dmitry Gutov
2020-10-16 20:03                                               ` Jean Louis
2020-10-16 20:29                                                 ` Thibaut Verron
2020-10-16 20:40                                                   ` Jean Louis
2020-10-17  4:19                                                   ` Richard Stallman
2020-10-17  5:02                                                     ` Thibaut Verron
2020-10-17 13:13                                                       ` Stefan Monnier
2020-10-17  5:07                                                     ` Jean Louis
2020-10-17 12:34                                                     ` Andy Moreton
2020-10-17 15:56                                                       ` Alfred M. Szmidt
2020-10-17 16:13                                                         ` Eli Zaretskii
2020-10-17 21:38                                                           ` Alfred M. Szmidt
2020-10-18  2:40                                                             ` Eli Zaretskii
2020-10-18  4:13                                                           ` Richard Stallman
2020-10-18 15:20                                                             ` Alfred M. Szmidt
2020-10-16 21:10                                                 ` Dmitry Gutov
2020-10-16 22:02                                                   ` Jean Louis
2020-10-16 19:08                                         ` Jean Louis
2020-10-16 19:47                                           ` Drew Adams
2020-10-16 20:15                                             ` Jean Louis
2020-10-16 20:59                                               ` Drew Adams
2020-10-16 21:50                                                 ` Jean Louis
2020-10-17  4:19                                                 ` Richard Stallman
2020-10-17  4:19                                               ` Richard Stallman
2020-10-16 13:57                                       ` Ergus
2020-10-16 15:31                                         ` Eli Zaretskii
2020-10-16 19:11                                         ` Jean Louis
2020-10-16 16:09                                       ` Alfred M. Szmidt
2020-10-16 17:29                                     ` Jean Louis
2020-10-16 19:11                                       ` Thibaut Verron
2020-10-16 19:54                                         ` Jean Louis
2020-10-16 20:20                                           ` Thibaut Verron
2020-10-17  4:22                                     ` Richard Stallman
2020-10-17  4:31                                       ` Qiantan Hong
2020-10-19 10:12                                         ` Robert Pluim
2020-10-19 16:15                                           ` Qiantan Hong
2020-10-20 13:45                                             ` Dmitry Gutov
2020-10-16 18:57                                   ` Jean Louis
2020-10-16 17:08                                 ` Jean Louis
2020-10-16 17:04                               ` Jean Louis
2020-10-16 17:39                                 ` Vasilij Schneidermann
2020-10-18  4:09                               ` Richard Stallman
2020-10-16 16:33                             ` MELPA issues - " Jean Louis
2020-10-16 18:09                               ` Dmitry Gutov
2020-10-16 22:00                                 ` Qiantan Hong
2020-10-16 22:08                                   ` Dmitry Gutov
2020-10-17  4:18                                   ` Richard Stallman
2020-10-17  4:59                                     ` chad
2020-10-17  5:05                                       ` Qiantan Hong
2020-10-17  5:06                                       ` Thibaut Verron
2020-10-17  2:59                               ` Marcel Ventosa
2020-10-18  4:12                                 ` Richard Stallman
2020-10-18  5:16                                   ` Jean Louis
2020-10-18  4:10                             ` Richard Stallman
2020-10-18  7:51                               ` Marcel Ventosa
2020-10-18  9:29                                 ` Dmitry Gutov
2020-10-18  9:36                                 ` Jean Louis
2020-10-18  8:57                               ` Thibaut Verron
2020-10-19  3:44                                 ` Richard Stallman
2020-10-18 15:57                               ` Philip K.
2020-10-19  3:48                                 ` Richard Stallman
2020-10-19 11:36                                   ` Dmitry Gutov
2020-10-19 12:43                                     ` Proposal to include obligatory PGP verification of packages from any repository Jean Louis
2020-10-19 15:55                                       ` Stefan Kangas
2020-10-19 16:38                                         ` Jean Louis
2020-10-19 17:30                                           ` Stefan Monnier
2020-10-19 17:47                                             ` Jean Louis
2020-10-19 18:02                                               ` Stefan Monnier
2020-10-19 19:04                                                 ` Jean Louis
2020-10-19 20:17                                                   ` Stefan Monnier
2020-10-19 21:02                                                     ` Jean Louis
     [not found]                                                       ` <jwvft69evmy.fsf-monnier+emacs@gnu.org>
2020-10-20  7:40                                                         ` Jean Louis
2020-10-22 21:25                                                           ` Stefan Monnier
2020-10-23  9:17                                                             ` Jean Louis
2020-10-23 14:52                                                               ` Stefan Monnier
2020-10-23 16:59                                                                 ` Jean Louis
2020-10-23 18:25                                                                   ` Stefan Monnier
2020-10-24  6:26                                                                     ` Jean Louis
2020-10-24 15:29                                                                       ` Stefan Monnier
2020-10-19 18:53                                             ` Stefan Kangas
2020-10-19 18:57                                               ` Vasilij Schneidermann
2020-10-19 19:20                                               ` Stefan Monnier
2020-10-19 18:28                                       ` Vasilij Schneidermann
2020-10-19 19:00                                         ` ELPA security (was: Proposal to include obligatory PGP verification of packages from any repository) Stefan Monnier
2020-10-19 19:50                                         ` Proposal to include obligatory PGP verification of packages from any repository Jean Louis
2020-10-20  5:17                                         ` Richard Stallman
2020-10-20  5:52                                           ` Stefan Monnier
2020-10-21  4:46                                             ` Richard Stallman
2020-10-20 16:17                                           ` Vasilij Schneidermann
2020-10-19 15:46                                     ` Proposal for an Emacs User Survey Drew Adams
2020-10-19 16:42                                       ` Jean Louis
2020-10-20  5:19                                         ` Richard Stallman
2020-10-19 16:42                                       ` Thibaut Verron
2020-10-19 16:53                                         ` Drew Adams
2020-10-20  5:14                                     ` Richard Stallman
2020-10-20 10:47                                       ` Dmitry Gutov
2020-10-16  7:05                           ` Thibaut Verron
2020-10-16 13:23                             ` Philip K.
2020-10-16 18:46                             ` Jean Louis
2020-10-17  4:22                             ` Richard Stallman
2020-10-15  3:52                     ` Richard Stallman
2020-10-15  5:57                       ` Thibaut Verron
2020-10-12  5:36                 ` Jean Louis
2020-10-12  5:52                   ` Thibaut Verron
2020-10-12  2:04         ` Richard Stallman
2020-10-12  2:04         ` Richard Stallman
2020-10-12 15:16       ` Adrien Brochard
2020-10-12 16:55         ` Jean Louis
2020-10-12 17:15         ` Drew Adams
2020-10-13  3:49         ` Richard Stallman
2020-10-11 20:54     ` Bonface M. K.
2020-10-16 13:30     ` Philip K.
2020-10-19 16:20 ` Philip K.
2020-10-19 19:44   ` Dmitry Gutov
2020-10-20  5:19   ` Richard Stallman
2020-10-20  8:22     ` Thibaut Verron
2020-10-20  9:48       ` Jean Louis
2020-10-20 11:03         ` Thibaut Verron
2020-10-20 11:38           ` Jean Louis
2020-10-26 17:43             ` Teemu Likonen
2020-10-26 19:36               ` Jean Louis
2020-10-26 19:58               ` Jean Louis
2020-10-27  3:44               ` Richard Stallman
2020-10-26 18:13             ` Ivan Yonchovski
2020-10-26 20:21               ` Jean Louis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CADB4rJHrDJL38m=Lfw4rpb2pwC2D6KTeMmYvzuz+DFxuhJ3Ekw@mail.gmail.com' \
    --to=radon.neon@gmail.com \
    --cc=cpitclaudel@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).