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
next prev parent 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).