Paul Eggert [Wed, 2 Aug 2017 08:53:46 +0000 (01:53 -0700)]
When renaming a file, ask only if EEXIST or ENOSYS
* src/fileio.c (Frename_file): Avoid calling Ffile_directory_p
more than once on FILE. Use renameat_noreplace, so that we can
ask the user (and unlink and retry) only if this fails with errno
== EEXIST or ENOSYS. This avoids the need to ask the user for
permission to do an operation that will fail anyway. Simplify
computation of ok_if_already_exists for subsidiary functions.
* src/filelock.c (rename_lock_file): Prefer renameat_noreplace
if it works, as this avoids the need to link and unlink.
* src/lisp.h (renameat_noreplace): New decl.
* src/sysdep.c [HAVE_LINUX_FS_H]: Include linux/fs.h and sys/syscall.h.
(renameat_noreplace): New function.
Paul Eggert [Wed, 2 Aug 2017 08:53:46 +0000 (01:53 -0700)]
When creating a link, ask only if EEXIST
* src/fileio.c (Fadd_name_to_file, Fmake_symbolic_link):
Ask the user (and unlink and retry) only if link creation fails
with errno == EEXIST. This avoids the need to ask the user for
permission to do an operation that will fail anyway.
Tino Calancha [Wed, 2 Aug 2017 07:39:11 +0000 (16:39 +0900)]
Move dired tests using ls emulation to different files
Suggested in:
https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00018.html
* test/lisp/dired-tests.el (dired-test-bug27693)
(dired-test-bug27762, dired-test-bug27817)
(dired-test-bug27631, dired-test-bug27843): Delete those
parts requiring either ls-lisp or eshell-ls.
* test/lisp/ls-lisp-tests.el (ls-lisp-test-bug27762)
(ls-lisp-test-bug27631, ls-lisp-test-bug27693):
Add all dired tests using ls-lisp here.
* test/lisp/eshell/em-ls-tests.el (em-ls-test-bug27631)
(em-ls-test-bug27817, em-ls-test-bug27843): New test file. Add
all dired tests using eshell-ls here.
Katsumi Yamaoka [Wed, 2 Aug 2017 03:23:49 +0000 (03:23 +0000)]
* lisp/gnus/mm-uu.el (mm-uu-org-src-code-block-extract):
Say the handle is already decoded.
cf. <yw.87lgnh5cfv.fsf@alex.chromebook> in the info-gnus-english list.
Paul Eggert [Wed, 2 Aug 2017 00:24:28 +0000 (17:24 -0700)]
Don’t worry about unlink if errno == ENOENT
* src/fileio.c (Fdelete_file):
* src/keyboard.c (Fopen_dribble_file): Do not report failure to
remove a file if unlink fails with errno == ENOENT. This can
happen even if Emacs is the only program removing the file, in
case an NFS cache overflows. The file does not exist if errno ==
ENOENT, so it is OK to proceed.
Tino Calancha [Tue, 1 Aug 2017 15:01:45 +0000 (00:01 +0900)]
Fix misalignment in Dired when dired-directory is a cons
* lisp/dired.el (dired--need-align-p, dired--align-all-files):
New defuns.
(dired-internal-noselect): Call dired--align-all-files when
dired-directory is a cons (Bug#27762).
* test/lisp/dired-tests.el (dired-test-bug27762): Test should pass.
Eli Zaretskii [Tue, 1 Aug 2017 14:45:25 +0000 (17:45 +0300)]
Fix some dired-tests.el on MS-Windows
* test/lisp/dired-tests.el (dired-test-bug27243-01)
(dired-test-bug27243-02): On MS-Windows, pass test-dir through
file-truename, to avoid bogus failures due to file-name comparison
as strings.
Tino Calancha [Tue, 1 Aug 2017 14:31:35 +0000 (23:31 +0900)]
Insert subdir content if dir-or-list is a string w/o wildcards
* lisp/eshell/em-ls.el (eshell-ls--insert-directory):
Append '("-d") into 'eshell-ls-dired-initial-args'
if 'dired-directory' is a cons or there are wildcars (Bug#27843).
* test/lisp/dired-tests.el (dired-test-bug27843): Add test.
Stephen Berman [Tue, 1 Aug 2017 12:17:44 +0000 (14:17 +0200)]
Update todo-mode defcustoms in a less hideous way
* lisp/calendar/todo-mode.el (todo-reevaluate-filelist-defcustoms)
(todo-reevaluate-default-file-defcustom)
(todo-reevaluate-category-completions-files-defcustom)
(todo-reevaluate-filter-files-defcustom): Delete these functions.
(todo-update-filelist-defcustoms): New function. This replaces
todo-reevaluate-filelist-defcustoms, using the 'custom-type'
property instead of re-evaluating the defcustoms.
(todo-add-file, todo-rename-file, todo-delete-file)
(todo-delete-category, todo-move-category)
(todo-convert-legacy-files, todo-check-file): Replace call of
todo-reevaluate-filelist-defcustoms by
todo-update-filelist-defcustoms.
(todo-show, todo-category-completions): Replace call of
todo-reevaluate-* function by use of 'custom-type' property.
Tino Calancha [Tue, 1 Aug 2017 10:00:59 +0000 (19:00 +0900)]
Add more should form calls in a failing dired test
Some dired tests fail intermittently in hydra. Add few
more should form calls for debugging.
See:
https://lists.gnu.org/archive/html/emacs-devel/2017-07/msg01092.html
* test/lisp/dired-tests.el (dired-test-bug27243-01): Add few more should
forms for debugging.
Paul Eggert [Mon, 31 Jul 2017 19:31:02 +0000 (12:31 -0700)]
Avoid most stat calls when completing file names
* admin/merge-gnulib (GNULIB_MODULES): Add d-type.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* m4/d-type.m4: New file, copied from gnulib.
* src/dired.c (DT_UNKNOWN, DT_DIR, DT_LINK)
[!HAVE_STRUCT_DIRENT_D_TYPE]: New constants.
(dirent_type): New function.
(file_name_completion): Use it, to avoid unnecessary calls to
stat-like functions on GNU/Linux and other platforms with d_type.
(file_name_completion_stat): Just follow the link; there is no
need to try first with AT_SYMLINK_NOFOLLOW since the directory
entry was already checked to exist.
dired-tests: Unload tested features after test them
Some tests are for Dired with ls-lisp or eshell-ls.
Requiring these features add an advice on `dired' and
might affect other tests.
Do not require these features at the top of the file; require
then inside the tests and unload then at the end.
* test/lisp/dired-tests.el (dired-test-bug27693)
(dired-test-bug7131, dired-test-bug27817, dired-test-bug27631):
require ls-lisp and/or eshell-ls inside the test; unload the
features at the end.
Michael Albinus [Mon, 31 Jul 2017 12:32:24 +0000 (14:32 +0200)]
Small adaptions for directory wildcards
* lisp/dired.el (dired-insert-directory): Remove "--dired"
when there are wildcards, and the directory is remote.
* test/lisp/net/tramp-tests.el (tramp--test-make-temp-name):
Adapt docstring.
(tramp-test17-dired-with-wildcards): Skip for all methods but
those from tamp-sh.p.
ls-lisp: Do not require em-glob at top of the file
Require em-glob inside 'ls-lisp--dired'. This is necessary to
not break the Emacs build.
See following thread for details:
https://lists.gnu.org/archive/html/emacs-devel/2017-07/msg01083.html
* lisp/ls-lisp.el (dired-goto-next-file)
(dired-read-dir-and-switches, eshell-extended-glob):
Add function declarations.
* lisp/eshell/em-ls.el (dired-goto-next-file): Fix function declaration.
* lisp/textmodes/css-mode.el (css-property): Inherit from
`font-lock-keyword-face' instead of `font-lock-variable-name-face' to
distinguish CSS properties from variables.
Allow Dired to handle calls like
\(dired \"~/foo/*/*.el\"), that is, with wildcards within
the directory part of the file argument (Bug#27631).
* lisp/files.el (insert-directory-wildcard-in-dir-p): New predicate.
(insert-directory-clean): New defun extracted from insert-directory.
(insert-directory)
* lisp/dired.el (dired-internal-noselect)
(dired-insert-directory): Use the new predicate; when it's true,
handle the directory wildcards with a shell call.
* lisp/eshell/em-ls.el (eshell-ls-use-in-dired): Add/remove both advices.
(eshell-ls-unload-hook): New defun. Use it in
eshell-ls-unload-hook instead of an anonymous function.
(eshell-ls--dired)
* lisp/ls-lisp.el (ls-lisp--dired):
Advice dired to handle wildcards in the directory part with both
eshell-ls and ls-lisp.
* etc/NEWS: Announce it.
* doc/emacs/dired.texi (Dired Enter): Update manual.
* test/lisp/dired-tests.el (dired-test-bug27631): Add test.
Stephen Berman [Sat, 29 Jul 2017 11:59:18 +0000 (13:59 +0200)]
artist.el: Avoid error with keyboard command invocation
* lisp/textmodes/artist.el (artist-mouse-choose-operation):
Call x-popup-menu with t instead of last-nonmenu-event as the
value of the position argument; this allows invoking the
command from the keyboard without raising an error (bug#27819).
Stephen Berman [Sat, 29 Jul 2017 11:34:47 +0000 (13:34 +0200)]
Preserve point under 'dired-auto-revert-buffer' (third case)
* lisp/files.el (find-file): Use pop-to-buffer-same-window
instead of switch-to-buffer. This preserves Dired window
point when dired-auto-revert-buffer is non-nil. (Bug#27243)
* test/lisp/dired-tests.el (dired-test-bug27243-01)
(dired-test-bug27243-02, dired-test-bug27243-03): New tests.
The first two replace a previous test that combined them; that
test intermittently fails in the Hydra build system, so maybe
separating the two cases will help locate the point of
failure. The third test involves find-file but is here
because it, like the others, is testing the effect of
dired-auto-revert-buffer.
Eli Zaretskii [Sat, 29 Jul 2017 08:25:29 +0000 (11:25 +0300)]
Improve documentation of 'occur'
* doc/emacs/search.texi (Other Repeating Search):
* lisp/replace.el (occur): Make the documentation of 'occur' be
more accurate when matches overlap. (Bug#27818)
Paul Eggert [Sat, 29 Jul 2017 07:01:02 +0000 (00:01 -0700)]
Do not worry about paxctl on newer NetBSD
Problem reported privately by Thomas Klausner.
* configure.ac (emacs_uname_r): New var. Use it to avoid paxctl
on newer NetBSD platforms, where it is not needed. Also use it to
simplify Cygwin diagnostic.
Stefan Monnier [Fri, 28 Jul 2017 16:27:00 +0000 (12:27 -0400)]
* lisp/password-cache.el (password-data): Use a hash-table
* lisp/auth-source.el (auth-source-magic): Remove.
(auth-source-forget+, auth-source-forget-all-cached): Adjust to new
format of password-data.
(auth-source-format-cache-entry): Just use a cons.
Stefan Monnier [Fri, 28 Jul 2017 16:02:01 +0000 (12:02 -0400)]
* lisp/subr.el (define-symbol-prop): New function
(symbol-file): Make it find symbol property definitions.
* lisp/emacs-lisp/pcase.el (pcase-defmacro):
* lisp/emacs-lisp/ert.el (ert-set-test): Use it instead of `put'.
(ert-describe-test): Adjust call to symbol-file accordingly.
Stefan Monnier [Fri, 28 Jul 2017 15:28:48 +0000 (11:28 -0400)]
* lisp/subr.el (method-files): Move function to cl-generic.el
* lisp/emacs-lisp/cl-generic.el (cl-generic-p): New function.
(cl--generic-method-files): New function, moved from subr.el.
* lisp/emacs-lisp/edebug.el (edebug-instrument-function): Use them.
* test/lisp/emacs-lisp/cl-generic-tests.el:
* test/lisp/subr-tests.el: Move and adjust method-files tests accordingly.
Alan Mackenzie [Thu, 27 Jul 2017 17:56:23 +0000 (17:56 +0000)]
Fix C++ class initializers not always being fontified at mode start.
The problem here happened when an "outer list" of declarations moved beyond an
"inner list" containing class initializers. These weren't being checked for
by the code.
Also, fix places in c-get-fontification-context where point is undefined.
* lisp/progmodes/cc-fonts.el (c-get-fontification-context): when argument
not-front-decl is set, test for class initializers. Also, anchor point in
places where it is moved and is otherwise undefined.
Michael Albinus [Thu, 27 Jul 2017 10:51:45 +0000 (12:51 +0200)]
Add watchdog process to tramp-test36-asynchronous-requests
* test/lisp/net/tramp-tests.el (tramp--test-timeout-handler):
New defun.
(tramp-test36-asynchronous-requests): Use a watchdog process,
listening for SIGUSR1.
Stefan Monnier [Thu, 27 Jul 2017 04:13:27 +0000 (00:13 -0400)]
* lisp/url/url-cookie.el: Use lexical-binding
(url-cookie-host-can-set-p): Remove unused var `last'.
Use string-suffix-p.
(url-cookie-list): De morgan.
(url-cookie-quit): Remove.
(url-cookie-mode): Inherit from special-mode.
(url-cookie-mode-map): Simplify accordingly.
* lisp/emacs-lisp/ert.el
(ert-results-pop-to-backtrace-for-test-at-point):
Set multibyte true, not false. This copies a
debugger-setup-buffer change from 2009-08-30, and stops the
"Backtrace for" header line containing ^X and ^Y.
Fix semantic-symref-parse-tool-output-one-line after 644cdd1aa0
* lisp/cedet/semantic/symref/grep.el
(semantic-symref-grep--line-re): Delete.
(semantic-symref-parse-tool-output-one-line):
Use regexp and group numbers from (grep-regexp-alist).
Mark Oteiza [Tue, 25 Jul 2017 00:17:50 +0000 (20:17 -0400)]
; Fix previous commit
Functions prefixed with `turn-on-foo' are quite old, and in general
subsumed by the corresponding `foo-mode` command.
* lisp/display-line-numbers.el (turn-on-display-line-numbers-mode):
Rename with library prefix, mark as internal. Nix autoload.
Stefan Monnier [Mon, 24 Jul 2017 22:10:02 +0000 (18:10 -0400)]
* lisp/progmodes/perl-mode.el: Add support for indented here docs
* lisp/progmodes/perl-mode.el (perl-syntax-propertize-function):
Recognize the new <<~ syntax for indented here docs.
(perl-syntax-propertize-special-constructs): Adjust search of the
end of here docs accordingly.
* test/manual/indent/perl.perl: Add test for indented here docs.
Michael Albinus [Mon, 24 Jul 2017 17:38:17 +0000 (19:38 +0200)]
Fix Bug#27371
* lisp/loadhist.el (loadhist-unload-element): Declare for
different entry types of `load-history'.
(loadhist--restore-autoload): New variable.
(loadhist--unload-function): New defun.
(unload-feature): Use `loadhist-unload-element'. Recommended by
Stefan Monnier. (Bug#27371)
* test/lisp/net/tramp-tests.el (tramp-test39-unload):
Check, that the `tramp-file-name' structure has been unloaded.
Enable GUI Emacs without 'make install' on macOS (Bug #27645)
* nextstep/INSTALL: Correct it, and mention that Emacs can be run
from 'src/emacs'.
* src/nsterm.m (applicationDidFinishLaunching:): When Emacs is
launched outside of a macOS application bundle, change its
activation policy from the default 'prohibited' to 'regular'.
Alan Mackenzie [Sun, 23 Jul 2017 13:48:36 +0000 (13:48 +0000)]
Convert CC Mode's c-found-types from an obarray to a hash table.
* lisp/progmodes/cc-engine.el (c-clear-found-types): create a hash table
rather than an obarray.
(c-copy-found-types): Remove.
(c-add-type, c-unfind-type, c-check-type, c-list-found-types): Amend to use
the new hash table.
(c-forward-<>-arglist): Use copy-hash-table rather than c-copy-found-types.
* lisp/net/shr.el (shr-put-image): Display svg images as svg
(bug#27799). I suspect the previous change was checked in by
accident in conjuction with some other svg changes.
Don't automatically enable Gconf if Gsettings was found
* configure.ac (HAVE_GCONF) [HAVE_GSETTINGS]:
Don't test for Gconf unless specifically requested.
Gconf was deprecated in favor of Gsettings several years ago.
Michael Albinus [Sat, 22 Jul 2017 18:24:24 +0000 (20:24 +0200)]
Add line numbers display to the Options menu
* lisp/menu-bar.el (toggle-display-line-numbers): Remove.
(menu-bar-display-line-numbers-mode): New defun.
(menu-bar-showhide-line-numbers-menu): New defvar.
(menu-bar-showhide-menu): Use `menu-bar-showhide-line-numbers-menu'
Noam Postavsky [Wed, 7 Jun 2017 23:59:09 +0000 (19:59 -0400)]
Signal error for symbol names with strange quotes (Bug#2967)
* src/lread.c (read1): Signal an error when a symbol starts with a
non-escaped quote-like character.
* test/src/lread-tests.el (lread-tests--funny-quote-symbols): New
test.
* etc/NEWS: Announce change.
Add a minor mode interface for display-line-numbers
* lisp/cus-start.el: Use the new display-line-numbers group.
* lisp/display-line-numbers.el: New file.
* doc/emacs/custom.texi (Init Rebinding): Re-add entry that used to
belong to linum-mode.
* doc/emacs/modes.texi (Minor Modes): Summarize the mode.
* etc/NEWS: Document display-line-numbers-mode and its customization
variables, and mention that display-line-numbers-width is
buffer-local.
* src/xdisp.c (syms_of_xdisp) <display-line-numbers-width>: Fix a
typo.
* lisp/progmodes/ld-script.el: (ld-script-keywords): New commands
NOCROSSREFS_TO and HIDDEN added. Fix documentation sections
numbers for PROVIDE/PROVIDE_HIDDEN commands.
(ld-script-builtins): New builtin function LOG2CEIL added.