Jan Djärv [Sat, 25 Oct 2014 13:56:22 +0000 (15:56 +0200)]
* nsselect.m: pasteboard_changecount is new.
(ns_store_pb_change_count, ns_get_pb_change_count)
(ns_get_our_change_count_for): New functions.
(ns_string_to_pasteboard_internal): Correct comment.
type => gtype in eassert, Call ns_store_pb_change_count.
(Fns_own_selection_internal): Remove data, use value.
(Fns_disown_selection_internal, Fns_selection_owner_p): Replace
Vselection_alist check, with change count check.
(Fns_get_selection): Initialize val to Qnil. Only get local
selection if change counts match (Bug#18799).
(nxatoms_of_nsselect): Initialize pasteboard_changecount.
Vincent Belaïche [Sat, 25 Oct 2014 10:40:14 +0000 (12:40 +0200)]
* ses.el (macroexp): add require for this package, so that
function `ses--cell' gets macroexp-quote --- this change was
supposed to be in my previous commit, but left out by mistake.
(ses--cell): Do not make formula a macroexp-quote of value when
value, not formula, is *skip*.
Vincent Belaïche [Fri, 24 Oct 2014 23:02:25 +0000 (01:02 +0200)]
* ses.el (macroexp): add require for this package, so that function
`ses--cell gets macroexp-quote.
(ses--cell): makes formula a macroexp-quote of value when formula
is nil. The rationale of this changr is to allow in the future
shorter SES files, e.g. we could have only `(ses-cell A1 1.0)'
instead of `(ses-cell A1 1.0 1.0 nil REFLIST)'. In such a case
reference list REFLIST would be re-computed after load --- thus
trading off load time against file size.
* emacs-lisp/package.el (package--alist-to-plist-args): use
macroexp-quote instead of a lambda expression which has the same
content as macroexp-quote.
(macroexp): add require for this package, so that function
`package--alist-to-plist-args' gets macroexp-quote.
* emacs-lisp/macroexp.el (macroexp-quote): new defun.
Eli Zaretskii [Fri, 24 Oct 2014 13:19:21 +0000 (16:19 +0300)]
A possible fix for bug #18815 with assertion violations in bidi.c.
src/bidi.c (bidi_resolve_explicit, bidi_find_bracket_pairs)
(bidi_resolve_brackets): Use end of string position rather than ZV
when iterating over a string.
Martin Rudalics [Fri, 24 Oct 2014 09:58:43 +0000 (11:58 +0200)]
Improve mouse dragging of frame edges.
* keyboard.c (make_lispy_position): Return coordinates also when
on scroll bars, fringes, margins or not in a window.
* xdisp.c (show_mouse_face): Don't change cursor face during
mouse tracking.
* mouse.el (mouse-drag-line): Don't use mouse-pixel-position.
Calculate increment from last position instead of window edge.
Add right- and bottom-divider bindings to transient map.
Stefan Monnier [Thu, 23 Oct 2014 21:44:36 +0000 (17:44 -0400)]
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Define an internal predicate
even if :predicate was nil, for the benefit of typep.
Record the name of the predicate for typep's use.
(cl--make-type-test): Use pcase. Obey new cl-deftype-satisfies property.
Stefan Monnier [Thu, 23 Oct 2014 21:38:56 +0000 (17:38 -0400)]
* lisp/epg.el: Use cl-defstruct.
(epg-make-data-from-file, epg-make-data-from-string, epg-data-file)
(epg-data-string): Define via cl-defstruct.
(epg--gv-nreverse): New macro.
(epg-context--make): New constructor (provided vi cl-defstruct).
(epg-make-context): Rewrite using it.
(epg-context-protocol, epg-context-program)
(epg-context-home-directory, epg-context-armor, epg-context-textmode)
(epg-context-include-certs, epg-context-cipher-algorithm)
(epg-context-digest-algorithm, epg-context-compress-algorithm)
(epg-context-passphrase-callback, epg-context-progress-callback)
(epg-context-signers, epg-context-sig-notations, epg-context-process)
(epg-context-output-file, epg-context-result, epg-context-operation)
(epg-context-pinentry-mode): Define using cl-defstruct.
(epg-context-set-protocol, epg-context-set-program)
(epg-context-set-include-certs, epg-context-set-cipher-algorithm)
(epg-context-set-digest-algorithm)
(epg-context-set-sig-notations, epg-context-set-process)
(epg-context-set-output-file, epg-context-set-result)
(epg-context-set-operation, epg-context-set-pinentry-mode)
(epg-context-set-compress-algorithm): Remove. Use setf instead.
(epg-context-set-armor, epg-context-set-textmode)
(epg-context-set-signers): Redefine using setf
and declare as obsolete.
(epg-context-set-passphrase-callback)
(epg-context-set-progress-callback): Use setf.
(epg-signature-notations): Rename from epg-sig-notations.
(epg-make-signature, epg-signature-status, epg-signature-key-id)
(epg-signature-validity, epg-signature-fingerprint)
(epg-signature-creation-time, epg-signature-expiration-time)
(epg-signature-pubkey-algorithm, epg-signature-digest-algorithm)
(epg-signature-class, epg-signature-version): Define vi cl-defstruct.
(epg-signature-set-status, epg-signature-set-key-id)
(epg-signature-set-validity, epg-signature-set-fingerprint)
(epg-signature-set-creation-time, epg-signature-set-expiration-time)
(epg-signature-set-pubkey-algorithm)
(epg-signature-set-digest-algorithm, epg-signature-set-class)
(epg-signature-set-version, epg-signature-set-notations): Remove.
Use setf instead.
(epg-make-new-signature, epg-new-signature-type)
(epg-new-signature-pubkey-algorithm)
(epg-new-signature-digest-algorithm, epg-new-signature-class)
(epg-new-signature-creation-time, epg-new-signature-fingerprint):
Define using cl-defstruct.
(epg-make-key, epg-key-owner-trust, epg-key-sub-key-list)
(epg-key-user-id-list): Define using cl-defstruct.
(epg-key-set-sub-key-list, epg-key-set-user-id-list): Remove.
Use setf instead.
(epg-make-sub-key, epg-sub-key-validity, epg-sub-key-capability)
(epg-sub-key-secret-p, epg-sub-key-algorithm, epg-sub-key-length)
(epg-sub-key-id, epg-sub-key-creation-time)
(epg-sub-key-expiration-time, epg-sub-key-fingerprint): Define using
cl-defstruct.
(epg-sub-key-set-fingerprint): Remove. Use setf instead.
(epg-make-user-id, epg-user-id-validity, epg-user-id-string)
(epg-user-id-signature-list): Define using cl-defstruct.
(epg-user-id-set-signature-list): Remove. Use setf instead.
(epg-make-key-signature, epg-key-signature-validity)
(epg-key-signature-pubkey-algorithm, epg-key-signature-key-id)
(epg-key-signature-creation-time, epg-key-signature-expiration-time)
(epg-key-signature-user-id, epg-key-signature-class)
(epg-key-signature-exportable-p): Define using cl-defstruct.
(epg-make-sig-notation, epg-sig-notation-name)
(epg-sig-notation-value, epg-sig-notation-human-readable)
(epg-sig-notation-critical): Define using cl-defstruct.
(epg-sig-notation-set-value): Remove. Use setf instead.
(epg-make-import-status, epg-import-status-fingerprint)
(epg-import-status-reason, epg-import-status-new)
(epg-import-status-user-id, epg-import-status-signature)
(epg-import-status-sub-key, epg-import-status-secret): Define using
cl-defstruct.
(epg-make-import-result, epg-import-result-considered)
(epg-import-result-no-user-id, epg-import-result-imported)
(epg-import-result-imported-rsa, epg-import-result-unchanged)
(epg-import-result-new-user-ids, epg-import-result-new-sub-keys)
(epg-import-result-new-signatures, epg-import-result-new-revocations)
(epg-import-result-secret-read, epg-import-result-secret-imported)
(epg-import-result-secret-unchanged, epg-import-result-not-imported)
(epg-import-result-imports): Define using cl-defstruct.
* lisp/emacs-lisp/package.el: Require EPG during macroexpansion.
(package--check-signature, package-import-keyring): Use setf instead of
epg-context-set-home-directory.
Leo Liu [Thu, 23 Oct 2014 08:07:40 +0000 (16:07 +0800)]
* lisp/progmodes/cfengine.el (cfengine3-defun-full-re): New var.
(cfengine3-create-imenu-index): Use it and use ` ' for separation.
(cfengine3-current-defun): New function.
(cfengine3-mode): Set add-log-current-defun-function.
Paul Eggert [Thu, 23 Oct 2014 03:32:21 +0000 (20:32 -0700)]
Fix race in 'make info/dir', and speed it up.
* Makefile.in (AWK, srcdir_doc_info_dir_inputs, info_dir_inputs):
New macros.
(clean): Remove info-dir.*.
(info_dir_deps): Depend on make-info-dir too.
Fix bug with wildcards that weren't expanded.
(${srcdir}/info/dir): Make sure info directory exists.
Don't call pwd; just redirect make-info-dir's stdout to temp file.
* build-aux/make-info-dir: Send output to stdout.
Take input file names from args.
Fix a "FIXME inefficient looping" by using awk's associative arrays.
Basically, this rewrites the script from scratch, and speeds up
'make info/dir' from 2.6s to 0.07s on my platform.
Stefan Monnier [Thu, 23 Oct 2014 01:38:59 +0000 (21:38 -0400)]
* lisp/select.el: Use lexical-binding.
(gui-set-selection): Provide an implementation for non-GUI frames.
* lisp/term/x-win.el: Use lexical-binding.
(x-clipboard-yank): Fix up missed renamings.
* lisp/term/w32-win.el (libgif-version, libjpeg-version): Silence compiler.
(w32--set-selection): Fix up var names.
* lisp/term/pc-win.el: Use lexical-binding.
(w16-selection-exists-p): Silence compiler warning.
(w16-selection-owner-p): Fix up missed renamings.
Eli Zaretskii [Wed, 22 Oct 2014 16:09:57 +0000 (19:09 +0300)]
Fix bug #18778 with slow redisplay of bracketed L2R text with long lines.
src/bidi.c (bidi_cache_reset_to): New function.
(bidi_cache_reset): Call it.
(bidi_init_it, bidi_line_init): Initialize the bracket_pairing_pos
member to -1.
(bidi_resolve_explicit): Reset bracket_pairing_pos and
bracket_enclosed_type only if bracket_pairing_pos's value is not
ZV.
(MAX_BPA_STACK): Make sure the value is signed.
(PUSH_BPA_STACK): If the BPA stack overflows, don't bail out, but
stop pushing values onto the stack.
(bidi_find_bracket_pairs): If the bracketed text is only on the
base embedding level, remove all the states cached by this
function from the cache, and return zero, so that the brackets in
this segment of text are processed as normal neutrals.
(bidi_resolve_brackets): Detect the brackets that are to be
processed as neutrals, and don't call bidi_find_bracket_pairs on
them.
Tassilo Horn [Wed, 22 Oct 2014 13:30:16 +0000 (15:30 +0200)]
Improve viewing plain text contents of document
* doc/emacs/misc.texi (Document View): Adapt to latest doc-view changes wrt
viewing the document's plain text contents.
* lisp/doc-view.el (doc-view-open-text): View the document's plain text
in the current buffer instead of a new one.
(doc-view-toggle-display): Handle the case where the current
buffer contains the plain text contents of the document.
(doc-view-initiate-display): Don't switch to fallback mode if the
user wants to view the doc's plain text.
(doc-view-set-doc-type): Use assoc-string instead of
assoc-ignore-case.
Martin Rudalics [Wed, 22 Oct 2014 09:57:17 +0000 (11:57 +0200)]
Rewrite "Size and Position" section in frames.texi.
* frames.texi (Size Parameters): Replace "frame contents" by
"frame's text area". Add reference to Size and Position
section.
(Size and Position): Major rewrite. Add explanations for
frame's default font, text and display areas. Add descriptions
for `set-frame-font', `frame-text-height', `frame-text-width'
and `frame-inhibit-implied-resize'.
Stefan Monnier [Tue, 21 Oct 2014 20:11:22 +0000 (16:11 -0400)]
* lisp/mouse.el (mouse-drag-line): Use set-transient-map.
(mouse--down-1-maybe-follows-link): Remove unused var `this-event'.
(mouse-yank-secondary): Use gui-get-selection.
(mouse--down-1-maybe-follows-link): Use read-key.
* lisp/subr.el (read-key): Fix clicks on the mode-line.
(set-transient-map): Return exit function.
* lisp/xt-mouse.el: Add `event-kind' property on the fly from
xterm-mouse-translate-1 rather than statically at the outset.
Stefan Monnier [Tue, 21 Oct 2014 15:27:18 +0000 (11:27 -0400)]
Get rid of backend-dependent selection-handling functions for kill/yank
and make it generic instead by relying on the lower-level selection
management functions.
* select.el (select-enable-clipboard): Rename from
gui-select-enable-clipboard.
(select-enable-primary): Move from x-win.el and rename from
x-select-enable-primary.
(gui-last-selected-text): Remove.
(gui--last-selected-text-clipboard, gui--last-selected-text-primary):
New vars.
(gui-select-text): Rewrite, based on x-win.el's old x-select-text.
(gui-select-text-alist, gui-selection-value-alist): Remove.
(x-select-request-type): Move from x-win.el.
(gui--selection-value-internal): New function, taken from x-win's
x-selection-value-internal.
(gui-selection-value): Rewrite, based on x-win.el's old x-selection-value.
(gui-set-selection-alist): Rename from gui-own-selection-alist and
extend it to handle a nil value as a "disown" request.
(gui-disown-selection-alist): Remove.
(xselect-convert-to-delete): Adjust accordingly.
(gui-set-selection): Simplify accordingly as well. Use dotimes.
* lisp/frame.el (gui-method): Use window-system rather than framep.
(gui-method-declare): The tty case is now nil rather than t.
(make-frame): Adjust accordingly.
* lisp/term/x-win.el (x-last-selected-text-primary)
(x-select-enable-primary): Remove (moved to select.el).
(x-select-request-type): Move to select.el.
(x-selection-value-internal, x--selection-value): Remove functions.
(gui-selection-value, gui-select-text): Remove moethods.
(gui-set-selection): Merge own and disown methods.
* lisp/startup.el (command-line): Adjust now that `gui-method' expects nil
for ttys.
* lisp/term/ns-win.el (ns-get-pasteboard, ns-set-pasteboard)
(ns-selection-value): Remove functions.
(gui-select-text, gui-selection-value): Don't define method any more.
(gui-set-selection): Merge the old own and disown methods.
(gui-selection-exists-p, gui-get-selection): Adjust to new name of
underlying C primitive.
* lisp/term/pc-win.el (w16-get-selection-value): Add dummy argument and drop
test of gui-select-enable-clipboard, to make it usable as
a gui-get-selection method.
(gui-selection-exists-p): Adjust to new name of C primitive.
(gui-set-selection): Merge own and disown methods.
(gui-select-text, gui-selection-value): Delete methods.
(w16--select-text): Delete function.
* lisp/term/w32-win.el (w32--select-text, w32--get-selection-value):
Delete function (move functionality into w32--set-selection and
w32--get-selection).
(gui-select-text, gui-selection-value): Don't define methods.
(w32--set-selection, w32--get-selection, w32--selection-owner-p):
New functions.
(gui-get-selection, gui-selection-owner-p, gui-selection-exists-p):
Use them.
(gui-selection-exists-p): Adjust to new name of C primitive.
* src/nsselect.m (ns_get_local_selection): Signal error rather than `quit'.
(Fns_own_selection_internal): Tighten scoping.
(Fns_selection_exists_p): Rename from Fx_selection_exists_p.
(Fns_get_selection): Rename from Fx_get_selection_internal.
(Fns_get_selection_internal, Fns_store_selection_internal):
Remove functions.
(syms_of_nsselect): Adjust accordingly.
* src/w16select.c (Fw16_selection_exists_p): Rename from
Fx_selection_exists_p.
(syms_of_win16select): Adjust accordingly.
* src/w32select.c (Fw32_selection_exists_p): Rename from
Fx_selection_exists_p.
(syms_of_w32select): Adjust accordingly.
Martin Rudalics [Tue, 21 Oct 2014 06:57:28 +0000 (08:57 +0200)]
Handle wrapped menu bar lines when resizing frames with Windows API.
* w32fns.c (Fw32_frame_menu_bar_size): New function.
* w32term.c (x_set_window_size): Account for wrapped menu bar
lines when setting up frame height (Bug#15174 and Bug#18720).
(w32_add_wrapped_menu_bar_lines): New variable.
Stefan Monnier [Tue, 21 Oct 2014 01:33:44 +0000 (21:33 -0400)]
* lisp/imenu.el (imenu--menubar-keymap): New var.
(imenu-add-to-menubar): Set it to remember the keymap we used.
(imenu-update-menubar): Use it instead of asking lookup-key.
Stefan Monnier [Mon, 20 Oct 2014 16:36:34 +0000 (12:36 -0400)]
* lisp/textmodes/css-mode.el (scss-mode): New major-mode.
(css-mode-syntax-table): Use d style comment, to ease the scss case.
(css-ident-re): Allow things like @-moz-keyframes.
(scss--hash-re): New const.
(css--font-lock-keywords): New function, extracted from
css-font-lock-keywords.
(css-font-lock-keywords): Use it.
(scss-mode-syntax-table, scss-font-lock-keywords): New vars.
(scss-smie--not-interpolation-p): New function.
(css-smie--forward-token, css-smie--backward-token): Use it.
(css-mode): Remove left-over code.
* test/indent/scss-mode.scss: New file.
* test/indent/css-mode.css: Add a few uneventful examples.
Jan Djärv [Sun, 19 Oct 2014 17:27:53 +0000 (19:27 +0200)]
* gtkutil.c (create_dialog): Don't use gtk_dialog_get_action_area on
Gt+ >= 3.12, or gtk_misc_set_alignment on Gtk+ >= 3.14.
(make_widget_for_menu_item): Don't use gtk_misc_set_alignment on
Gtk+ >= 3.14 (Bug#18674).
(update_frame_tool_bar): Don't use gtk_misc_set_padding on
Gtk+ >= 3.14 (Bug#18674).
* gtkutil.c (xg_update_menubar, xg_update_menu_item): Only call
g_object_notify for label if Gtk+ >= 2.16 (Bug#16522).
* lisp/net/newst-backend.el: Require url-parse.
(newsticker--get-news-by-wget): Store feed name as process property.
(newsticker--sentinel): Read feed name from process property.
(newsticker--sentinel-work): Rename argument name to feed-name.
Rename variable imageurl to image-url. Pick icon url from Atom
1.0 data. Launch download of feed icon.
(newsticker--get-icon-url-atom-1.0): New.
(newsticker--unxml)
(newsticker--unxml-node)
(newsticker--unxml-attribute): Documentation.
(newsticker--icons-dir): New.
(newsticker--image-get): New arguments FILENAME and DIRECTORY.
Use `url-retrieve' if `newsticker-retrieval-method' is 'intern.
(newsticker--image-download-by-wget): New. Use process properties
for storing informations.
(newsticker--image-sentinel): Read informations from process properties.
(newsticker--image-save)
(newsticker--image-remove)
(newsticker--image-download-by-url)
(newsticker--image-download-by-url-callback): New.
(newsticker-opml-export): Handle url list entries containing a
function instead of an url string.
* lisp/net/newst-reader.el (newsticker-html-renderer): Whitespace.
(newsticker--print-extra-elements)
(newsticker--do-print-extra-element): Documentation
(newsticker--image-read): Optionally limit image height. Use
imagemagick if possible.
(newsticker--icon-read): New.
* lisp/net/newst-treeview.el (newsticker--treeview-item-show): Limit height of feed logo.
(newsticker--treeview-tree-expand): Use feed icons in treeview.
(newsticker--tree-widget-icon-create): New. Set the tree widget icon.
(newsticker--tree-widget-leaf-icon): Use feed icon.
Jan Djärv [Sun, 19 Oct 2014 16:28:49 +0000 (18:28 +0200)]
* gtkutil.c (create_dialog): Don't use gtk_dialog_get_action_area on
Gt+ >= 3.12, or gtk_misc_set_alignment on Gtk+ >= 3.14.
(make_widget_for_menu_item): Don't use gtk_misc_set_alignment on
Gtk+ >= 3.14 (Bug#18674).
(update_frame_tool_bar): Don't use gtk_misc_set_padding on
Gtk+ >= 3.14 (Bug#18674).
Paul Eggert [Sat, 18 Oct 2014 19:07:17 +0000 (12:07 -0700)]
* gtkutil.c: Remove no-longer-used code.
(xg_update_menubar): Remove unused local and unnecessary call to
gtk_menu_item_get_submenu.
(XG_TOOL_BAR_PROXY_BUTTON, xg_tool_bar_proxy_callback)
(xg_get_tool_bar_widgets, xg_tool_bar_proxy_help_callback)
(TOOLBAR_TOP_WIDGET): Remove; no longer used.
Jan Djärv [Sat, 18 Oct 2014 16:19:53 +0000 (18:19 +0200)]
Handle deprecated Gtk+ stuff for version <= 3.10
* lisp/term/x-win.el (x-gtk-stock-map): Add icon names suggested as
replacements to stock names before stock names in a list.
Cdr may be a list, each name is tried in turn until one is found.
* src/gtkutil.c (XG_TEXT_CANCEL, XG_TEXT_OPEN, XG_TEXT_OK): New defines
to handle Gtk versions.
(xg_get_file_with_chooser): Use them.
(xg_have_tear_offs, tearoff_remove, tearoff_activate): Remove
(create_menus): Remove teroff argument and code.
Remove call to gtk_menu_set_title.
(xg_update_menubar, xg_update_submenu): Remove tearoff code. Adjust
args to create_menus.
(xg_tool_bar_menu_proxy, xg_tool_bar_detach_callback)
(xg_tool_bar_attach_callback, TOOLBAR_TOP_WIDGET): Remove.
(xg_pack_tool_bar): Replace TOOLBAR_TOP_WIDGET, remove detach code.
(xg_make_tool_item): Remove detach code.
(xg_update_tool_bar_sizes): Replace TOOLBAR_TOP_WIDGET.
(find_icon_from_name): New function.
(update_frame_tool_bar): Remove GtkStockItem code, move to
find_icon_from_name. Let stock be a list of icon names to try.
Only use gtk_image_new_from_stock on Gtk+ < 3.10.
Replace TOOLBAR_TOP_WIDGET.
(free_frame_tool_bar, xg_change_toolbar_position ): Replace
TOOLBAR_TOP_WIDGET.
(xg_initialize): Remove tearoff code.
Eli Zaretskii [Sat, 18 Oct 2014 13:09:18 +0000 (16:09 +0300)]
A better fix for drawing hollow cursor on X on 1-pixel thin space characters.
src/xterm.c (x_draw_bar_cursor, x_draw_hollow_cursor): Subtract 1
pixel from the window's cursor glyph width, since X renders hollow
blocks 1 pixel wider than the 'width' parameter.
src/xdisp.c (get_phys_cursor_geometry): Don't subtract 1 pixel from
glyph->pixel_width; this is now done in xterm.c.
Eli Zaretskii [Sat, 18 Oct 2014 12:47:57 +0000 (15:47 +0300)]
Fix bidi reordering of bracket characters in isolates.
src/bidi.c (bidi_cache_find): Rename the argument NEUTRALS_OK to
RESOLVED_ONLY; when non-zero, return from the cache only fully
resolved states. All callers changed.
(CANONICAL_EQU): New macro.
(PUSH_BPA_STACK): Use it to push onto the BPA stack the canonical
equivalent of the paired closing bracket character.
(bidi_find_bracket_pairs): Set the bracket_pairing_pos member to
the default non-negative value, to be checked later in
bidi_resolve_brackets. Use CANONICAL_EQU to test candidate
characters against those pushed onto the BPA stack.
(bidi_record_type_for_neutral): New function.
(bidi_resolve_brackets): Record next_for_neutral and
prev_for_neutral when embedding level gets pushed. Force
resolution of bracket pairs when entering a level run that was not
yet BPA-resolved.
(bidi_resolve_neutral): Add assertions before calling
bidi_resolve_neutral_1.
(bidi_level_of_next_char): Remove the code that attempted to
resolve unresolved neutrals; that is now done by
bidi_resolve_neutral.
Alan Mackenzie [Sat, 18 Oct 2014 10:02:59 +0000 (10:02 +0000)]
Check that a "macro" found near point-min isn't a ## operator. Fixes
bug #18749.
progmodes/cc-engine.el (c-macro-is-genuine-p): New function.
(c-beginning-of-macro): Use the above new function.
* lisp/whitespace.el (whitespace-style, whitespace-big-indent)
(whitespace-big-indent-regexp, whitespace-style-value-list)
(whitespace-toggle-option-alist, whitespace-interactive-char)
(whitespace-toggle-options)
(global-whitespace-toggle-options, whitespace-help-text)
(whitespace-style-face-p, whitespace-color-on): Add a 'big-indent
style to `whitespace-mode' to indicate that the line indentation
is too deep. By default, 32 SPACEs or four TABs are considered
too many but `whitespace-big-indent-regexp' can be configured.
tildify.el (tildify--pick-alist-entry): rename from tildify-mode-alist
tildify-mode-alist does not really describe what the functino does so
rename it to tildify--pick-alist-entry. This also makes it clear that
the function is an internal one.
Eli Zaretskii [Fri, 17 Oct 2014 06:43:36 +0000 (09:43 +0300)]
Fix display on X of 1-pixel R2L characters.
src/xterm.c (x_draw_hollow_cursor): Fix display of hollow cursor on
1-pixel R2L characters.
Reported by Dmitry Antipov <dmantipov@yandex.ru>, see
http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00518.html.
Alan Mackenzie [Thu, 16 Oct 2014 20:29:44 +0000 (20:29 +0000)]
Trigger showing when point is in the "periphery" of a line or just
inside a paren.
paren.el (show-paren-style, show-paren-delay)
(show-paren-priority, show-paren-ring-bell-on-mismatch): Remove
superfluous :group specifications.
(show-paren-when-point-inside-paren)
(show-paren-when-point-in-periphery): New customizable variables.
(show-paren-highlight-openparen): Make into a defcustom.
(show-paren--unescaped-p, show-paren--categorize-paren)
(show-paren--locate-near-paren): New defuns.
(show-paren--default): Refaactor and trigger on more paren
positions.
(show-paren-function): Small consequential changes.
Stefan Monnier [Wed, 15 Oct 2014 21:46:47 +0000 (17:46 -0400)]
* lisp/cedet/semantic/wisent/comp.el (wisent-defcontext): Move declarations
outside of eval-when-compile. Use `declare'.
(wisent-with-context): Add `defvar' declarations in case this macro is
used in a file compiled with lexical-binding.
(wisent-semantic-action-expand-body): Avoid add-to-list on local var.
Stefan Monnier [Wed, 15 Oct 2014 15:28:35 +0000 (11:28 -0400)]
* lisp/progmodes/m4-mode.el (m4-syntax-propertize): New var.
(m4-mode): Use it.
(m4--quoted-p): New function.
(m4-font-lock-keywords): Don't handle #..\n comments any more.
(m4-mode-syntax-table): Use punctuation syntax (according to m4 manual)
for most special characters.
Stefan Monnier [Wed, 15 Oct 2014 15:25:47 +0000 (11:25 -0400)]
* lisp/progmodes/compile.el (compilation--previous-directory): Simplify.
(compilation-next-error): Ensure the parse before we look at
compilation-message property.
Alan Mackenzie [Wed, 15 Oct 2014 15:23:27 +0000 (15:23 +0000)]
cus-edit.el (custom-command-apply): Specify the return value in the doc
string.
(Custom-reset-standard): Save custom-file (e.g. .emacs) only when
custom-command-apply has returned non-nil.
Eli Zaretskii [Wed, 15 Oct 2014 14:11:25 +0000 (17:11 +0300)]
Update the bidirectional reordering engine for Unicode 6.3 and 7.0.
src/bidi.c (bidi_ignore_explicit_marks_for_paragraph_level): Remove
variable.
(bidi_get_type): Return the isolate initiators and terminator
types.
(bidi_isolate_fmt_char, bidi_paired_bracket_type)
(bidi_fetch_char_skip_isolates, find_first_strong_char)
(bidi_find_bracket_pairs, bidi_resolve_brackets): New functions.
(bidi_set_sos_type): Renamed from bidi_set_sor_type and updated
for the new features.
(bidi_push_embedding_level, bidi_pop_embedding_level): Update to
push and pop correctly for isolates.
(bidi_remember_char): Modified to accept an additional argument
and record the bidi type according to its value.
(bidi_cache_iterator_state): Accept an additional argument to only
update an existing state. Handle the new members of struct bidi_it.
(bidi_cache_find): Arguments changed: no lnger accepts a level,
instead accepts a flag telling it whether it is okay to return
unresolved neutrals.
(bidi_initialize): Initiate and staticpro the bracket-type uniprop
table. Initialize new isolate-related members.
(bidi_paragraph_init): Some code factored out into
find_first_strong_char.
(bidi_resolve_explicit_1): Function deleted, its code incorporated
into bidi_resolve_explicit.
(bidi_resolve_explicit): Support the isolate initiators and
terminator. Fix handling of embeddings and overrides according to
new UBA requirements. Record information about previously seen
characters here (moved from bidi_level_of_next_char).
(bidi_resolve_weak): Adapt to changes in struct members.
(FLAG_EMBEDDING_INSIDE, FLAG_OPPOSITE_INSIDE, MAX_BPA_STACK)
(STORE_BRACKET_CHARPOS, PUSH_BPA_STACK): New macros.
(bidi_resolve_neutral): Call bidi_resolve_brackets to handle the
paired bracket resolution. Handle isolate initiators and
terminator.
(bidi_type_of_next_char): Remove unneeded code for BN limit.
(bidi_level_of_next_char): Move the code that records information
about previous characters to bidi_resolve_explicit. Fix logic of
resolving neutrals and make sure their cache entries are updated.
Remove now unneeded special handling of PDF level.
src/dispextern.h (struct glyph): Enlarge the width of resolved_level.
(BIDI_MAXDEPTH): New macro, renamed from BIDI_MAXLEVEL and
enlarged per Unicode 6.3.
(enum bidi_bracket_type_t): New data type.
(struct bidi_saved_info): Leave only 2 type members out of 4.
Remove bytepos.
(struct bidi_stack): Add members necessary to support isolating
sequences.
(struct bidi_it): Add new members necessary to support isolating
sequences and bracket pair resolution.
src/xdisp.c (Fbidi_resolved_levels): New function.
(syms_of_xdisp): Defsubr it.
(append_glyph, append_composite_glyph, produce_image_glyph)
(append_stretch_glyph, append_glyphless_glyph): Convert aborts to
assertions.
(syms_of_xdisp) <inhibit-bidi-mirroring>: New variable.
src/term.c (append_glyph, append_composite_glyph)
(append_glyphless_glyph): Convert aborts to assertions.
src/.gdbinit (pgx): Display the character codepoint, resolved level,
and bidi type also for glyphless glyphs.
lisp/simple.el (what-cursor-position): Update to support the new bidi
characters.
lisp/descr-text.el (describe-char): Update to support the new bidi
characters.
admin/unidata/unidata-gen.el (unidata-prop-alist): New properties
'paired-bracket' and 'bracket-type', in support of the UBA 6.3.
(unidata-gen-table): Support PROP-IDX being a function.
(unidata-describe-bidi-bracket-type, unidata-gen-brackets-list)
(unidata-gen-bracket-type-list): New functions.
(unidata-check): Support checking the 'bracket-type' attribute.
(unidata-gen-files): Don't create backups for uni-*.el files.
admin/unidata/Makefile.in (${unidir}/charprop.el): Depend on
BidiMirroring.txt and BidiBrackets.txt.
admin/unidata/BidiBrackets.txt: New file, from Unicode.
etc/NEWS: Mention the UBA implementation update.
etc/HELLO: Remove now unneeded directional control characters.
doc/lispref/nonascii.texi (Character Properties): Document the new
properties 'bracket-type' and 'paired-bracket'.
doc/lisprefdisplay.texi (Bidirectional Display): Update the version of the
UBA to which we are conforming.
test/BidiCharacterTest.txt: New file, from Unicode.
test/biditest.el: New file.
Dmitry Antipov [Wed, 15 Oct 2014 13:37:10 +0000 (17:37 +0400)]
Avoid unwanted point motion in Fline_beginning_position.
* lisp.h (scan_newline_from_point): Add prototype.
* search.c (scan_newline_from_point): New function, refactored from...
* cmds.c (Fforward_line): ...adjusted user.
* editfns.c (Fline_beginning_position): Use scan_newline_from_point
and simplify the former since the latter doesn't move point.