Commit Graph

37668 Commits

Author SHA1 Message Date
Nicolas Richard
ece5691fe6 * src/syntax.c (Fbackward_prefix_chars): Reword docstring 2015-06-11 11:49:00 +02:00
Eli Zaretskii
e0707282d2 Improve font selection for punctuation and other symbols
* src/fontset.c (face_for_char): If the character's script is
'symbol', and the font used for ASCII face has a glyph for it, use
the font for the ASCII face instead of searching the fontsets.
This comes instead of NS-specific code that used the current
face's font instead, which is now disabled due to undesirable
consequences.  (Bug#20727)
2015-06-09 17:56:39 +03:00
Eli Zaretskii
55200b4ca5 Fix compilation warning/error in --without-x builds
* src/xdisp.c (append_space_for_newline): Condition GUI-specific
code on HAVE_WINDOW_SYSTEM.
2015-06-08 21:15:05 +03:00
Eli Zaretskii
296dadb14e Avoid crashes when key-binding is called from a timer
* src/keymap.c (Fkey_binding): Don't segfault if called with an
empty vector as KEY.  (Bug#20705)
2015-06-08 17:39:35 +03:00
Glenn Morris
c876b73a8f ; * src/font.c (syms_of_font) <font-log>: Tweak previous doc fix. 2015-06-07 16:55:00 -07:00
Glenn Morris
85b812f631 * src/font.c (syms_of_font) <font-log>: Doc fix. 2015-06-07 16:51:11 -07:00
Glenn Morris
86abad6508 Remove the obsolete leading "*" from some C doc strings.
* src/coding.c (syms_of_coding):
* src/font.c (syms_of_font): Remove leading "*" from docs.

* lisp/cus-start.el (enable-character-translation): Add it.
2015-06-07 16:47:45 -07:00
Eli Zaretskii
f1baa15650 Fix display when a font claims large values of ascent and descent
This fixes bug#20628.

* src/xdisp.c (get_phys_cursor_geometry): Correct the Y
coordinate of a hollow cursor glyph when the original glyph's
ascent is too small.
(get_font_ascent_descent, normal_char_ascent_descent)
(normal_char_height): New functions.
(handle_single_display_spec, append_space_for_newline)
(calc_pixel_width_or_height, produce_stretch_glyph)
(calc_line_height_property): Use normal_char_ascent_descent and
normal_char_height.
(x_produce_glyphs): When font-global values of ascent and descent
are too large, use per-character glyph metrics instead, if
possible.  But don't allow the glyph row's ascent and descent
values become smaller than the values from the metrics of the
font's "normal" character.

* src/xftfont.c (xftfont_draw):
* src/w32font.c (w32font_draw): Correct the values of ascent and
descent used to draw glyphless characters' hex code in a box.

* src/xterm.c (x_draw_glyph_string_background):
* src/xdisp.c (x_produce_glyphs):
* src/w32term.c (x_draw_glyph_string_background):
* src/nsterm.m (ns_maybe_dumpglyphs_background): Use FONT_TOO_HIGH
to detect fonts whose global ascent and descent values are too
large to be used in layout decision, and redraw the background
when that happens.

* src/dispextern.h (FONT_TOO_HIGH): New macro.
(get_font_ascent_descent): Add prototype.

* src/xterm.c (x_new_font):
* src/w32term.c (x_new_font):
* src/nsterm.m (x_new_font):
* src/font.c (font_open_entity):
* src/composite.c (composition_gstring_width): Use
get_font_ascent_descent to obtain reasonable values for ascent and
descent of a font.
2015-06-06 16:10:19 +03:00
Nicolas Richard
6f10a3f90f Add assertion in adjust_point_for_property
* src/keyboard.c (adjust_point_for_property): Add eassert for
current buffer being shown in selected window.
2015-06-06 13:23:18 +02:00
Nicolas Richard
d31cd49074 Do not adjust point in a non-selected window
* src/keyboard.c (command_loop_1): Do not adjust point when
current buffer is not shown in selected window (Bug#20590).
2015-06-06 08:34:47 +02:00
YAMAMOTO Mitsuharu
7c9a2ef845 * src/ftfont.c (ftfont_open2): Round divisions by upEM. 2015-06-05 09:44:40 +09:00
YAMAMOTO Mitsuharu
dcf18b5c84 Undo removal of x_clear_area call on expose for GTK3 or cairo.
* src/xterm.c (handle_one_xevent) [HAVE_GTK3 || USE_CAIRO]: Clear
exposed area.  (Bug#20677)
2015-06-05 09:41:40 +09:00
Nicolas Petton
41a929c5ae Add new function string-greaterp
* lisp/subr.el (string-greaterp): New function.  Also aliased to
`string>'.
* test/automated/subr-tests.el (string-comparison-test): Add unit
tests for `string>'and `string<'.
* src/fns.c (string-lessp): Better docstring.
2015-06-04 18:27:54 +02:00
Eli Zaretskii
285260fce8 Fix timezone-related functions on MS-Windows
* src/editfns.c (set_time_zone_rule) [WINDOWSNT]: Always call
'xputenv', even if no reallocation of tzvalbuf was necessary.
This fixes a bug in timezone-related functions on MS-Windows.
Reported by Fabrice Popineau <fabrice.popineau@gmail.com>.
2015-06-04 18:28:29 +03:00
Wolfgang Jenkner
68529c89fa * src/indent.c (Fvertical_motion): Amend motion by 0 lines.
Starting from a display string after a newline, point went to the
previous line.  Also, fix an inadvertent use of a buffer position
with FETCH_BYTE.  (Bug#20701)
2015-06-03 15:29:24 +02:00
YAMAMOTO Mitsuharu
e6d8f70057 Undo previous changes in non-toolkit scroll bar drawing.
* src/xterm.c (x_scroll_bar_set_handle, x_scroll_bar_expose)
[!USE_TOOLKIT_SCROLL_BARS]: Draw into scroll bar window.  (Bug#20668)
2015-06-03 15:22:56 +09:00
Eli Zaretskii
957cbfd765 NS equivalents of xterm.c and w32term.c changes
* src/nsterm.m (ns_maybe_dumpglyphs_background): Force redraw of
glyph string background also when the font in use claims
preposterously large global height value.  Helps to remove
artifacts left from previous displays when glyphless characters
are displayed as hex code in a box.
(x_new_font): Call get_font_ascent_descent to obtain a reasonable
value for FRAME_LINE_HEIGHT, even when a font claims very large
value for its height.
2015-06-01 17:46:20 +03:00
Paul Eggert
2c656f7deb Avoid grave accent quoting in stderr diagnostics
A few Emacs diagnostics go directly to stderr, and so can't easily
contain curved quotes (as non-UTF-8 locales might mishandle them).
Instead of bothering to add support for this rarity, reword the
diagnostics so that they don't use grave accent to quote.
* src/alloc.c (mark_memory): Fix comment.
* src/buffer.c (init_buffer):
* src/dispnew.c (init_display):
* src/emacs.c (main, sort_args):
* src/lread.c (dir_warning):
* src/term.c (init_tty):
* src/unexmacosx.c (unexec):
* src/xfns.c (select_visual):
* src/xterm.c (cvt_string_to_pixel, x_io_error_quitter):
Reword stderr diagnostics to avoid quoting `like this'.
* src/unexmacosx.c: Include errno.h.
* src/xfns.c (select_visual): Encode value for locale.
2015-05-31 23:53:45 -07:00
Paul Eggert
467af178f5 Treat batch stdout/stderr like standard display
Calls like (print FOO) could generate improperly encoded or
hard-to-read output if FOO contains characters outside the system
locale.  Fix this by treating batch stdout and stderr like
interactive standard display, when it comes to transliterating and
encoding characters (Bug#20545).
* doc/emacs/mule.texi (Communication Coding):
* doc/lispref/display.texi (Active Display Table):
* doc/lispref/nonascii.texi (Locales):
* etc/NEWS:
* src/coding.c (syms_of_coding):
* src/dispnew.c (syms_of_display):
Document this.
* src/print.c: Include disptab.h.
(printchar_to_stream): New function, with much of the guts of the
old Fexternal_debugging_output, except this one also uses the
standard display table.
(printchar, strout, Fexternal_debugging_output): Use it.
2015-05-31 20:04:43 -07:00
Glenn Morris
21d13bce38 * src/emacs.c (syms_of_emacs) <system-configuration-features>: Doc fix. 2015-05-31 16:27:36 -07:00
Paul Eggert
0c2a3cf62a Remove unused DEFSYMs
Remove DEFSYMs that aren't used at the C level.  Also:
* src/decompress.c (Qzlib_dll):
* src/font.c (Qunicode_sip):
* src/frame.c (Qtip_frame):
* src/ftfont.c (Qserif):
* src/gnutls.c (Qgnutls_dll):
* src/xml.c (Qlibxml2_dll):
Move from here ...
* src/w32fns.c (syms_of_w32fns): ... to here,
as these are used only on MS-Windows.
2015-05-31 11:50:01 -07:00
Eli Zaretskii
cab645a62f Attempt to fix crashes due to accesses beyond glyph matrix end
* src/xdisp.c (x_produce_glyphs): When it->ascent and it->descent
are determined from per-character metrics, don't let the
max_ascent and max_descent become smaller than values returned by
normal_char_ascent_descent, to avoid unpleasant dynamic resizing
of screen line heights when text changes.

* src/xterm.c (x_new_font)
* src/w32term.c (x_new_font): Call get_font_ascent_descent to
obtain a reasonable value for FRAME_LINE_HEIGHT, even when a font
claims very large value for its height.

* src/font.c (font_open_entity): Call get_font_ascent_descent to
obtain a reasonable value for FRAME_SMALLEST_FONT_HEIGHT, even
when a font claims very large value for its height.
2015-05-31 17:41:35 +03:00
Paul Eggert
d90a3b186d Remove format2
* src/editfns.c, src/lisp.h (format2): Remove.
It is more trouble than it's worth, now that we have CALLN.
This is just a minor refactoring.
* src/buffer.c (Fkill_buffer):
* src/dbusbind.c (XD_OBJECT_TO_STRING):
* src/fileio.c (barf_or_query_if_file_exists):
Adjust to format2 going away.
2015-05-30 15:30:47 -07:00
Paul Eggert
75f8653bfe Don't misencode C-generated messages
Also, be more consistent about calls to 'Fmessage' vs 'message'.
* src/alloc.c (Fgc_status):
Prefer AUTO_STRING to build_string for Fmessage call.
* src/data.c (Fmake_variable_buffer_local)
(Fmake_local_variable, Fmake_variable_frame_local):
* src/doc.c (store_function_docstring):
Use Fmessage, not message, since the argument can contain
non-ASCII characters, and this can cause the resulting message
to be incorrectly encoded for the current environment.
* src/fns.c (maybe_resize_hash_table):
* src/xselect.c (x_clipboard_manager_save_all):
Use message, not Fmessage, since Fmessage's power isn't needed here.
* src/process.c (Fmake_network_process): Reword message to avoid %s.
* src/xdisp.c (vmessage): Document restrictions on message contents.
(message_nolog) [false]: Remove unused code.
2015-05-30 11:19:31 -07:00
Eli Zaretskii
643470ff79 Fix display of composite characters with large fonts
* src/xdisp.c (x_produce_glyphs): Call normal_char_ascent_descent
for reasonable values of font ascent and descent.
(get_font_ascent_descent): New function.

* src/composite.c (composition_gstring_width): Call
get_font_ascent_descent for reasonable values of font ascent and
descent.

* dispextern.h: Add prototype for get_font_ascent_descent.
2015-05-30 19:25:53 +03:00
Eli Zaretskii
ba5f83dfe5 Fix display of cursor at end of empty lines
* src/xdisp.c (normal_char_ascent_descent): Accept additional
argument: the character to use for metrics in case the font
declares too large ascent and descent values.  Add 1 pixel to
ascent and descent values.
(normal_char_height): Accept additional argument: the character to
use for metrics in case the font declares too large height value.
Call normal_char_ascent_descent instead of doing calculations for
a different default character.
(estimate_mode_line_height, handle_single_display_spec)
(calc_pixel_width_or_height, produce_stretch_glyph)
(calc_line_height_property, produce_glyphless_glyph): All callers
changed.
(append_space_for_newline): Make sure the space glyph produced at
end of line has correct ascent and descent values, and the glyph
row has correct height, even when it's empty.
2015-05-30 12:33:08 +03:00
Paul Eggert
2c3dde9fc8 copy-file now truncates output after writing
* src/fileio.c (Fcopy_file): Truncate output after writing rather
than before.  This is more likely to work than truncation before
writing, if the file system is out of space or the user is over
disk quota (Bug#20595).  Also, check for read errors.
2015-05-29 23:02:38 -07:00
Wolfgang Jenkner
7927a4a3b3 * src/xfns.c (x_set_menu_bar_lines): Fix calls to x_clear_area.
The signature was changed in the cairo branch, merged on 2015-05-23.
This oversight broke compiling only the non-toolkit X version.
2015-05-29 16:29:18 +02:00
Eli Zaretskii
42a7b12bc7 Fix 2 more calculations of line height
* src/xdisp.c (estimate_mode_line_height, handle_single_display_spec):
Use normal_char_height.
2015-05-29 17:21:07 +03:00
Eli Zaretskii
5f734fa045 Fix line dimensions from line-height property
* src/xdisp.c (normal_char_ascent_descent): New function,
extracted from produce_glyphless_glyph.
(calc_line_height_property, produce_glyphless_glyph): Use it to
compute reasonable estimates of ascent and descent for large
fonts.
2015-05-29 17:09:45 +03:00
Eli Zaretskii
c522848659 Fix display of stretch glyphs with large fonts
* src/xdisp.c (normal_char_height): New function.
(calc_pixel_width_or_height, produce_stretch_glyph): Use it to
compute more reasonable estimation of a "normal character height"
when the font claims preposterously large height values.
2015-05-29 16:41:10 +03:00
Eli Zaretskii
c76605faa1 Fix display of glyphless characters with problematic fonts
* src/w32term.c (x_draw_glyph_string_background): Force redraw of
glyph string background also when the font in use claims
preposterously large global height value.  Helps to remove
artifacts left from previous displays when glyphless characters
are displayed as hex code in a box.
* src/xterm.c (x_draw_glyph_string_background): Force redraw of
glyph string background also when the font in use claims
preposterously large global height value.  Helps to remove
artifacts left from previous displays when glyphless characters
are displayed as hex code in a box.
* src/w32font.c (w32font_draw): Fix background drawing for
glyphless characters that display as acronyms or hex codes in a
box.
* src/xftfont.c (xftfont_draw): Fix background drawing for
glyphless characters that display as acronyms or hex codes in a
box.
* src/xdisp.c (produce_glyphless_glyph): Compute reasonable values
for it->ascent and it->descent when the font claims preposterously
large global values.
(FONT_TOO_HIGH): Move from here...
* src/dispextern.h (FONT_TOO_HIGH): ...to here.
2015-05-28 20:23:41 +03:00
Paul Eggert
11b2744f48 substitute-command-keys now curves quotes
So, for example, it turns "`abc'" into "‘abc’" (Bug#20385).
* doc/lispref/help.texi (Keys in Documentation):
* etc/NEWS: Document this.
* src/doc.c (Fsubstitute_command_keys): Implement it.
2015-05-28 00:22:01 -07:00
Stefan Monnier
f655987d63 Un-revert changes mistakenly dropped by f9fabb2b 2015-05-27 22:42:33 -04:00
Eli Zaretskii
1d87cb3cfa Avoid very high screen lines with some fonts
* src/xdisp.c (get_phys_cursor_geometry): Adjust the height of the
cursor to avoid weird-looking hollow cursor with fonts that have
large ascent values for some glyphs.  This avoids having the
hollow cursor start too low.
(append_space_for_newline): Adjust the ascent value of the newline
glyph, so that the hollow cursor at end of line displays
correctly.
(FONT_TOO_HIGH): New macro.
(x_produce_glyphs): Use it to detect fonts that claim a
preposterously large height, in which case we use per-glyph ascent
and descent values.  (Bug#20628)
2015-05-27 17:56:16 +03:00
Eli Zaretskii
53bedd3a8e Teach MS-Windows font back-end return per-glyph ascent/descent
* src/w32font.h (struct w32_metric_cache): Add ascent and descent
values.

* src/w32font.c (w32font_text_extents): Compute, cache, and
accumulate per-glyph ascent and descent values, instead of copying
global values from the font.  If the values are not available from
the font data, i.e., non-TTF fonts, fall back on font-global values.
(compute_metrics): Compute and return per-glyph ascent and descent
values, if returned by GetGlyphOutlineW, falling back on
font-global values.  (Bug#20628)

* src/w32term.c (w32_draw_rectangle): Add 1 pixel to width and
height of rectangle to be drawn, to be compatible with
XDrawRectangle.  Fixes glyphless-char display as hex codes in a
box, when per-glyph ascent/descent values are used.
2015-05-26 18:29:40 +03:00
Glenn Morris
9f89ea1f84 Remove charset map files from repository, generate in first bootstrap
* admin/charsets/Makefile.in (${srcdir}/charsets.stamp): New.
(all): Create the stamp file.
(extraclean): Delete the stamp file.
* src/Makefile.in (lispintdir, charsets): New variables.
(${lispintdir}/cp51932.el, ${lispintdir}/eucjp-ms.el, ${charsets}):
New rules.
(emacs$(EXEEXT), temacs$(EXEEXT)): Depend on $charsets.
* lisp/international/cp51932.el, lisp/international/eucjp-ms.el:
* etc/charsets/*.map: Remove from repository.
; * admin/charsets/mapconv: Fix typo in output comment.
; * etc/charsets/README: Small update.
; * .gitignore: Update for charset changes.
2015-05-23 16:38:13 -07:00
Paul Eggert
fa658b2e90 Put default action first in src/Makefile
* src/Makefile.in (all): Put this rule before lisp.mk.
That way, plain 'make' works in the src directory again.
2015-05-23 15:08:19 -07:00
Eli Zaretskii
85d94d6587 Avoid compiler warning in image.c on MS-Windows
* src/w32term.h (x_query_color): Add prototype, to avoid compiler
warning in image.c.
2015-05-23 22:19:08 +03:00
Glenn Morris
238e8b6629 Fix --without-toolkit-scroll-bars builds.
* src/xterm.c (x_scroll_bar_set_handle) [!USE_TOOLKIT_SCROLL_BARS]:
Add new argument to x_clear_area1.
(XTset_horizontal_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Update x_clear_area arguments.
2015-05-23 11:25:20 -07:00
Paul Eggert
2219134940 Pacify --enable-gcc-warnings
* src/frame.h (x_query_color): Remove redundant extern decl.
* src/ftcrfont.c (ftcrfont_glyph_extents, ftcrfont_list)
(ftcrfont_match, ftcrfont_open, ftcrfont_close)
(ftcrfont_text_extents, ftcrfont_draw):
* src/xterm.c (x_set_window_size_1, *x_color_cells, x_update_end)
(XTframe_up_to_date, x_clear_area1, x_clear_frame)
(x_ins_del_lines, frame_highlight, frame_unhighlight)
(x_new_focus_frame, x_focus_changed, XTframe_rehighlight)
(x_draw_hollow_cursor, x_draw_bar_cursor, x_flush, x_update_begin)
(x_update_window_begin, x_connection_closed)
(x_set_clip_rectangles, x_reset_clip_rectangles, x_fill_rectangle)
(x_draw_rectangle, x_fill_trapezoid_for_relief, x_clear_window)
(*x_gc_get_ext_data, x_extension_initialize)
(x_cr_accumulate_data):
Remove redundant static decl.  Many of these GCC doesn't complain
about, but we might as well clean out the duplication while we're
in the neighborhood.
* src/xterm.c (x_fill_trapezoid_for_relief):
Remove decl of nonexistent function.
2015-05-23 09:02:04 -07:00
Paul Eggert
78c9b2e847 ; Omit entries that will appear in ChangeLog.2 2015-05-23 08:36:28 -07:00
Stefan Monnier
919281ddb2 Replace gui-method macros with cl-generic with &context
* lisp/frame.el (gui-method--name, gui-method, gui-method-define)
(gui-method-declare, gui-call): Remove.
(frame-creation-function): Use cl-defgeneric.
(make-frame): Adjust callers.

* lisp/menu-bar.el (menu-bar-edit-menu):
Use gui-backend-selection-exists-p.

* lisp/select.el (x-get-clipboard): Use gui-backend-get-selection.
(gui-backend-get-selection): New cl-generic to replace
gui-get-selection method.
(gui-backend-set-selection): New cl-generic to replace
gui-set-selection method.
(gui-selection-owner-p): New cl-generic to replace
gui-selection-owner-p method.
(gui-backend-selection-exists-p): New cl-generic to replace
gui-selection-exists-p method.  Adjust all callers.

* lisp/server.el (server-create-window-system-frame): Don't ignore
window-system spec even when unsupported.

* lisp/simple.el (deactivate-mark): Use new gui-backend-* functions.

* lisp/startup.el (handle-args-function, window-system-initialization):
Use cl-defgeneric.
(command-line): Adjust calls accordingly.

* lisp/term/ns-win.el (ns-window-system-initialization): Turn into
a window-system-initialization method.
(handle-args-function, frame-creation-function): Use cl-defmethod.
(gui-set-selection, gui-selection-owner-p, gui-selection-exists-p)
(gui-get-selection): Use cl-defmethod on the new functions instead.

* lisp/term/pc-win.el (w16-get-selection-value): Turn into
a gui-backend-get-selection method.
(gui-selection-exists-p, gui-selection-owner-p, gui-set-selection):
Use cl-defmethod on the new functions instead.
(msdos-window-system-initialization): Turn into
a window-system-initialization method.
(frame-creation-function, handle-args-function): Use cl-defmethod.

* lisp/term/w32-win.el (w32-window-system-initialization): Turn into
a window-system-initialization method.
(handle-args-function, frame-creation-function): Use cl-defmethod.
(gui-set-selection, gui-selection-owner-p, gui-selection-exists-p)
(gui-get-selection): Use cl-defmethod on the new functions instead.

* lisp/term/x-win.el (x-window-system-initialization): Turn into
a window-system-initialization method.
(handle-args-function, frame-creation-function): Use cl-defmethod.
(gui-set-selection, gui-selection-owner-p, gui-selection-exists-p)
(gui-get-selection): Use cl-defmethod on the new functions instead.

* lisp/term/xterm.el (xterm--set-selection): Turn into
a gui-backend-set-selection method.

* src/nsselect.m (Fns_selection_exists_p): Remove unused arg `terminal'.
(Fns_selection_owner_p): Remove unused arg `terminal'.
(Fns_get_selection): Remove unused args `time_stamp' and `terminal'.
2015-05-23 11:32:29 -04:00
Jan D
6aaa489dc1 Merge branch 'master' into cairo 2015-05-23 12:28:54 +02:00
Jan D
ee14727ce0 Fixes to compile cairo branch without cairo.
* src/gtkutil.c (xg_update_scrollbar_pos): x_clear_area takes frame as
first argument.

* src/xterm.c (handle_one_xevent): Surround x_cr_destroy_surface with
USE_CAIRO.
2015-05-23 12:27:56 +02:00
Eli Zaretskii
d6dfefe405 Fix documentation of forward-line
* src/cmds.c (Fforward_line): Clarify the return value if the line
at end of accessible portion of the buffer has no newline.
* doc/lispref/positions.texi (Text Lines): Document what happens
if the line at end of accessible portion of buffer has no newline.

(Bug#20587)
2015-05-23 11:03:30 +03:00
Paul Eggert
96794d2f97 Don't quote nil and t in doc strings
This is as per "Tips for Documentation Strings" in the elisp manual.
For consistency, do the same in diagnostics and comments.
2015-05-21 10:06:44 -07:00
Eli Zaretskii
fc071bf7c6 Fix a minor problem with mouse-face on mode line
* src/xdisp.c (note_mode_line_or_margin_highlight): Reset the
mouse face also if the mouse pointer hovers above mode-line glyphs
that don't come from any Lisp string.  (Bug#20620)
2015-05-21 19:38:19 +03:00
Eli Zaretskii
e8b8953420 Fix "acronym" display of glyphless characters on w32
* src/w32term.c (x_draw_glyphless_glyph_string_foreground): Don't
ignore "acronym" substitutes of 1 character for glyphless characters.
2015-05-20 18:09:37 +03:00
Martin Rudalics
0c5fa361e1 Fix handling and doc-string of FRAME arg of `other-buffer' (Bug#20533)
* src/buffer.c (Fother_buffer): Argument FRAME must denote a live frame.
Fix doc-string (Bug#20533).
2015-05-20 10:35:13 +02:00