Alan Mackenzie [Sat, 26 Sep 2015 19:03:35 +0000 (19:03 +0000)]
Fix follow-scroll-up/down, making them replacements for scroll-up/down.
1. Allow point to move between follow windows in scroll operations.
2. Fix bug where `right-char' just before EOB caused spurious scrolling,
when EOB was isolated in the last follow window.
lisp/follow.el (follow-fixed-window): New variable.
(follow-get-scrolled-point): New function.
(follow-scrol-up, follow-scroll-down): Add autoload cookies.
Reformulate
the code. Put `scroll-command' properties on the functions. Correct
minor errors in ...-down's doc string and code.
(follow-calc-win-end): Amend incomplete doc string. Use
`pos-visible-in-window-p' to check whether EOB is in the window.
(follow-estimate-first-window-start): Correct an off-by-1 error.
(follow-adjust-window): Add handling for explicit scrolling operations.
Eli Zaretskii [Sat, 26 Sep 2015 06:50:58 +0000 (09:50 +0300)]
Make face realization be more frame-specific
* src/frame.h (struct f): New flag face_change.
* src/xfaces.c (Finternal_make_lisp_face)
(Finternal_copy_lisp_face, Finternal_set_lisp_face_attribute)
(update_face_from_frame_parameter): Set the face_change flag only
for the frame whose faces are affected.
* src/xdisp.c (init_iterator): If a frame's face_change flag is
set, free faces only on that frame.
(redisplay_internal): Disable "display optimization 1" if the
frame's face_change flag is set.
(redisplay_window): Don't allow skipping a window's redisplay if
its frame's face_change flag is set.
* src/frame.c (x_set_screen_gamma): Instead of calling
Fclear_face_cache, call clear_face_cache and set
windows_or_buffers_changed to a non-zero value. This avoids
setting the global face_change flag that triggers face realization
on all frames and thorough redisplay of all of them.
* lisp/term/tty-colors.el (tty-register-default-colors): Don't
clear face cache if the selected frame is a GUI frame.
Eli Zaretskii [Fri, 25 Sep 2015 17:29:27 +0000 (20:29 +0300)]
Avoid non-ASCII decoding errors in C src files
* src/nsterm.m:
* src/lisp.h:
* src/editfns.c:
* src/doprnt.c: Add 'coding' cookies -- these files include
Unicode characters and should be decoded as UTF-8.
Alan Mackenzie [Fri, 25 Sep 2015 11:31:50 +0000 (11:31 +0000)]
Resurrect edebug-set-initial-mode, repurposing it to set the global mode.
lisp/emacs-lisp/edebug.el (edebug-initial-mode-alist): Uncomment, and
amend to match current modes and functions.
(edebug-set-initial-mode): Uncomment and change from setting a defun's
`edebug-initial-mode''s property to setting the variable
`edebug-initial-mode'.
(top level): Create new binding C-x C-a C-m for
`edebug-set-initial-mode'.
doc/lispref/edebug.texi (Edebug Execution Modes): document
`edebug-set-initial-mode' and its new key binding.
(Edebug Options): Mention the new command in the pertinent place.
Paul Eggert [Fri, 25 Sep 2015 07:21:58 +0000 (00:21 -0700)]
Merge from gnulib
This incorporates:
2015-09-25 c-ctype: rewrite to use inline functions
2015-09-24 maint: add coding cookies to non-ASCII sources
2015-09-24 gitlog-to-changelog: trim only trailing whitespaces
* build-aux/gitlog-to-changelog, doc/misc/texinfo.tex:
* lib/acl-internal.c, lib/acl-internal.h, lib/c-ctype.c:
* lib/c-ctype.h, lib/get-permissions.c, lib/qcopy-acl.c:
* lib/set-permissions.c:
Copy from gnulib.
Ivan Andrus [Tue, 8 Sep 2015 22:37:06 +0000 (16:37 -0600)]
Allow major-modes full control over quoting nested comments
* newcomment.el (comment-quote-nested-function): New variable.
(comment-quote-nested-default): New function.
(comment-quote-nested): Use `comment-quote-nested-function'.
Michael Albinus [Wed, 23 Sep 2015 18:34:22 +0000 (20:34 +0200)]
Continue gfilenotify.c implementation of missing parts
* lisp/filenotify.el (file-notify-add-watch): Append `flags' to
`gfile-add-watch' call.
(file-notify-rm-watch): Modify `file-notify-descriptors' only
after calling the low level functions.
* src/gfilenotify.c (dir_monitor_callback): Check, whether
event_type is expected.
(Fgfile_add_watch): Allow also `change'and `attribute-change' for FLAGS.
(Fgfile_rm_watch): Fix typo.
(syms_of_gfilenotify): Declare Qchange and Qattribute_change.
Eli Zaretskii [Wed, 23 Sep 2015 13:20:10 +0000 (16:20 +0300)]
Support ':relative-width' space display spec on text-mode terminals
* src/xdisp.c (produce_stretch_glyph): Support ':relative-width'
space display spec on text-mode terminals, by calling
PRODUCE_GLYPHS instead of x_produce_glyphs. Remove the HAVE_WINDOW_SYSTEM
guards from the supporting code, as well as the test for a GUI frame.
Stefan Monnier [Tue, 22 Sep 2015 15:11:50 +0000 (11:11 -0400)]
* prolog.el: Fix indentation of empty line
* lisp/emacs-lisp/smie.el (smie-rules-function): Document new
`empty-line-token' element.
(smie-indent-empty-line): New function.
(smie-indent-functions): Add it.
* lisp/progmodes/prolog.el (prolog-smie-rules): Fix :list-intro behavior
and use the new `empty-line-token' element (bug#21526).
(prolog-mode-variables): Fix comment-start-skip setting to match
comment-start.
Alan Mackenzie [Tue, 22 Sep 2015 12:45:00 +0000 (12:45 +0000)]
Make description of `edebug-initial-mode' user friendly.
Fixes debbugs#21365.
dec/lispref/edebug.texi (Edebug Execution Modes): Change the
desscription
of `edebug-initial-mode' from that of its implementation to that of its
visual effect and use. Move the paragraph higher up.
* src/gfilenotify.c (dir_monitor_callback): Cancel the monitor if
the file or directory to be watched is deleted.
(Fgfile_add_watch): Make watch_object a triple.
(Fgfile_rm_watch): Check, whether watch is cancelled already.
(Fgfile_valid_p): New defun.
(syms_of_gfilenotify): Declare Sgfile_valid_p.
Mark Oteiza [Mon, 21 Sep 2015 20:45:58 +0000 (16:45 -0400)]
Use lunate epsilon for TeX \epsilon
* lisp/textmodes/tex-mode.el (tex--prettify-symbols-alist): Add
\varepsilon using GREEK SMALL LETTER EPSILON, and change \epsilon to use
GREEK LUNATE EPSILON SYMBOL
Paul Eggert [Mon, 21 Sep 2015 18:56:01 +0000 (11:56 -0700)]
Improve git diff hunk headers for .el, .texi
Problem reported by Alan Mackenzie in:
http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00826.html
* .gitattributes (*.el, *.texi): New patterns.
* autogen.sh: Configure diff.elisp.xfuncname and
diff.texinfo.xfuncname if using Git.
Paul Eggert [Mon, 21 Sep 2015 14:58:41 +0000 (07:58 -0700)]
Clarify or replace a few \u escapes.
* doc/lispref/nonascii.texi (Character Properties)
More-detailed commentary for \u escapes.
* lisp/progmodes/python.el (python--prettify-symbols-alist):
* lisp/replace.el (query-replace-from-to-separator):
* lisp/textmodes/rst.el (rst-bullets, rst-re-alist-def)
(rst-mode-syntax-table):
* lisp/whitespace.el (whitespace-display-mappings):
Prefer actual character to \u escape when this makes the code
easier to follow in the usual case where Unicode chars can be
displayed.
Paul Eggert [Mon, 21 Sep 2015 14:45:31 +0000 (07:45 -0700)]
Pacify GCC -Wmaybe-uninitialized in xdisp.c
* src/xdisp.c (face_before_or_after_it_pos): Use do-while rather
than while loop to avoid GCC -Wmaybe-uninitialized diagnostic with
charpos. The loop should always execute at least once anyway.
Eli Zaretskii [Mon, 21 Sep 2015 13:29:43 +0000 (16:29 +0300)]
Another fix of file-notify-tests for w32notify
* test/automated/file-notify-tests.el (file-notify-test02-events):
Further adaptation for w32notify: reduce the number of expected
'changed' events. (Bug#21435)
Michael Albinus [Mon, 21 Sep 2015 13:07:06 +0000 (15:07 +0200)]
Adapt tests and manual for w32notify
* doc/lispref/os.texi (File Notifications): w32notify does not
send `attribute-changed' events.
* test/automated/file-notify-tests.el (file-notify--test-with-events):
Simplify parameters. Adapt all callees.
(file-notify-test02-events): w32notify does not send
`attribute-changed' events.
(file-notify-test04-file-validity, file-notify-test05-dir-validity):
Do not skip in case of w32notify. Simply ignore this part of the test.
Stefan Monnier [Mon, 21 Sep 2015 03:01:16 +0000 (23:01 -0400)]
Subject: * lisp/progmodes/prolog.el: Improve handling of if/then/else
(prolog-smie-rules): Accomodate standard if/then/else special indentation.
(prolog-mode): Add . to electric-indent-chars.
(prolog-electric--if-then-else): Re-indent the line before adding space
after the new char (bug#21526).
Paul Eggert [Sun, 20 Sep 2015 16:45:04 +0000 (09:45 -0700)]
'.' -> `.' in doc string
* lisp/emacs-lisp/timer.el (run-at-time): In doc string, quote
individual chars with grave quotes instead of straight quotes, as
this works better when they are translated to curved quotes.
* lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-notify-add-watch):
Improve implementation.
(tramp-gvfs-monitor-file-process-filter): Rename from
`tramp-gvfs-file-gvfs-monitor-file-process-filter'. Delete
process if appropriate.
* lisp/net/tramp-sh.el (tramp-sh-handle-file-notify-add-watch):
Improve implementation.
(tramp-sh-gvfs-monitor-dir-process-filter): Rename from
`tramp-sh-file-gvfs-monitor-dir-process-filter'. Delete process
if appropriate.
(tramp-sh-inotifywait-process-filter): Rename from
`tramp-sh-file-inotifywait-process-filter'. Delete process if
appropriate.
* lisp/net/tramp.el (tramp-handle-file-notify-rm-watch):
Use `delete-process'
(tramp-handle-file-notify-valid-p): Check also, that file or
directory to be watched still exists.
* test/automated/file-notify-tests.el (file-notify--test-timeout):
New defun. Use it at all places a timeout is needed.
(file-notify--test-cleanup): Delete directories recursively.
Cleanup also Tramp connections.
(file-notify-test02-events): Add tests for `attribute-change'.
(file-notify-test04-file-validity, file-notify-test05-dir-validity):
Add tests for `file-notify-rm-watch'.
Paul Eggert [Sun, 20 Sep 2015 16:40:35 +0000 (09:40 -0700)]
Use %s to format strings instead of splicing them
If FOO might contain quotes that are part of a file or variable
name, the quotes should not be translated when showing FOO’s name
in a diagnostic. So, for example, (message (concat (FOO ": bar")))
is not quite right, as it would translate FOO’s quotes.
Change it to (message "%s: bar" FOO) instead.
* lisp/allout.el (allout-process-exposed):
* lisp/calc/calc-ext.el (calc-do-prefix-help):
* lisp/calc/calc-store.el (calc-store-into):
* lisp/calendar/todo-mode.el (todo-category-completions):
* lisp/cedet/semantic/complete.el (semantic-completion-message):
* lisp/org/ob-latex.el (convert-pdf):
* lisp/org/org-crypt.el (org-crypt-check-auto-save):
* lisp/org/ox-latex.el (org-latex-compile):
* lisp/org/ox-man.el (org-man-compile):
* lisp/org/ox-odt.el (org-odt--export-wrap):
* lisp/org/ox-texinfo.el (org-texinfo-compile):
* lisp/progmodes/ruby-mode.el (ruby-in-ppss-context-p):
* lisp/progmodes/verilog-mode.el (verilog-batch-execute-func)
(verilog-signals-combine-bus, verilog-read-defines)
(verilog-getopt-file, verilog-expand-dirnames)
(verilog-modi-lookup, verilog-modi-modport-lookup-one):
* lisp/term/ns-win.el (ns-spi-service-call):
Use %s to avoid translating quotes of file names etc. in diagnostics.
Eli Zaretskii [Sun, 20 Sep 2015 06:34:24 +0000 (09:34 +0300)]
Improve documentation of 'run-at-time'
* lisp/emacs-lisp/timer.el (run-at-time): Improve the doc string.
In particular, don't refer to 'diary-entry-time', because it is
unavailable until diary-lib is loaded. Also, refer to
'timer-duration-words', not 'timer-duration', as the latter's doc
string says nothing about the accepted strings.
(font-lock-fontify-block): Don't let-bind it.
(font-lock-compile-keywords): Don't use it.
(font-lock-set-defaults): Don't set it. Allow the variable alist to
start one slot earlier, instead.
* lisp/emacs-lisp/syntax.el (font-lock-beginning-of-syntax-function):
Don't declare.
(syntax-ppss): Don't use it either.
* lisp/font-core.el (font-lock-defaults): Remove SYNTAX-BEGIN
from docstring.
Paul Eggert [Thu, 17 Sep 2015 23:08:20 +0000 (16:08 -0700)]
Backslash cleanup in Elisp source files
This patch should not change behavior. It typically omits backslashes
where they are redundant (e.g., in the string literal "^\$").
In a few places, insert backslashes where they make regular
expressions clearer: e.g., replace "^\*" (equivalent to "^*") with
"^\\*", which has the same effect as a regular expression.
Also, use ‘\ %’ instead of ‘\%’ when avoiding confusion with SCCS IDs,
and similarly use ‘\ $’ instead of ‘\$’ when avoiding confusion with
RCS IDs, as that makes it clearer that the backslash is intended.
Paul Eggert [Thu, 17 Sep 2015 19:02:55 +0000 (12:02 -0700)]
Fix minor quoting problems in diagnostics
* lisp/tutorial.el (tutorial--describe-nonstandard-key):
* lisp/vc/ediff-ptch.el (ediff-fixup-patch-map):
Follow text-quoting-style in diagnostic, and quote a file name.
Paul Eggert [Wed, 16 Sep 2015 23:23:55 +0000 (16:23 -0700)]
Omit unnecessary \ before paren in C docstrings
Although \( is needed in docstrings in Elisp code, it is not needed in
docstrings in C code, since C function definitiions do not start with
a parenthesis. The backslashes made the docstrings a bit harder to
read and to format in columns. Also, some C docstrings had ( in
column 1 and this did not appear to be causing any problems. So,
simplify C docstrings by replacing \( with ( and \) with ).
Paul Eggert [Wed, 16 Sep 2015 23:06:29 +0000 (16:06 -0700)]
Minor quoting fixes in scripts and doc
Prefer straight quotes in random script files, as they are not converted.
Prefer grave quotes in a couple of places in the manual that were missed
earlier, as these quotes are converted.
Paul Eggert [Wed, 16 Sep 2015 21:40:53 +0000 (14:40 -0700)]
Add -Wswitch to --enable-gcc-warnings
Make --enable-gcc-warnings a bit pickier, by also using -Wswitch.
* configure.ac (WERROR_CFLAGS): Don’t add -Wno-switch.
* lib-src/etags.c (main, consider_token, C_entries):
* src/coding.c (encode_invocation_designation):
* src/data.c (Ftype_of):
* src/eval.c (Fdefvaralias, default_toplevel_binding)
(Fbacktrace__locals, mark_specpdl):
* src/lisp.h (record_xmalloc):
* src/syntax.c (scan_lists, scan_sexps_forward):
* src/window.c (window_relative_x_coord):
* src/xdisp.c (push_it, pop_it):
* src/xterm.c (xg_scroll_callback, x_check_fullscreen):
Error out or do nothing (as appropriate) if a switch statement
with an enum value does not cover all of the enum.
* src/dispextern.h (struct iterator_stack_entry.u.comp):
Remove unused member discovered by using -Wswitch.
* src/lisp.h (record_xmalloc): Add a ‘+ 0’ to pacify -Wswitch.
* src/vm-limit.c (check_memory_limits):
Simplify warning-diagnostic computation by using a table.
Paul Eggert [Wed, 16 Sep 2015 21:39:29 +0000 (14:39 -0700)]
etags ‘fatal’ function is now printf-like
* lib-src/etags.c (fatal): Now printf-like. All callers changed.
Also, now static; not clear why it needed to be extern.
(verror): New function, with most of the old contents of ‘error’.
(fatal, error): Use it.