Oleh Krehel [Fri, 16 Oct 2015 14:44:20 +0000 (16:44 +0200)]
Update the way directories are compressed
* lisp/dired-aux.el (dired-compress-file-suffixes): Update the recipe
for *.tar.gz decompression to use a pipe.
Add an entry for the default directory compression (to *.tar.g).
(dired-compress-file): Update.
See https://lists.gnu.org/archive/html/emacs-devel/2015-10/msg00949.html.
Nicolas Petton [Mon, 19 Oct 2015 22:11:30 +0000 (00:11 +0200)]
New function seq-position
* lisp/emacs-lisp/seq.el (seq-position): New function.
* test/automated/seq-tests.el: New tests for seq-position.
* doc/lispref/sequences.texi: Add documentation for `seq-position'.
Eli Zaretskii [Mon, 19 Oct 2015 13:15:30 +0000 (16:15 +0300)]
Resurrect image loading under auto-image-file-mode
* src/image.c (x_find_image_fd): Handle the case of -2 returned by
'openp' specially. This special case was lost in the changes on
2015-08-18. (Bug#21685)
Eli Zaretskii [Mon, 19 Oct 2015 07:04:50 +0000 (10:04 +0300)]
Fix return value of 'set-file-extended-attributes'
* lisp/files.el (set-file-extended-attributes): Return non-nil
when setting either ACLs or SELinux context succeeds. Document
the return value. (Bug#21699)
* doc/lispref/files.texi (Changing Files): Document the return
value of set-file-extended-attributes.
Eli Zaretskii [Sat, 17 Oct 2015 12:10:58 +0000 (15:10 +0300)]
Avoid crashes when redisplayng a window changes faces or fonts
* src/xdisp.c (redisplay_internal): If redisplaying the selected
window or one of the frames turns on the frame's 'redisplay' flag,
redisplay again. (Bug#21428)
* src/frame.c (x_set_font): Set the frame's 'fonts_changed' flag.
Paul Eggert [Sat, 17 Oct 2015 02:01:36 +0000 (19:01 -0700)]
Fix quoting of data within htmlfontify doc
* doc/misc/htmlfontify.texi (Data Structures, Customization):
Fix quoting of data structures. A Lisp quote is needed only
when data appears within Lisp code.
Artur Malabarba [Fri, 16 Oct 2015 22:54:38 +0000 (23:54 +0100)]
* emacs-lisp/package.el: Reload archive-contents if priorities change
(package--old-archive-priorities): New variable.
(package-read-all-archive-contents, package-menu--refresh): Use it
to decide when the `package-archive-contents' needs to be read
again.
Paul Eggert [Fri, 16 Oct 2015 21:54:09 +0000 (14:54 -0700)]
Make src headers idempotent and standalone
Redo src/*.h so that each include file is idempotent (that is, can
be included multiple times with the latter inclusions having no
effect) and standalone (that is, can be included by itself,
with no include file other than config.h needed as a prerequisite).
This is standard practice in GNU programs nowadays.
* lwlib/lwlib-widget.h, src/buffer.h, src/category.h, src/character.h:
* src/charset.h, src/coding.h, src/commands.h, src/disptab.h:
* src/fontset.h, src/gnutls.h, src/indent.h, src/keymap.h, src/macros.h:
* src/regex.h [emacs]:
* src/syntax.h, src/systty.h, src/termhooks.h:
Include lisp.h, for Lisp_Object.
* src/buffer.h, src/category.h, src/cm.h, src/commands.h, src/disptab.h:
* src/indent.h, src/intervals.h, src/keyboard.h, src/macros.h:
* src/process.h, src/puresize.h, src/region-cache.h, src/syntax.h:
* src/syssignal.h, src/sysstdio.h, src/systty.h, src/termchar.h:
* src/termopts.h, src/tparam.h, src/unexec.h:
Protect against multiple inclusion.
* src/buffer.h: Include character.h, for STRING_CHAR.
* src/emacsgtkfixed.h (struct frame):
* src/fontset.h (struct face):
* src/region-cache.h (struct buffer):
* src/termhooks.h (struct glyph):
* src/xsettings.h (struct x_display_info):
Add possibly-forward decl.
* src/syntax.h: Include buffer.h, for BVAR.
* src/sysselect.h: Include lisp.h, for eassume.
* src/termchar.h: Include <stdio.h>, for FILE.
* src/widget.h: Include <X11/IntrinsicP.h>, for Widget.
* src/xsettings.h: Include <X11/Xlib.h>, for XEvent.
Artur Malabarba [Fri, 16 Oct 2015 15:10:38 +0000 (16:10 +0100)]
* custom.el (custom-theme-load-path): Demote to defvar
`custom-theme-load-path' was a defcustom, but it shouldn't be for the
same reason that `load-path' shouldn't. Setting it via the customize
interface is a trap for the user.
Installed themes commonly add themselves to this variable, which means
its value is not fit for being saved (it will permanently remember dirs
that don't exist anymore).
This is aggravated by the fact that Emacs always applies the `user'
theme on top of any theme that's loaded, since this will apply the old
variable value and remove any new directories that had been recently
added by themes themselves.
Not to mention, we already have `custom-theme-directory', which is safe
to customize.
Eli Zaretskii [Fri, 16 Oct 2015 13:42:11 +0000 (16:42 +0300)]
Improve the doc string of 'completion-boundaries'
* lisp/minibuffer.el (completion-boundaries): Rename the argument
TABLE to COLLECTION, for consistency with other high-level
completion functions. Document how COLLECTION is called if it
is a function. (Bug#21644)
Oleh Krehel [Fri, 16 Oct 2015 11:57:22 +0000 (13:57 +0200)]
Make dired-do-compress work for *.zip files
* lisp/dired-aux.el (dired-check-process): Transform the top-level
comment into a docstring.
(dired-shell-command): New command. This mirrors
`dired-check-process', but is more user-friendly for passing
arguments.
(dired-compress-file-suffixes): Allow to specify the command switches
along with input (%i) and output (%o) inside the PROGRAM part.
Add an entry for *.zip files, and update the entry for *.tar.gz files
to the new style. Update the docstring.
(dired-compress-file): When PROGRAM matches %i or %o, use the new
logic.
(dired-update-file-line): Avoid an error when at end of buffer.
Mark Oteiza [Thu, 15 Oct 2015 16:32:59 +0000 (12:32 -0400)]
Add commands for controlling MPD modes
* lisp/mpc.el (mpc-cmd-consume, mpc-cmd-random, mpc-cmd-repeat)
(mpc-cmd-single): New functions.
(mpc-consume, mpc-repeat, mpc-single, mpc-shuffle): New commands.
(mpc-mode-menu): Add new commands as menu items.
Paul Eggert [Wed, 14 Oct 2015 06:34:16 +0000 (23:34 -0700)]
Merge from gnulib
This incorporates:
2015-10-13 binary-io, u64, unistd: port to strict C
2015-09-26 c-ctype: do not worry about EBCDIC + char signed
2015-09-25 c-ctype: port better to z/OS EBCDIC
2015-09-25 gnulib-common.m4: fix gl_PROG_AR_RANLIB/AM_PROG_AR clash
* doc/misc/texinfo.tex, lib/binary-io.c, lib/c-ctype.h, lib/u64.c:
* lib/unistd.c, m4/gnulib-common.m4, m4/gnulib-comp.m4:
Copy from gnulib.
Paul Eggert [Wed, 14 Oct 2015 06:09:43 +0000 (23:09 -0700)]
Take XPNTR private
* src/alloc.c (PURE_POINTER_P): Remove.
All uses replaced with PURE_P.
(XPNTR_OR_SYMBOL_OFFSET): New function.
(XPNTR): Move here from lisp.h.
Reimplement in terms of XPNTR_OR_SYMBOL_OFFSET.
(mark_maybe_object, valid_lisp_object_p, survives_gc_p):
Remove unnecessary cast.
(purecopy): Use XPNTR_OR_SYMBOL_OFFSET instead of XPNTR,
to avoid an unnecessary runtime test for symbols.
* src/lisp.h (lisp_h_XPNTR, XPNTR): Remove, moving XPNTR to alloc.c.
Only alloc.c needs XPNTR now.
Mark Oteiza [Tue, 13 Oct 2015 18:19:18 +0000 (14:19 -0400)]
Fix error messages for when covers are not found.
The last change to mpc-format let the binding to file call
mpc-file-local-copy with nil argument. Instead, employ if-let here so
nil bindings don't result in needless computation and errors.
* lisp/mpc.el: Require 'subr-x at compile time.
* lisp/mpc.el (mpc-format): Use if-let.
Oleh Krehel [Tue, 13 Oct 2015 12:07:10 +0000 (14:07 +0200)]
Make dired-do-compress work for directories
* lisp/dired-aux.el (dired-compress-file): When FILE is a directory,
instead of emitting an error, call "tar -czf FILE.tar.gz FILE".
Also convert the top comment into a docstring.
Martin Rudalics [Tue, 13 Oct 2015 10:11:43 +0000 (12:11 +0200)]
Allow setting frame pixel sizes from frame parameters (Bug#21415)
Also fix some misfeatures in frame (re-)sizing code, add more
debugging information and remove some dead code.
* lisp/frame.el (frame-notice-user-settings, make-frame): Change
parameter names when setting `frame-size-history'.
(frame--size-history): New function.
* src/frame.c (frame_inhibit_resize): If frame has not been made
yet, return t if inhibit_horizontal_resize or
inhibit_vertical_resize bit have been set.
(adjust_frame_size): Simplify.
(make_frame): Initialize inhibit_horizontal_resize,
inhibit_vertical_resize, tool_bar_redisplayed, tool_bar_resized.
(Fframe_after_make_frame): Reset inhibit_horizontal_resize and
inhibit_vertical_resize slots.
(x_set_frame_parameters): Handle `text-pixels' specification for
width and height parameters. Don't consider new_height or
new_width changes. Call adjust_frame_size instead of
Fset_frame_size.
(x_figure_window_size): Two new arguments x_width and y_width
returning frame's figures width and height. Calculate tool bar
height before frame sizes so SET_FRAME_HEIGHT can pick it up.
Handle `text-pixels' specification for width and height
parameters.
(Qtext_pixels, Qx_set_frame_parameters, Qset_frame_size)
(Qx_set_window_size_1, Qx_set_window_size_2)
(Qx_set_window_size_3, Qx_set_menu_bar_lines)
(Qupdate_frame_menubar, Qfree_frame_menubar_1)
(Qfree_frame_menubar_2): New symbols.
* src/frame.h (structure frame): New booleans
tool_bar_redisplayed, tool_bar_resized,
inhibit_horizontal_resize, inhibit_vertical_resize.
(x_figure_window_size): Update external declaration.
* src/gtkutil.c (xg_frame_set_char_size): Set size hints before
calling gtk_window_resize.
(update_frame_tool_bar): Make inhibiting of frame resizing more
discriminative. Set tool_bar_resized bit.
* src/nsfns.m (x_set_tool_bar_lines): Make inhibiting of frame
resizing more discriminative. Call adjust_frame_size instead of
x_set_window_size.
(Fx_create_frame): Handle x_width and x_height if
set by x_figure_window_size.
* src/nsterm.m (x_set_window_size): For GNUSTEP build don't
subtract 3 from tool bar height.
(x_set_window_size): Add frame_size_history_add call.
(x_new_font): Call adjust_frame_size instead of
x_set_window_size.
* src/w32fns.c (x_change_tool_bar_height): Reset
tool_bar_redisplayed and tool_bar_resized bits when adding tool
bar. Make inhibiting of frame resizing more discriminative.
(w32_wnd_proc): Remove dead code in WM_WINDOWPOSCHANGING case.
(Fx_create_frame): Handle x_width and x_height if set by
x_figure_window_size. Set size hints before adjusting frame size.
(x_create_tip_frame): Adjust x_figure_window_size call.
* src/w32term.c (x_set_window_size): Add frame_size_history_add
call.
* src/widget.c (set_frame_size): Remove dead code. Add
frame_size_history_add call. When frame_resize_pixelwise is t
use FRAME_PIXEL_WIDTH and FRAME_PIXEL_HEIGHT instead of
pixel_width and pixel_height.
(update_various_frame_slots): Remove dead code.
(EmacsFrameResize): Add more information in
frame_size_history_add call.
(EmacsFrameQueryGeometry): Round only when frame_resize_pixelwise
is not set.
* src/xdisp.c (redisplay_tool_bar): Set tool_bar_redisplayed bits.
* src/xfns.c (x_set_menu_bar_lines): Change argument name.
(x_change_tool_bar_height): Reset tool_bar_redisplayed and
tool_bar_resized bits when adding tool bar. Make inhibiting of
frame resizing more discriminative.
(Fx_create_frame): Handle x_width and x_height if set by
x_figure_window_size. Set size hints before adjusting frame size.
(x_create_tip_frame): Adjust x_figure_window_size call.
* src/xmenu.c (update_frame_menubar): Don't handle Lucid specially.
(set_frame_menubar): On Lucid never add core-border-width to
avoid that adding XtNinternalBorderWidth adds it again.
(free_frame_menubar): Handle frame_inhibit_resize true for Motif.
* src/xterm.c (x_new_font): In non-toolkit case handle size
change of menu bar.
(x_set_window_size_1): Fix calls to frame_size_history_add.
(x_wm_set_size_hint): Remove dead code. Set
size_hints.min_width and size_hints.min_height to base_width and
base_height.
Paul Eggert [Mon, 12 Oct 2015 22:30:18 +0000 (15:30 -0700)]
Unmacroize ebrowse.c and etags.c a bit
* lib-src/ebrowse.c (READ_CHUNK_SIZE): Now an enum constant.
(streq, filename_eq, set_flag, has_flag): Now inline functions.
(set_flag): First arg is now an address, not an lvalue.
All callers changed.
(filename_eq, set_flag, has_flag):
Rename from FILENAME_EQ, SET_FLAG, HAS_FLAG.
All callers changed.
* lib-src/etags.c (streq, strcaseeq, strneq, strncaseeq):
Now inline functions. Remove asserts that are unnecessary these
days (and in some cases were too-generous anyway).
Ken Raeburn [Sat, 10 Oct 2015 07:26:42 +0000 (03:26 -0400)]
Handle an opaque-move X11 window manager operation more efficiently.
* src/xterm.c (handle_one_xevent): If a ConfigureNotify event is
followed by more ConfigureNotify events for the same window, process
only the last one.
Ken Raeburn [Thu, 8 Oct 2015 08:13:06 +0000 (04:13 -0400)]
Fix cursor setting for tip frame; re-enable cursor generation.
* src/xfns.c (x_create_tip_frame): Include the cursor in the window
attributes sent when creating the new X window. Don't skip setting
the pointerColor parameter.
Ken Raeburn [Sat, 3 Oct 2015 03:36:31 +0000 (23:36 -0400)]
Rewrite x_set_mouse_color to sync less.
We can track serial numbers of X requests and correlate error events
with the associated requests. This way we can identify errors for
specific calls without having to use XSync after every one.
* src/xfns.c (enum mouse_cursor): New type.
(struct mouse_cursor_types, struct mouse_cursor_data): New types.
(mouse_cursor_types): New array listing the Lisp variables and default
cursor appearances for each cursor type.
(x_set_mouse_color_handler): New function; checks error event serial
number against submitted requests.
(x_set_mouse_color): Updated to use the new error handler callback,
and to be more table-driven, to simplify repetitious code.
Ken Raeburn [Fri, 2 Oct 2015 09:00:23 +0000 (05:00 -0400)]
Add x_catch_errors_with_handler.
* src/xterm.c (struct x_error_message_stack): Add new fields for a
callback function and associated data pointer.
(x_error_catcher): If the callback function is set, call it after
saving the error message string.
(x_catch_errors_with_handler): Renamed from x_catch_errors but now
accepts a callback function and data pointer.
(x_catch_errors): Now a wrapper function.
* src/xterm.h (x_special_error_handler): New typedef.
(x_catch_errors_with_handler): Declare.
Ken Raeburn [Wed, 7 Oct 2015 10:04:01 +0000 (06:04 -0400)]
Introduce x_uncatch_errors_after_check to reduce XSync calls.
Both x_had_errors_p and x_check_errors call XSync, so if they're
immediately followed by x_uncatch_errors, its XSync call will be
redundant, resulting in a wasted round trip to the X server.
* src/xterm.c (x_uncatch_errors_after_check): New routine; a copy of
x_uncatch_errors without the XSync call.
(XTmouse_position, x_wm_supports):
* src/xfns.c (x_set_mouse_color):
* src/xmenu.c (Fx_menu_bar_open_internal):
* src/xselect.c (x_own_selection, x_get_foreign_selection):
(Fx_get_atom_name): Call it instead of x_uncatch_errors.
* src/xterm.h (x_uncatch_errors_after_check): Declare.
Jay Belanger [Sun, 11 Oct 2015 03:08:33 +0000 (22:08 -0500)]
Document the optional prefix to `calc-yank'.
* doc/misc/calc.texi (Yanking into the Stack): Document the optional
prefix to `calc-yank'.
* lisp/calc/calc-yank.el (calc-yank): Ensure that things killed from
the Calc buffer are yanked back unchanged.
Mark Oteiza [Sun, 11 Oct 2015 02:23:59 +0000 (22:23 -0400)]
* lisp/calendar/calendar.el: Display buffer before executing body.
In each use of this macro, the modeline is derived from a window width
calculation, which will be wrong if (display-buffer) splits the window
horizontally.
Paul Eggert [Sun, 11 Oct 2015 01:03:49 +0000 (18:03 -0700)]
Use ‘echo’ safely with ‘\’ or leading ‘-’
POSIX says that ‘echo FOO’ produces implementation-defined output
if FOO contains leading ‘-’, or ‘\’ anywhere, so don’t assume GNU
behavior in that case.
* Makefile.in (removenullpaths): Remove.
(epaths-force): Rewrite to avoid the need for ‘echo’.
(install-etc): Be clearer about escaping the shell metacharacters
‘\’ and ‘$’.
* Makefile.in (install-arch-indep, install-etcdoc):
* admin/charsets/mapconv, admin/merge-gnulib, admin/merge-pkg-config:
* admin/quick-install-emacs, build-aux/gitlog-to-emacslog:
* configure.ac, lib-src/rcs2log, make-dist:
* src/Makefile.in (lisp.mk):
Don’t assume ‘echo’ outputs ‘\’ and leading ‘-’ unscathed.
For example, use ‘printf '%s\n' "$foo"’ rather than ‘echo "$foo"’
if $foo can contain arbitrary characters.
* lisp/Makefile.in (TAGS): Use ‘ls’, not ‘echo’, to avoid ‘\’ issues.
* doc/lispref/two-volume.make (vol1.pdf):
* test/etags/make-src/Makefile (web ftp publish):
Use ‘printf’ rather than ‘echo -e’.
Eli Zaretskii [Sat, 10 Oct 2015 17:01:00 +0000 (20:01 +0300)]
Fix vertical-motion in truncated lines that end in a stretch
* src/indent.c (Fvertical_motion): Expect overshoot when point is
beyond window margin and lines are truncated, even if we have a
stretch at point. (Bug#21468)
Paul Eggert [Sat, 10 Oct 2015 07:17:11 +0000 (00:17 -0700)]
CHECK_IMPURE and PURE_P speedup
* src/intervals.c (create_root_interval):
Do CHECK_IMPURE only for strings; not needed for buffers.
Prefer ! STRINGP to BUFFERP, for a tad more speed.
* src/puresize.h (CHECK_IMPURE, PURE_P):
Now inline functions instead of macros.
(PURE_P): Don’t use XPNTR; that is now the caller’s responsibility.
All callers changed.
(CHECK_IMPURE): New argument PTR, to save us the work of running XPNTR.
All callers changed.
Stefan Monnier [Fri, 9 Oct 2015 19:55:31 +0000 (15:55 -0400)]
* lisp/cedet/ede: Silence some compiler warnings
* lisp/cedet/ede.el: Require cl-lib. Silence some compiler warnings.
(ede-menu-obj-of-class-p): Use cl-some rather than `eval'.
(ede-apply-object-keymap, ede-reset-all-buffers)
(ede-auto-add-to-target): Use dolist.
(ede-new, ede-flush-deleted-projects, ede-global-list-sanity-check):
Use field names rather than initarg names in `oref'.
(ede-load-project-file): Remove unused var `file'.
(ede-map-any-target-p): Use cl-some rather than ede-map-targets.
(ede-set): Remove unused var `a'.
* lisp/cedet/ede/emacs.el: Silence some compiler warnings.
(ede-project-autoload): Avoid the old-style "name" argument.
(ede-emacs-find-matching-target): Use field names rather than initarg
names in `oref'.
* lisp/cedet/ede/linux.el: Silence some compiler warnings.
(ede-linux-load, ede-project-autoload): Avoid the old-style "name" argument.
(ede-linux-find-matching-target): Use field names rather than initarg
names in `oref'.