Next minor cleanup of font subsystem.
* font.h (enum font_property_index): Remove FONT_ENTITY_INDEX (no
users) and FONT_FORMAT_INDEX (set by a few font drivers but never
really used).
(FONT_ENTITY_NOT_LOADABLE, FONT_ENTITY_SET_NOT_LOADABLE): Remove;
unused.
* ftfont.h (ftfont_font_format): Remove prototype.
* ftfont.c (ftfont_font_format): Remove; now unused.
(ftfont_open):
* nsfont.m (nsfont_open):
* w32font.c (w32font_open_internal):
* w32uniscribe.c (uniscribe_open):
* xfont.c (xfont_open):
* xftfont.c (xftfont_open): All users changed.
Stefan Monnier [Tue, 8 Jul 2014 16:51:35 +0000 (12:51 -0400)]
* lisp/progmodes/perl-mode.el: Use syntax-ppss; fix one indentation case.
(perl-indent-line): Use syntax-ppss to detect we're in a doc-section.
(perl-continuation-line-p): Don't skip over anything else than labels.
Return the previous char.
(perl-calculate-indent): Use syntax-ppss instead of parse-start
and update callers accordingly. For continuation lines, check the
the case of array hashes.
(perl-backward-to-noncomment): Make it non-interactive.
(perl-backward-to-start-of-continued-exp): Rewrite.
* test/indent/perl.perl: Add indentation pattern for hash-table entries.
* font.c (font_build_object) [HAVE_XFT || HAVE_FREETYPE || HAVE_NS]:
New function, with an intention to avoid code duplication between
a few font drivers.
* font.h (font_build_object) [HAVE_XFT || HAVE_FREETYPE || HAVE_NS]:
Add prototype.
* ftfont.c (ftfont_open):
* macfont.m (macfont_open):
* xftfont.c (xftfont_open): Use it.
Juri Linkov [Tue, 8 Jul 2014 08:55:00 +0000 (11:55 +0300)]
* lisp/facemenu.el (list-colors-print): In help-echo format use %.2f
instead of %d because now HSV values are floating-point components
between 0.0 and 1.0.
Juri Linkov [Tue, 8 Jul 2014 08:49:18 +0000 (11:49 +0300)]
* lisp/vc/vc-annotate.el (vc-annotate-background-mode): New defcustom.
(vc-annotate-color-map): Use less saturated colors (20%) for
background-mode.
(vc-annotate-very-old-color): Add default value for background-mode.
(vc-annotate-background): Set default value to nil since now text on
the default backgrounds should be legible in light and dark modes.
(vc-annotate-lines): Use `vc-annotate-background-mode'. Doc fix.
Juri Linkov [Tue, 8 Jul 2014 08:02:50 +0000 (11:02 +0300)]
* lisp/window.el (with-displayed-buffer-window): New macro.
(with-temp-buffer-window, with-current-buffer-window):
Use `macroexp-let2' to evaluate and bind variables
in the same order as macro arguments.
(display-buffer--action-function-custom-type): Add
`display-buffer-below-selected' and `display-buffer-at-bottom'.
* lisp/minibuffer.el (minibuffer-completion-help): Replace
`with-output-to-temp-buffer' with `with-displayed-buffer-window'
with actions that display *Completions* at-bottom when called
from the minibuffer, or below-selected in a normal buffer.
Associate `window-height' with `fit-window-to-buffer'.
Let-bind `pop-up-windows' to nil.
* lisp/dired.el (dired-mark-pop-up): Use `with-displayed-buffer-window'
instead of `with-current-buffer-window'.
* chartab.c (char_table_translate): Move to...
* character.h (char_table_translate): ... inline function here.
Avoid Faref and assume that args are always valid. This helps to
speedup search, which is especially important for a huge buffers.
* lisp.h (char_table_translate): Remove prototype.
Paul Eggert [Tue, 8 Jul 2014 06:24:07 +0000 (23:24 -0700)]
* process.c: Add sanity checks for file descriptors.
(wait_reading_process_output, Fprocess_filter_multibyte_p):
Check that infd is nonnegative before using it as an fd.
(read_and_dispose_of_process_output, Fprocess_send_eof):
Likewise, for outfd.
(wait_reading_process_output): Omit unnecessary check of infd.
Paul Eggert [Mon, 7 Jul 2014 23:25:13 +0000 (16:25 -0700)]
Minor ImageMagick safety fixes.
* image.c (imagemagick_compute_animated_image):
Remove useless assignment to local. Avoid problems if dest_width is 0.
(imagemagick_load_image): Use int for pixel counts that can't
exceed INT_MAX. Avoid problem if PixelGetNextIteratorRow returns
a row width greater than the image width (or greater than LONG_MAX!).
Luke Lee [Mon, 7 Jul 2014 08:59:32 +0000 (16:59 +0800)]
HideIfDef mode bug fixes and enhancements. This is #3 of 3 patches based
on the completed work posted on http://www.emacswiki.org/emacs/HideIfDef.
- Add macro evaluation function and key binding for a marked region.
- Merge continuous "..." lines into one.
- Fix old hideif bugs that fail to hide the correct #elif regions
- Support hide/show commands in a marked region.
- Expand top level for .h files to prevent re-inclusion protection.
- Change maintainer.
* lisp/progmodes/hideif.el (hide-ifdef-env): Change to global.
(hide-ifdef-env-backup): New variable.
(hide-ifdef-expand-reinclusion-protection, hide-ifdef-header-regexp):
New customizable variables.
(hif-clear-all-ifdef-defined): New defun.
(hif-merge-ifdef-region, hide-ifdef-region-internal, hide-ifdef-region)
(hif-show-ifdef-region): Merge hidden regions to prevent continuous "...".
(hif-tokenize): Fix for MS-DOS/Win EOL style.
(hif-endif-to-ifdef, hif-make-range, hif-find-range, hif-possibly-hide):
Fix bug to hide the correct #elif region(s).
(hif-range-elif): New defun.
(hif-recurse-level): New var.
(hif-evaluate-region, hif-evaluate-macro): New defun.
(hide-ifdef-guts): Prevent reinclusion protected C/C++ headers from
fully hidden.
(hide-ifdef-define, hide-ifdefs, hide-ifdef-block, show-ifdef-block):
Better interaction.
Stephen Berman [Sun, 6 Jul 2014 20:28:38 +0000 (22:28 +0200)]
* calendar/todo-mode.el: Fix wrong-type-argument error when
marking multiple consecutive items.
(todo-toggle-mark-item): Don't try to mark the empty lines at the
end of the todo and done items sections. Note in doc string that
items marked by passing a numeric prefix argument can include the
last todo and first done items.
(todo-mark-category): Don't try to mark the empty line between the
todo and done items sections.
Eli Zaretskii [Sat, 5 Jul 2014 08:24:07 +0000 (11:24 +0300)]
A better fix for bug #17942.
src/xdisp.c (pos_visible_p): If CHARPOS is at beginning of window,
and there is a display property at that position, don't call
move_it_to to move to a position before window start.
Stefan Monnier [Sat, 5 Jul 2014 02:17:14 +0000 (22:17 -0400)]
* src/syntax.c (find_defun_start): Try the cache even
if !open_paren_in_column_0_is_defun_start.
(back_comment): If find_defun_start was pessimistic, use the
scan_sexps_forward result to improve the cache.
Stephen Berman [Fri, 4 Jul 2014 19:09:29 +0000 (21:09 +0200)]
* todo-mode.texi (Levels of Organization): Comment out statement
that Emacs recognizes todo files by their extension, since this
feature has been removed due to bug#17482.
Stephen Berman [Fri, 4 Jul 2014 15:53:25 +0000 (17:53 +0200)]
* calendar/todo-mode.el: Fix two bugs. Shorten Commentary and
refer to the Todo mode Info manual. Update the comment on
requiring cl-lib.
(todo-find-filtered-items-file): Add todo-prefix overlays.
(todo-filter-items): Reorder a let-bound variable to avoid a
wrong-type-argument error on canceling the file choice dialog.
Jan Djärv [Fri, 4 Jul 2014 15:15:02 +0000 (17:15 +0200)]
Backport from trunk.
* xfns.c (create_frame_xic): Pass XNStatusAttributes to XCreateIC
only if xic_style calls for it. This change allows Emacs to work
with ibus. Also, don't leak resources if create_frame_xic fails,
and stop caching xic_style across different displays.
(supported_xim_styles): Make const.
(best_xim_style): Remove first parameter: it's always just
supported_xim_styles. Change to look at supported_xim_styles
directly.
Eli Zaretskii [Fri, 4 Jul 2014 13:22:04 +0000 (16:22 +0300)]
Fix bug #17905 with display of point in partially visible line at end of window.
src/xdisp.c (redisplay_window): If redisplay of a window ends up
with point in a partially visible line at end of the window, make
sure the amended position of point actually has smaller Y
coordinate; if not, give up and scroll the display.
src/window.c (window_scroll_pixel_based): When point ends up at the
last fully visible line, don't let move_it_to stop at the left
edge of the line and dupe us into thinking point is inside the
scroll margin.
Eli Zaretskii [Fri, 4 Jul 2014 07:35:22 +0000 (10:35 +0300)]
Minor updates in etc/TODO and etc/NEWS.
etc/TODO: Remove items that were already done. Rearrange a few
items that are closely related. Update a couple of items with new
information.
etc/NEWS: Mention 'network-interface-list' and 'network-interface-info'
being available on MS-Windows.
* font.h (struct font_driver): Remove get_outline and free_outline;
not used by any font driver.
* ftfont.c (ftfont_driver):
* macfont.m (macfont_driver):
* nsfont.m (nsfont_driver):
* w32font.c (w32font_driver):
* w32uniscribe.c (uniscribe_font_driver):
* xfont.c (xfont_driver): Related users changed.
* xselect.c (x_get_window_property): Use convenient xmalloc.
Call to xfree only if some data was really allocated.
On MS-Windows, display busy cursor on all GUI frames.
This is similar to what we have on X. Quickly tested by Dani Moncayo.
* w32fns.c (toplevel): Remove hourglass_hwnd; no longer used.
(w32_show_hourglass, w32_hide_hourglass, w32_note_current_window):
Likewise.
(hide_hourglass, show_hourglass): Redesign to match X counterparts.
* xdisp.c (start_hourglass): Remove Windows-specific bits.
Shrink Lisp_Sub_Char_Table by preferring C integers to Lisp_Objects.
* lisp.h (struct Lisp_Sub_Char_Table): Use C integers for depth and
min_char slots. Adjust comment.
(enum char_table_specials): Rename from CHAR_TABLE_STANDARD_SLOTS.
Add SUB_CHAR_TABLE_OFFSET member.
(make_uninit_sub_char_table): New function.
* alloc.c (mark_char_table): Add extra argument to denote char table
subtype. Adjust to match new layout of sub char-table.
(mark_object): Always mark sub char-tables with mark_char_table.
* chartab.c (make_sub_char_table, copy_sub_char_table)
(sub_char_table_ref, sub_char_table_ref_and_range, sub_char_table_set)
(sub_char_table_set_range, optimize_sub_char_table, map_sub_char_table)
(map_sub_char_table_for_charset, uniprop_table_uncompress):
All related users changed.
* lread.c (read1): Adjust to match new layout of sub char-table.
Stefan Monnier [Wed, 2 Jul 2014 01:49:31 +0000 (21:49 -0400)]
* doc/lispref/keymaps.texi (Key Lookup): Remove mention of indirect entries.
(Scanning Keymaps): Reword the `noindirect' argument.
* src/keymap.c (get_keyelt): Simplify.
(copy_keymap_item): Remove left-over code for when we had
key-shortcut caches.
Juri Linkov [Tue, 1 Jul 2014 23:54:59 +0000 (02:54 +0300)]
Display man pages immediately and use process-filter to format them asynchronously.
* lisp/man.el (Man-width): Doc fix.
(man): Doc fix.
(Man-start-calling): Use `with-selected-window' to get
`frame-width' and `window-width'.
(Man-getpage-in-background): Call `Man-notify-when-ready'
immediately after creating a new buffer. Call `Man-mode' and set
`mode-line-process' in the created buffer. Set process-filter to
`Man-bgproc-filter' in start-process branch. In call-process branch
call either `Man-fontify-manpage' or `Man-cleanup-manpage'.
Use `Man-start-calling' inside `with-current-buffer'.
(Man-fontify-manpage): Don't print messages. Fix boundary condition.
(Man-cleanup-manpage): Don't print messages.
(Man-bgproc-filter): New function.
(Man-bgproc-sentinel): Add `save-excursion' to keep point when
user moved it during asynchronous formatting. Move calls of
`Man-fontify-manpage' and `Man-cleanup-manpage' to
`Man-bgproc-filter'. Move the call of `Man-mode' to
`Man-getpage-in-background'. Use `quit-restore-window'
instead of `kill-buffer'. Use `message' instead of `error'
because errors are catched by process sentinel.
(Man-mode): Move calls of `Man-build-page-list',
`Man-strip-page-headers', `Man-unindent', `Man-goto-page' to
`Man-bgproc-sentinel'. Doc fix. (Bug#2588, bug#5054, bug#9084, bug#17831)
Eli Zaretskii [Tue, 1 Jul 2014 17:07:24 +0000 (20:07 +0300)]
Fix bug #17892 with mode/header line and display margins.
src/dispnew.c (prepare_desired_row): Accept 2 additional arguments:
the window whose glyph row is being prepared and a flag whether it
is for mode/header line. Make sure the glyph row's marginal areas
are in sync with what the window wants.
src/xdisp.c (display_line, display_mode_line): Call
prepare_desired_row with additional arguments, as appropriate.
src/dispextern.h (prepare_desired_row): Adjust prototype.
src/window.h: Improve commentary of the marginal columns.
* lisp/progmodes/python.el (python-indent-post-self-insert-function):
Enhancements to electric indentation behavior inside
parens.
* test/automated/python-tests.el
(python-tests-self-insert): New function.
(python-triple-quote-pairing): Use it.
(python-util-forward-comment-1): New test. (Bug#17658)
Jan Djärv [Mon, 30 Jun 2014 12:38:09 +0000 (14:38 +0200)]
Remove unnecessary redisplays in NS port.
* nsmenu.m (update_frame_tool_bar): Set wait_for_tool_bar to NO
when setNeedsDisplay is called so we don't trigger redisplay for every
tool bar update.
* nsterm.m (any_help_event_p): New variable.
(mouseMoved:): Set any_help_event_p to YES if help event is
generated. Remove else with empty help event that triggered redisplay
for every mouse move.
(windowDidResignKey:): If any_help_event_p, generate empty help
event.