Ref: http://lists.gnu.org/archive/html/emacs-devel/2010-02/msg00135.html
* lisp/simple.el (messages-buffer-mode): New major mode.
(messages-buffer): New function.
* lisp/startup.el (normal-top-level): Switch mode of *Messages* buffer.
* src/xdisp.c (message_dolog): If we create *Messages*,
switch it to messages-buffer-mode.
* lisp/emacs-lisp/ert.el (ert--force-message-log-buffer-truncation)
(ert-run-test): Use `message-buffer' function.
(ert--force-message-log-buffer-truncation): Ignore read-only.
* lisp/help.el (view-echo-area-messages): Use `message-buffer' function.
* lisp/mail/emacsbug.el (report-emacs-bug): Use `message-buffer' function.
* lisp/gnus/gnus-util.el (gnus-message-with-timestamp-1):
Use `message-buffer' function if available. Ignore read-only.
* etc/NEWS: Mention this.
* bidi.c (bidi_count_bytes):
* gtkutil.c, gtkutil.h (xg_event_is_for_menubar)
(xg_event_is_for_scrollbar):
* xselect.c (x_handle_property_notify)
(x_handle_selection_notify, x_handle_dnd_message):
* xsettings.c, xsettings.h (xft_settings_event):
* xterm.c (x_handle_net_wm_state, handle_one_event)
(x_menubar_window_to_frame, x_detect_focus_change)
(construct_mouse_click, note_mouse_movement)
(x_scroll_bar_to_input_event, x_scroll_bar_expose)
(x_scroll_bar_handle_click, x_scroll_bar_note_movement)
(handle_one_xevent, x_handle_net_wm_state):
* xterm.h (x_handle_property_notify, x_handle_selection_notify)
(x_handle_dnd_message):
Avoid unnecessary 'const', typically the second 'const' in
'const foo * const arg', a 'const' that does not affect the API
and doesn't significantly help the human reader.
require glib >= 2.28 for GTK3, glib >= 2.10 for GTK2,
glib >= 2.26 for GSettings and glib >= 2.7.0 for GConf, so
suitable glib should provide g_type_init unconditionally.
* src/image.c (fn_g_type_init) [WINDOWSNT]: Define and load
only if Glib < 2.36.0.
(fn_g_type_init) [!WINDOWSNT]: Define only if Glib < 2.36.0.
* src/xsettings.c (init_gconf, init_gsettings): Do not check
for g_type_init.
Wnen XEvent is processed, it is unlikely to be changed except
KeyPress case, so we can avoid copying and use const pointer to
const data to make sure that an event is not changed elsewhere.
* xterm.c (handle_one_xevent): Change 2nd arg to 'const XEvent *
const' and do not create local copy except for the KeyPress event.
Use casts to avoid a few glitches. Adjust formatting. Add comments.
(SET_SAVED_BUTTON_EVENT): Remove and move the code to the only user.
(x_handle_net_wm_state, x_menubar_window_to_frame)
(x_detect_focus_change, construct_mouse_click, note_mouse_movement)
(x_scroll_bar_to_input_event, x_scroll_bar_expose)
(x_scroll_bar_handle_click, x_scroll_bar_note_movement):
* gtkutil.c (xg_event_is_for_menubar, xg_event_is_for_scrollbar):
* xselect.c (x_handle_property_notify, x_handle_selection_notify)
(x_handle_dnd_message):
* xsettings.c (xft_settings_event):
Use 'const XEvent * const' where appropriate.
* xterm.h, gtkutil.h, xsettngs.h: Adjust related prototypes.
* frame.h (struct frame) [HAVE_X_WINDOWS]: New member wait_event_type.
* xterm.c (pending_event_wait): Remove. Adjust users.
(x_detect_focus_change): Pass frame arg.
(handle_one_xevent): Find related frame early and clear per-frame
wait_event_type only if this is an event for the relevant frame.
(x_wait_for_event): Use per-frame wait_event_type.
* configure.ac: Add check for OSX 10.5, required for macfont.o.
* etc/NEWS: Mention the macfont backend.
* src/Makefile.in (NS_OBJ, SOME_MACHINE_OBJECTS): Add macfont.o.
* src/font.c (syms_of_font): Call syms_of_macfont.
* src/font.h: Declare syms_of_macfont.
* src/nsfns.m: Include macfont.h.
(Fx_create_frame): Register macfont driver, make a better default font.
(Fns_popup_font_panel): Get font from macfont driver, if used.
* src/nsfont.m (ns_tmp_flags, ns_tmp_font): Remove.
(nsfont_open): Set font driver type.
Set font->ascent and font->descent. Figure out font instead of
ns_tmp_font, and flags instead of ns_tmp_flags.
Fix indentation. Remove call to ns_draw_text_decoration,
moved to nsterm.
* src/nsterm.m: Include macfont.h.
(ns_tmp_flags, ns_tmp_font): Remove.
(ns_compute_glyph_string_overhangs): Check for driver Qns.
(ns_draw_glyph_string): Use local variables instead of ns_tmp_flags,
ns_tmp_font. Call ns_draw_text_decoration here instead of nsfont.m.
(changeFont:): Fix code style. Check for font driver type when
getiing font.
* src/nsterm.h (FONT_DESCENT, FONT_ASCENT): Define to (f)->ascent and
(f)->descent.
and it is always zero for others, so I assume that this is an ancient
leftover which nobody will want to change any more.
* xterm.h, w32term.h, nsterm.h (VERTICAL_SCROLL_BAR_WIDTH_TRIM): Remove.
(VERTICAL_SCROLL_BAR_INSIDE_WIDTH):
* frame.c (x_set_scroll_bar_width):
* w32fns.c (w32_createscrollbar):
* w32term.c (w32_set_vertical_scroll_bar):
* xfns.c (x_set_scroll_bar_default_width):
* xterm.c (XTflash, x_scroll_bar_create, XTset_vertical_scroll_bar)
(x_scroll_bar_expose): Related users changed.
doc/lispref/display.texi (Display Margins): State the units of measuring
margin width.
src/buffer.c (syms_of_buffer) <left-margin-width, right-margin-width>:
Doc fix.
* src/frame.h (x_focus_frame): New prototype.
* src/xfns.c (Fx_focus_frame): Remove.
(syms_of_xfns): Do not defsubr it.
(x_focus_frame): X implementation.
* src/nsfns.m (Fx_focus_frame): Remove.
(syms_of_nsfns): Do not defsubr it.
(x_focus_frame): NS implementation.
* src/w32term.c (Fx_focus_frame): Remove.
(x_focus_on_frame): Rename to...
(x_focus_frame): W32 implementation.
* src/w32term.h (x_focus_on_frame): Remove prototype.
* src/w32fns.c (Fx_focus_frame): Remove.
(syms_of_w32fns): Do not defsubr it.
* src/frame.c (Fx_focus_frame): Define here.
(syms_of_frame): Defsubr here.
* src/gtkutil.c (xg_tool_bar_callback): Use x_focus_frame.
* lisp/frame.el (x-focus-frame): Mark as declared in frame.c.
(x_menubar_window_to_frame): Remove prototypes.
* xfns.c (x_window_to_frame, x_any_window_to_frame)
(x_menubar_window_to_frame, x_top_window_to_frame):
Move from here...
* xterm.c (x_window_to_frame, x_any_window_to_frame)
(x_menubar_window_to_frame, x_top_window_to_frame):
...to here and convert all but the last to static.
This bug was introduced by my 2013-08-26 patch, which incorrectly
assumed that the terminfo implementation doesn't use termcap buffers.
* term.c (init_tty) [TERMINFO]: Remove optimization, as
these buffers apparently are used after all.
* termchar.h (TERMCAP_BUFFER_SIZE) [TERMINFO]: Define here too.
(struct tty_display_info): Define members termcap_term_buffer and
termcap_strings_buffer even if TERMINFO.
Fixes: debbugs:15222
* src/data.c: Change comparison functions' interface and
implementation
* src/lisp.h: Make arithcompare available for efficient two arg
comparisons
* src/bytecode.c: Use arithcompare
* src/fileio.c: Use new interface
* test/automated/data-tests.el: New tests for comparison functions
* etc/NEWS
* frame.h (struct frame): Remove force_flush_display_p.
* dispnew.c (update_frame): Adjust user and don't call
flush_frame here. The comment has said that there was an issues
with redisplaying fringes, but I don't see any differences with
and without this hack. Hopefully we can continue without it.
* xdisp.c (clear_garbaged_frames): Adjust user and do not clear
current frame matrices twice if resized_p is set.