1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-29 07:58:28 +00:00

Merge from origin/emacs-26

73babba (origin/emacs-26) Clarify documentation of fractional vertica...
b20c51d * lisp/isearch.el (isearch-cmds): Recall absent isearch--stat...
700acbd doc/lispref/edebug.texi (Specification List) Remove obstrusiv...
1902450 Fix wording in module API documentation
e724a8f Fix redisplay of glyphless characters
8fc892d Update --without-toolkit-scroll-bars doc
80e0bfa Call GTK functions only on GTK scrollbars
91c4c46 Update the description of startup in ELisp manual
18b42c6 Use the 'line-number' face for line-number fields past EOB
a6ab8db Ensure NS frame is redrawn correctly  after scroll

Conflicts:
	lisp/isearch.el
This commit is contained in:
Glenn Morris 2018-10-16 08:08:04 -07:00
commit 722833d30e
11 changed files with 83 additions and 54 deletions

View File

@ -361,7 +361,7 @@ OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif/Xaw3d/GTK toolkit scroll bars])
OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
OPTION_DEFAULT_ON([xim],[at runtime, default X11 XIM to off])
AC_ARG_WITH([ns],[AS_HELP_STRING([--with-ns],

View File

@ -1319,7 +1319,6 @@ succeeds.
@item &define
@c @kindex &define @r{(Edebug)}
Indicates that the specification is for a defining form. Edebug's
definition of a defining form is a form containing one or more code
forms which are saved and executed later, after the execution of the

View File

@ -1176,12 +1176,12 @@ it does when Lisp code encounters the same situations.
@end deftypefn
After writing your C code for a module function, you should make a
Lisp function object from it using @code{make_function}. This is
Lisp function object from it using the @code{make_function} function,
whose pointer is provided in the environment (recall that the pointer
to the environment is returned by @code{get_environment}). This is
normally done in the module initialization function (@pxref{module
initialization function}), after verifying the @acronym{API}
compatibility, and uses the pointer to @code{make_function} provided
in the environment (recall that the pointer to the environment is
returned by @code{get_environment}).
compatibility.
@deftypefn Function emacs_value make_function (emacs_env *@var{env}, ptrdiff_t @var{min_arity}, ptrdiff_t @var{max_arity}, subr @var{func}, const char *@var{docstring}, void *@var{data})
@vindex emacs_variadic_function

View File

@ -112,24 +112,29 @@ activate the packages in the latter case, @code{package-activate-all}
should be called explicitly (e.g., via the @samp{--funcall} option).
@vindex initial-window-system@r{, and startup}
@vindex window-system-initialization-alist
@findex window-system-initialization
@item
If not running in batch mode, it initializes the window system that
the variable @code{initial-window-system} specifies (@pxref{Window
Systems, initial-window-system}). The initialization function for
each supported window system is specified by
@code{window-system-initialization-alist}. If the value
of @code{initial-window-system} is @var{windowsystem}, then the
appropriate initialization function is defined in the file
@file{term/@var{windowsystem}-win.el}. This file should have been
compiled into the Emacs executable when it was built.
Systems, initial-window-system}). The initialization function,
@code{window-system-initialization}, is a @dfn{generic function}
(@pxref{Generic Functions}) whose actual implementation is different
for each supported window system. If the value of
@code{initial-window-system} is @var{windowsystem}, then the
appropriate implementation of the initialization function is defined
in the file @file{term/@var{windowsystem}-win.el}. This file should
have been compiled into the Emacs executable when it was built.
@item
It runs the normal hook @code{before-init-hook}.
@item
If appropriate, it creates a graphical frame. This is not done in
batch (noninteractive) or daemon mode.
If appropriate, it creates a graphical frame. As part of creating the
graphical frame, it initializes the window system specified by
@code{initial-frame-alist} and @code{default-frame-alist}
(@pxref{Initial Parameters}) for the graphical frame, by calling the
@code{window-system-initialization} function for that window system.
This is not done in batch (noninteractive) or daemon mode.
@item
It initializes the initial frame's faces, and sets up the menu bar

View File

@ -4212,18 +4212,20 @@ point at the middle, top, and bottom of the window.
@cindex vertical scroll position
@dfn{Vertical fractional scrolling} means shifting text in a window
up or down by a specified multiple or fraction of a line. Each window
has a @dfn{vertical scroll position}, which is a number, never less than
zero. It specifies how far to raise the contents of the window.
Raising the window contents generally makes all or part of some lines
disappear off the top, and all or part of some other lines appear at the
bottom. The usual value is zero.
up or down by a specified multiple or fraction of a line. Emacs uses
it, for example, on images and screen lines which are taller than the
window. Each window has a @dfn{vertical scroll position}, which is a
number, never less than zero. It specifies how far to raise the
contents of the window when displaying them. Raising the window
contents generally makes all or part of some lines disappear off the
top, and all or part of some other lines appear at the bottom. The
usual value is zero.
The vertical scroll position is measured in units of the normal line
height, which is the height of the default font. Thus, if the value is
.5, that means the window contents are scrolled up half the normal line
height. If it is 3.3, that means the window contents are scrolled up
somewhat over three times the normal line height.
.5, that means the window contents will be scrolled up half the normal
line height. If it is 3.3, that means the window contents are scrolled
up somewhat over three times the normal line height.
What fraction of a line the vertical scrolling covers, or how many
lines, depends on what the lines contain. A value of .5 could scroll a

View File

@ -55,9 +55,11 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#endif
/* The type of bool bitfields. Needed to compile Objective-C with
standard GCC. It was also needed to port to pre-C99 compilers,
although we don't care about that any more. */
#if NS_IMPL_GNUSTEP
standard GCC, and to make sure adjacent bool_bf fields are packed
into the same 1-, 2-, or 4-byte allocation unit in the MinGW
builds. It was also needed to port to pre-C99 compilers, although
we don't care about that any more. */
#if NS_IMPL_GNUSTEP || defined(__MINGW32__)
typedef unsigned int bool_bf;
#else
typedef bool bool_bf;

View File

@ -4123,7 +4123,12 @@ scrolling_window (struct window *w, bool header_line_p)
}
#ifdef HAVE_XWIDGETS
/* Currently this seems needed to detect xwidget movement reliably. */
/* Currently this seems needed to detect xwidget movement reliably.
This is most probably because an xwidget glyph is represented in
struct glyph's 'union u' by a pointer to a struct, which takes 8
bytes in 64-bit builds, and thus the comparison of u.val values
done by GLYPH_EQUAL_P doesn't work reliably, since it assumes the
size of the union is 4 bytes. FIXME. */
return 0;
#endif

View File

@ -1509,6 +1509,7 @@ xg_set_background_color (struct frame *f, unsigned long bg)
block_input ();
xg_set_widget_bg (f, FRAME_GTK_WIDGET (f), FRAME_BACKGROUND_PIXEL (f));
#ifdef USE_TOOLKIT_SCROLL_BARS
Lisp_Object bar;
for (bar = FRAME_SCROLL_BARS (f);
!NILP (bar);
@ -1519,7 +1520,7 @@ xg_set_background_color (struct frame *f, unsigned long bg)
GtkWidget *webox = gtk_widget_get_parent (scrollbar);
xg_set_widget_bg (f, webox, FRAME_BACKGROUND_PIXEL (f));
}
#endif
unblock_input ();
}
}

View File

@ -2848,6 +2848,7 @@ so some key presses (TAB) are swallowed by the system. */
[FRAME_NS_VIEW (f) scrollRect: src
by: NSMakeSize (dest.origin.x - src.origin.x,
dest.origin.y - src.origin.y)];
[FRAME_NS_VIEW (f) setNeedsDisplay:YES];
}
}

View File

@ -7362,6 +7362,8 @@ value. */)
DEFUN ("window-vscroll", Fwindow_vscroll, Swindow_vscroll, 0, 2, 0,
doc: /* Return the amount by which WINDOW is scrolled vertically.
This takes effect when displaying tall lines or images.
If WINDOW is omitted or nil, it defaults to the selected window.
Normally, value is a multiple of the canonical character height of WINDOW;
optional second arg PIXELS-P means value is measured in pixels. */)
@ -7384,6 +7386,8 @@ optional second arg PIXELS-P means value is measured in pixels. */)
DEFUN ("set-window-vscroll", Fset_window_vscroll, Sset_window_vscroll,
2, 3, 0,
doc: /* Set amount by which WINDOW should be scrolled vertically to VSCROLL.
This takes effect when displaying tall lines or images.
WINDOW nil means use the selected window. Normally, VSCROLL is a
non-negative multiple of the canonical character height of WINDOW;
optional third arg PIXELS-P non-nil means that VSCROLL is in pixels.

View File

@ -2302,7 +2302,10 @@ get_phys_cursor_geometry (struct window *w, struct glyph_row *row,
ascent value, lest the hollow cursor looks funny. */
y = w->phys_cursor.y;
ascent = row->ascent;
if (row->ascent < glyph->ascent)
/* The test for row at ZV is for when line numbers are displayed and
point is at EOB: the cursor could then be smaller or larger than
the default face's font. */
if (!row->ends_at_zv_p && row->ascent < glyph->ascent)
{
y -= glyph->ascent - row->ascent;
ascent = glyph->ascent;
@ -2312,6 +2315,9 @@ get_phys_cursor_geometry (struct window *w, struct glyph_row *row,
h0 = min (FRAME_LINE_HEIGHT (f), row->visible_height);
h = max (h0, ascent + glyph->descent);
/* Don't let the cursor exceed the dimensions of the row, so that
the upper/lower side of the box aren't clipped. */
h = min (h, row->height);
h0 = min (h0, ascent + glyph->descent);
y0 = WINDOW_HEADER_LINE_HEIGHT (w);
@ -21232,14 +21238,11 @@ maybe_produce_line_number (struct it *it)
for (const char *p = lnum_buf; *p; p++)
{
/* For continuation lines and lines after ZV, instead of a line
number, produce a blank prefix of the same width. Use the
default face for the blank field beyond ZV. */
if (beyond_zv)
tem_it.face_id = it->base_face_id;
else if (lnum_face_id != current_lnum_face_id
&& (EQ (Vdisplay_line_numbers, Qvisual)
? this_line == 0
: this_line == it->pt_lnum))
number, produce a blank prefix of the same width. */
if (lnum_face_id != current_lnum_face_id
&& (EQ (Vdisplay_line_numbers, Qvisual)
? this_line == 0
: this_line == it->pt_lnum))
tem_it.face_id = current_lnum_face_id;
else
tem_it.face_id = lnum_face_id;
@ -21292,23 +21295,30 @@ maybe_produce_line_number (struct it *it)
}
}
/* Update IT's metrics due to glyphs produced for line numbers. */
if (it->glyph_row)
/* Update IT's metrics due to glyphs produced for line numbers.
Don't do that for rows beyond ZV, to avoid displaying a cursor of
different dimensions there. */
if (!beyond_zv)
{
struct glyph_row *row = it->glyph_row;
if (it->glyph_row)
{
struct glyph_row *row = it->glyph_row;
it->max_ascent = max (row->ascent, tem_it.max_ascent);
it->max_descent = max (row->height - row->ascent, tem_it.max_descent);
it->max_phys_ascent = max (row->phys_ascent, tem_it.max_phys_ascent);
it->max_phys_descent = max (row->phys_height - row->phys_ascent,
tem_it.max_phys_descent);
}
else
{
it->max_ascent = max (it->max_ascent, tem_it.max_ascent);
it->max_descent = max (it->max_descent, tem_it.max_descent);
it->max_phys_ascent = max (it->max_phys_ascent, tem_it.max_phys_ascent);
it->max_phys_descent = max (it->max_phys_descent, tem_it.max_phys_descent);
it->max_ascent = max (row->ascent, tem_it.max_ascent);
it->max_descent = max (row->height - row->ascent, tem_it.max_descent);
it->max_phys_ascent = max (row->phys_ascent, tem_it.max_phys_ascent);
it->max_phys_descent = max (row->phys_height - row->phys_ascent,
tem_it.max_phys_descent);
}
else
{
it->max_ascent = max (it->max_ascent, tem_it.max_ascent);
it->max_descent = max (it->max_descent, tem_it.max_descent);
it->max_phys_ascent = max (it->max_phys_ascent,
tem_it.max_phys_ascent);
it->max_phys_descent = max (it->max_phys_descent,
tem_it.max_phys_descent);
}
}
it->line_number_produced_p = true;