aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--configure.ac35
-rw-r--r--doc/lispref/ChangeLog8
-rw-r--r--doc/lispref/functions.texi2
-rw-r--r--doc/lispref/intro.texi2
-rw-r--r--doc/lispref/syntax.texi4
-rw-r--r--doc/lispref/variables.texi2
-rw-r--r--etc/NEWS936
-rw-r--r--lisp/ChangeLog33
-rw-r--r--lisp/emacs-lisp/package.el14
-rw-r--r--lisp/gnus/ChangeLog6
-rw-r--r--lisp/gnus/nnfolder.el29
-rw-r--r--lisp/mail/rmail.el2
-rw-r--r--lisp/mail/rmailmm.el4
-rw-r--r--lisp/net/mairix.el10
-rw-r--r--lisp/net/tramp-sh.el13
-rw-r--r--lisp/net/tramp-smb.el2
-rw-r--r--lisp/org/ChangeLog7
-rw-r--r--msdos/ChangeLog5
-rw-r--r--msdos/sed1v2.inp2
-rw-r--r--src/ChangeLog46
-rw-r--r--src/Makefile.in10
-rw-r--r--src/coding.c3
-rw-r--r--src/coding.h2
-rw-r--r--src/dispextern.h13
-rw-r--r--src/gtkutil.c98
-rw-r--r--src/xdisp.c7
-rw-r--r--src/xterm.h7
28 files changed, 699 insertions, 617 deletions
diff --git a/ChangeLog b/ChangeLog
index 9623763b950..e8363efde2d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
12012-12-30 Jan Djärv <jan.h.d@swipnet.se>
2
3 * configure.ac: Check for GtkHandlebox.
4 Check for GtkTearoffMenuItem.
5 New enable: --enable-gtk-deprecation-warnings, default off.
6 (HAVE_GTK3): If above enable is off, add
7 -DGDK_DISABLE_DEPRECATION_WARNINGS to GTK_CFLAGS.
8
92012-12-30 Andreas Schwab <schwab@linux-m68k.org>
10
11 * configure.ac (TEMACS_LDFLAGS2): Don't define.
12 (LIBS_GNUSTEP): Set for GNUstep and substitute.
13 (LD_SWITCH_SYSTEM_TEMACS): Don't set for GNUstep.
14
12012-12-27 Glenn Morris <rgm@gnu.org> 152012-12-27 Glenn Morris <rgm@gnu.org>
2 16
3 * configure.ac (emacs_config_options): New. 17 * configure.ac (emacs_config_options): New.
diff --git a/configure.ac b/configure.ac
index 4d829963ee2..6bf7382e3a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -361,6 +361,11 @@ AC_ARG_ENABLE(autodepend,
361 found])], 361 found])],
362[ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes]) 362[ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
363 363
364AC_ARG_ENABLE(gtk-deprecation-warnings,
365[AS_HELP_STRING([--enable-gtk-deprecation-warnings],
366 [Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])],
367[ac_enable_gtk_deprecation_warnings="${enableval}"],[])
368
364#### Make srcdir absolute, if it isn't already. It's important to 369#### Make srcdir absolute, if it isn't already. It's important to
365#### avoid running the file name through pwd unnecessarily, since pwd can 370#### avoid running the file name through pwd unnecessarily, since pwd can
366#### give you automounter prefixes, which can go away. We do all this 371#### give you automounter prefixes, which can go away. We do all this
@@ -1477,8 +1482,8 @@ tmp_CPPFLAGS="$CPPFLAGS"
1477tmp_CFLAGS="$CFLAGS" 1482tmp_CFLAGS="$CFLAGS"
1478CPPFLAGS="$CPPFLAGS -x objective-c" 1483CPPFLAGS="$CPPFLAGS -x objective-c"
1479CFLAGS="$CFLAGS -x objective-c" 1484CFLAGS="$CFLAGS -x objective-c"
1480TEMACS_LDFLAGS2="\${LDFLAGS}"
1481GNU_OBJC_CFLAGS= 1485GNU_OBJC_CFLAGS=
1486LIBS_GNUSTEP=
1482if test "${with_ns}" != no; then 1487if test "${with_ns}" != no; then
1483 if test "${opsys}" = darwin; then 1488 if test "${opsys}" = darwin; then
1484 NS_IMPL_COCOA=yes 1489 NS_IMPL_COCOA=yes
@@ -1505,9 +1510,9 @@ if test "${with_ns}" != no; then
1505 CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}" 1510 CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1506 CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}" 1511 CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1507 LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}" 1512 LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
1513 LIBS_GNUSTEP="-lgnustep-gui -lgnustep-base -lobjc -lpthread"
1508 LIB_STANDARD= 1514 LIB_STANDARD=
1509 START_FILES= 1515 START_FILES=
1510 TEMACS_LDFLAGS2=
1511 dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1. 1516 dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1.
1512 dnl If they had chosen to either define it or not, we could have 1517 dnl If they had chosen to either define it or not, we could have
1513 dnl just used AC_CHECK_DECL here. 1518 dnl just used AC_CHECK_DECL here.
@@ -1558,7 +1563,7 @@ fail;
1558 fi 1563 fi
1559fi 1564fi
1560 1565
1561AC_SUBST(TEMACS_LDFLAGS2) 1566AC_SUBST(LIBS_GNUSTEP)
1562 1567
1563INSTALL_ARCH_INDEP_EXTRA=install-etc 1568INSTALL_ARCH_INDEP_EXTRA=install-etc
1564ns_self_contained=no 1569ns_self_contained=no
@@ -1998,6 +2003,9 @@ if test "${with_gtk3}" = "yes" || test "${with_gtk}" = "yes" || test "$USE_X_TOO
1998 GTK_OBJ=emacsgtkfixed.o 2003 GTK_OBJ=emacsgtkfixed.o
1999 term_header=gtkutil.h 2004 term_header=gtkutil.h
2000 USE_GTK_TOOLKIT="GTK3" 2005 USE_GTK_TOOLKIT="GTK3"
2006 if test "x$ac_enable_gtk_deprecation_warnings" = x; then
2007 GTK_CFLAGS="$GTK_CFLAGS -DGDK_DISABLE_DEPRECATION_WARNINGS"
2008 fi
2001 else 2009 else
2002 check_gtk2=yes 2010 check_gtk2=yes
2003 gtk3_pkg_errors="$GTK_PKG_ERRORS " 2011 gtk3_pkg_errors="$GTK_PKG_ERRORS "
@@ -2073,6 +2081,23 @@ if test "${HAVE_GTK}" = "yes"; then
2073 AC_CHECK_FUNCS(gtk_file_selection_new) 2081 AC_CHECK_FUNCS(gtk_file_selection_new)
2074 fi 2082 fi
2075 2083
2084 dnl Same as above for gtk_handle_box.
2085 HAVE_GTK_HANDLE_BOX=no
2086 AC_CHECK_DECL(GTK_TYPE_HANDLE_BOX, HAVE_GTK_HANDLE_BOX=yes,
2087 HAVE_GTK_HANDLE_BOX=no, [AC_INCLUDES_DEFAULT
2088#include <gtk/gtk.h>])
2089 if test "$HAVE_GTK_HANDLE_BOX" = yes; then
2090 AC_CHECK_FUNCS(gtk_handle_box_new)
2091 fi
2092
2093 dnl Same as above for gtk_tearoff_menu_item.
2094 HAVE_GTK_TEAROFF_MENU_ITEM=no
2095 AC_CHECK_DECL(GTK_TYPE_TEAROFF_MENU_ITEM, HAVE_GTK_TEAROFF_MENU_ITEM=yes,
2096 HAVE_GTK_TEAROFF_MENU_ITEM=no, [AC_INCLUDES_DEFAULT
2097#include <gtk/gtk.h>])
2098 if test "$HAVE_GTK_TEAROFF_MENU_ITEM" = yes; then
2099 AC_CHECK_FUNCS(gtk_tearoff_menu_item_new)
2100 fi
2076 2101
2077 dnl Check for functions introduced in 2.14 and later. 2102 dnl Check for functions introduced in 2.14 and later.
2078 AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \ 2103 AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \
@@ -4348,10 +4373,6 @@ case "$opsys" in
4348 *) LD_SWITCH_SYSTEM_TEMACS= ;; 4373 *) LD_SWITCH_SYSTEM_TEMACS= ;;
4349esac 4374esac
4350 4375
4351if test "$NS_IMPL_GNUSTEP" = "yes"; then
4352 LD_SWITCH_SYSTEM_TEMACS="${LD_SWITCH_SYSTEM_TEMACS} -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES} -lgnustep-gui -lgnustep-base -lobjc -lpthread"
4353fi
4354
4355AC_SUBST(LD_SWITCH_SYSTEM_TEMACS) 4376AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
4356 4377
4357 4378
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index b2f89024726..2036831cb89 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,11 @@
12012-12-30 Wolfgang Jenkner <wjenkner@inode.at>
2
3 * functions.texi (Declare Form):
4 * intro.texi (A Sample Function Description):
5 * syntax.texi (Syntax Table Internals, Syntax Table Functions):
6 * variables.texi (Using Lexical Binding): Don't use @var or CAPS
7 in @def.. commands. (Bug#13292)
8
12012-12-29 Eli Zaretskii <eliz@gnu.org> 92012-12-29 Eli Zaretskii <eliz@gnu.org>
2 10
3 * files.texi (Changing Files): Document the return values of 11 * files.texi (Changing Files): Document the return values of
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 531172031dc..10041bb664a 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -1266,7 +1266,7 @@ obsolete, or giving its forms a special @key{TAB} indentation
1266convention in Emacs Lisp mode. 1266convention in Emacs Lisp mode.
1267 1267
1268@anchor{Definition of declare} 1268@anchor{Definition of declare}
1269@defmac declare @var{specs}@dots{} 1269@defmac declare specs@dots{}
1270This macro ignores its arguments and evaluates to @code{nil}; it has 1270This macro ignores its arguments and evaluates to @code{nil}; it has
1271no run-time effect. However, when a @code{declare} form occurs in the 1271no run-time effect. However, when a @code{declare} form occurs in the
1272@var{declare} argument of a @code{defun} or @code{defsubst} function 1272@var{declare} argument of a @code{defun} or @code{defsubst} function
diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi
index 12463dac09c..bee43a9bc3f 100644
--- a/doc/lispref/intro.texi
+++ b/doc/lispref/intro.texi
@@ -408,7 +408,7 @@ stands for zero or more arguments. Parentheses are used when several
408arguments are grouped into additional levels of list structure. Here 408arguments are grouped into additional levels of list structure. Here
409is an example: 409is an example:
410 410
411@defspec count-loop (@var{var} [@var{from} @var{to} [@var{inc}]]) @var{body}@dots{} 411@defspec count-loop (var [from to [inc]]) body@dots{}
412This imaginary special form implements a loop that executes the 412This imaginary special form implements a loop that executes the
413@var{body} forms and then increments the variable @var{var} on each 413@var{body} forms and then increments the variable @var{var} on each
414iteration. On the first iteration, the variable has the value 414iteration. On the first iteration, the variable has the value
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi
index c773ca74d96..777bae6573b 100644
--- a/doc/lispref/syntax.texi
+++ b/doc/lispref/syntax.texi
@@ -506,7 +506,7 @@ This function returns the current syntax table, which is the table for
506the current buffer. 506the current buffer.
507@end defun 507@end defun
508 508
509@defmac with-syntax-table @var{table} @var{body}@dots{} 509@defmac with-syntax-table table body@dots{}
510This macro executes @var{body} using @var{table} as the current syntax 510This macro executes @var{body} using @var{table} as the current syntax
511table. It returns the value of the last form in @var{body}, after 511table. It returns the value of the last form in @var{body}, after
512restoring the old current syntax table. 512restoring the old current syntax table.
@@ -998,7 +998,7 @@ corresponds to each syntax flag.
998@samp{4} @tab @code{(lsh 1 19)} 998@samp{4} @tab @code{(lsh 1 19)}
999@end multitable 999@end multitable
1000 1000
1001@defun string-to-syntax @var{desc} 1001@defun string-to-syntax desc
1002Given a syntax descriptor @var{desc} (a string), this function returns 1002Given a syntax descriptor @var{desc} (a string), this function returns
1003the corresponding raw syntax descriptor. 1003the corresponding raw syntax descriptor.
1004@end defun 1004@end defun
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 4103c30f663..79f5eaa7c26 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1057,7 +1057,7 @@ variables}. Every variable that has been defined with @code{defvar},
1057(@pxref{Defining Variables}). All other variables are subject to 1057(@pxref{Defining Variables}). All other variables are subject to
1058lexical binding. 1058lexical binding.
1059 1059
1060@defun special-variable-p SYMBOL 1060@defun special-variable-p symbol
1061This function returns non-@code{nil} if @var{symbol} is a special 1061This function returns non-@code{nil} if @var{symbol} is a special
1062variable (i.e., it has a @code{defvar}, @code{defcustom}, or 1062variable (i.e., it has a @code{defvar}, @code{defcustom}, or
1063@code{defconst} variable definition). Otherwise, the return value is 1063@code{defconst} variable definition). Otherwise, the return value is
diff --git a/etc/NEWS b/etc/NEWS
index 0139c8da15d..eabb0f266b7 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -231,323 +231,263 @@ directory where Emacs was running.
231 231
232* Installation Changes in Emacs 24.3 232* Installation Changes in Emacs 24.3
233 233
234--- 234** The default X toolkit is now Gtk+ version 3.
235** The default toolkit has been changed to Gtk+ version 3. 235If you don't pass `--with-x-toolkit' to configure, or if you use
236If you don't pass --with-x-toolkit to configure or if you pass 236`--with-x-toolkit=gtk' or `--with-x-toolkit=yes', configure will try
237--with-x-toolkit=gtk or --with-x-toolkit=yes, configure will try to build 237to build with Gtk+ version 3, and if that fails, try Gtk+ version 2.
238with Gtk+ version 3, and if that fails, try Gtk+ version 2.
239You can explicitly require a specific version by passing 238You can explicitly require a specific version by passing
240--with-x-toolkit=gtk2 or --with-x-toolkit=gtk3 to configure. 239`--with-x-toolkit=gtk2' or `--with-x-toolkit=gtk3' to configure.
241
242---
243** New configure option '--without-all' to disable additional features.
244This disables most of the features that are normally enabled by default.
245 240
246--- 241** New configure option `--enable-link-time-optimization', to utilize
247** New configure option '--enable-link-time-optimization' to utilize
248an appropriate feature provided by GCC since version 4.5.0. 242an appropriate feature provided by GCC since version 4.5.0.
249 243
250--- 244** New configure option `--without-all' to disable most of the optional
251** New configure option '--enable-gcc-warnings', intended for developers. 245features (image support, etc.) that are normally enabled by default.
252If building with GCC, this enables compile-time checks that warn about
253possibly-questionable C code. On a recent GNU system there should be
254no warnings; on older and on non-GNU systems the generated warnings
255may be useful.
256 246
257--- 247** New configure option `--enable-gcc-warnings' (for developing/debugging
258** The configure option '--enable-use-lisp-union-type' has been 248Emacs). If building with GCC, this enables compile-time checks that
259renamed to '--enable-check-lisp-object-type', as the resulting 249warn about possibly-questionable C code. On a recent GNU system there
250should be no warnings; on older and on non-GNU systems the generated
251warnings may be useful.
252
253** The configure option `--enable-use-lisp-union-type' has been
254renamed to `--enable-check-lisp-object-type', as the resulting
260Lisp_Object type no longer uses a union to implement the compile time 255Lisp_Object type no longer uses a union to implement the compile time
261check that this option enables. 256check that this option enables.
262 257
263--- 258** The configure option `--disable-maintainer-mode' has been removed,
264** The configure option '--disable-maintainer-mode' has been removed,
265as it was confusingly-named and rarely useful. 259as it was confusingly-named and rarely useful.
266 260
267---
268** You can use `NO_BIN_LINK=t make install' to prevent the installation
269overwriting "emacs" in the installation bin/ directory with a link
270to emacs-VERSION.
271
272---
273** The configure options `--program-prefix', `--program-suffix', and 261** The configure options `--program-prefix', `--program-suffix', and
274`--program-transform-name' apply to more than just the installed 262`--program-transform-name' apply to more than just the installed
275binaries. Now they also affect the man pages, icons, and the 263binaries. Now they also affect the man pages, icons, and the
276etc/emacs.desktop file; but not the info pages, since this would break 264etc/emacs.desktop file; but not the info pages, since this would break
277links between the various manuals. 265links between the various manuals.
278 266
279--- 267** You can use `NO_BIN_LINK=t make install' to prevent the installation
268overwriting "emacs" in the installation bin/ directory with a link
269to "emacs-VERSION".
270
280** Emacs uses libtinfo in preference to libncurses, if available. 271** Emacs uses libtinfo in preference to libncurses, if available.
281 272
282---
283** On FreeBSD and NetBSD, configure no longer adds /usr/local/lib and 273** On FreeBSD and NetBSD, configure no longer adds /usr/local/lib and
284/usr/pkg/lib to the linker search path. You must add them yourself if 274/usr/pkg/lib to the linker search path. You must add them yourself if
285you want them. 275you want them.
286 276
287--- 277** The standalone scripts `rcs-checkin' and `vcdiff' have been removed
288** The standalone scripts rcs-checkin and vcdiff have been removed
289(from the bin and libexec directories, respectively). The former is 278(from the bin and libexec directories, respectively). The former is
290no longer relevant, the latter is replaced by lisp (in vc-sccs.el). 279no longer relevant, the latter is replaced by lisp (in vc-sccs.el).
291 280
292 281
293* Startup Changes in Emacs 24.3 282* Startup Changes in Emacs 24.3
294 283
295+++
296** Emacs no longer searches for `leim-list.el' files beneath the standard 284** Emacs no longer searches for `leim-list.el' files beneath the standard
297lisp/ directory. There should not be any there anyway. If you have 285lisp/ directory. There should not be any there anyway. If you have
298been adding them there, put them somewhere else, eg site-lisp. 286been adding them there, put them somewhere else; e.g., site-lisp.
299 287
300---
301** The `--no-site-lisp' command line option now works for Nextstep builds. 288** The `--no-site-lisp' command line option now works for Nextstep builds.
302 289
303 290
304* Changes in Emacs 24.3 291* Changes in Emacs 24.3
305 292
306+++ 293** Help
307** Most y-or-n prompts now allow you to scroll the selected window.
308Typing C-v or M-v at a y-or-n prompt scrolls forward or backward
309respectively, without exiting from the prompt.
310
311** Mode line changes
312---
313*** New option `mode-line-default-help-echo' specifies the help text
314(shown in a tooltip or in the echo area) for any part of the mode line
315that does not have its own specialized help text.
316+++
317*** You can now click mouse-3 in the coding system indicator to invoke
318`set-buffer-file-coding-system'.
319
320** Help changes
321 294
322+++ 295*** `C-h f' (`describe-function') can now perform autoloading.
323*** `C-h f' (describe-function) can now perform autoloading.
324When this command is called for an autoloaded function whose docstring 296When this command is called for an autoloaded function whose docstring
325contains a key substitution construct, that function's library is 297contains a key substitution construct, that function's library is
326automatically loaded, so that the documentation can be shown 298automatically loaded, so that the documentation can be shown
327correctly. To disable this, set `help-enable-auto-load' to nil. 299correctly. To disable this, set `help-enable-auto-load' to nil.
328 300
329---
330*** `C-h f' now reports previously-autoloaded functions as "autoloaded", 301*** `C-h f' now reports previously-autoloaded functions as "autoloaded",
331even after their associated libraries have been loaded (and the 302even after their associated libraries have been loaded (and the
332autoloads have been redefined as functions). 303autoloads have been redefined as functions).
333 304
334** Minibuffer changes 305** ImageMagick
335---
336*** In minibuffer filename prompts, `C-M-f' and `C-M-b' now move to the
337next and previous path separator, respectively.
338+++
339*** minibuffer-electric-default-mode can rewrite (default ...) to [...].
340Just set minibuffer-eldef-shorten-default to t before enabling the mode.
341 306
342+++ 307*** Images displayed via ImageMagick now support transparency and the
343** ImageMagick support, if available, is automatically enabled. 308:background image specification property.
309
310*** When available, ImageMagick support is automatically enabled.
344It is no longer necessary to call `imagemagick-register-types' 311It is no longer necessary to call `imagemagick-register-types'
345explicitly to install ImageMagick image types; that function is called 312explicitly to install ImageMagick image types; that function is called
346automatically at startup, or when customizing an imagemagick- option. 313automatically at startup, or when customizing an imagemagick- option.
347+++ 314
348*** Setting `imagemagick-types-inhibit' to t now disables the use of 315*** Setting `imagemagick-types-inhibit' to t now disables the use of
349ImageMagick to view images. You must call imagemagick-register-types 316ImageMagick to view images. (You must call `imagemagick-register-types'
350afterwards if you do not use customize to change this. 317afterwards if you do not use customize to change this.)
351+++ 318
352*** The new variable `imagemagick-enabled-types' also affects which 319*** The new variable `imagemagick-enabled-types' also affects which
353ImageMagick types are treated as images. The function 320ImageMagick types are treated as images. The function
354`imagemagick-filter-types' returns the list of types that will be 321`imagemagick-filter-types' returns the list of types that will be
355treated as images. 322treated as images.
356---
357*** Images displayed via ImageMagick now support transparency and the
358:background image spec property.
359 323
360** Server and client changes 324** Minibuffer
361+++ 325
326*** In minibuffer filename prompts, `C-M-f' and `C-M-b' now move to the
327next and previous path separator, respectively.
328
329*** `minibuffer-electric-default-mode' can shorten "(default ...)" to "[...]"
330in minibuffer prompts. Just set `minibuffer-eldef-shorten-default'
331non-nil before enabling the mode.
332
333** Mode line
334
335*** New option `mode-line-default-help-echo' specifies the help text
336(shown in a tooltip or in the echo area) for any part of the mode line
337that does not have its own specialized help text.
338
339*** You can now click mouse-3 in the coding system indicator to invoke
340`set-buffer-file-coding-system'.
341
342** Server and client
343
362*** emacsclient now obeys string values for `initial-buffer-choice', 344*** emacsclient now obeys string values for `initial-buffer-choice',
363if it is told to open a new frame without specifying any file to visit 345if it is told to open a new frame without specifying any file to visit
364or expression to evaluate. 346or expression to evaluate.
365---
366*** New option `server-auth-key' specifies a shared server key.
367
368+++
369** In the Package Menu, newly-available packages are listed as "new",
370and sorted above the other "available" packages by default.
371 347
372+++ 348*** New option `server-auth-key' specifies a shared server key.
373** `C-x C-q' is now bound to the new minor mode `read-only-mode'.
374This minor mode replaces `toggle-read-only', which is now obsolete.
375 349
376+++
377** Emacs now generates backtraces on fatal errors. 350** Emacs now generates backtraces on fatal errors.
378On encountering a fatal error, Emacs now outputs a textual description 351On encountering a fatal error, Emacs now outputs a textual description
379of the fatal signal, and a short backtrace on platforms like glibc 352of the fatal signal, and a short backtrace on platforms like glibc
380that support backtraces. 353that support backtraces.
381 354
382--- 355** `C-x C-q' is now bound to the new minor mode `read-only-mode'.
356This minor mode replaces `toggle-read-only', which is now obsolete.
357
358** Most `y-or-n' prompts now allow you to scroll the selected window.
359Typing `C-v' or `M-v' at a y-or-n prompt scrolls forward or backward
360respectively, without exiting from the prompt.
361
362** In the Package Menu, newly-available packages are listed as "new",
363and sorted above the other "available" packages by default.
364
383** If your Emacs was built from a bzr checkout, the new variable 365** If your Emacs was built from a bzr checkout, the new variable
384`emacs-bzr-version' contains information about the bzr revision used. 366`emacs-bzr-version' contains information about the bzr revision used.
385 367
386+++ 368** New option `create-lockfiles' specifies usage of lockfiles.
387** New variable `create-lockfiles' specifies usage of lockfiles.
388It defaults to t. Changing it to nil inhibits the creation of lock 369It defaults to t. Changing it to nil inhibits the creation of lock
389files (use this with caution). 370files (use this with caution).
390 371
391+++ 372** New option `enable-remote-dir-locals', if non-nil, allows directory-local
392** Using "unibyte: t" in Lisp source files is obsolete. 373variables on remote hosts.
393Use "coding: raw-text" instead.
394 374
395+++
396** Setting `enable-remote-dir-locals' to non-nil allows directory
397local variables on remote hosts.
398
399---
400** The entry for PCL-CVS has been removed from the Tools menu. 375** The entry for PCL-CVS has been removed from the Tools menu.
401The PCL-CVS commands are still available via the keyboard. 376The PCL-CVS commands are still available via the keyboard.
402 377
403** Internationalization changes 378** Using "unibyte: t" in Lisp source files is obsolete.
404--- 379Use "coding: raw-text" instead.
380
381** Internationalization
382
405*** New language environment: Persian. 383*** New language environment: Persian.
406--- 384
407*** New input method `vietnamese-vni'. 385*** New input method `vietnamese-vni'.
408 386
409** Nextstep (GNUstep / Mac OS X) port changes 387** Nextstep (GNUstep / Mac OS X) port
410--- 388
411*** Fullscreen and frame parameter fullscreen is supported. 389*** Support for fullscreen and the frame parameter fullscreen.
412--- 390
413*** A file dialog is used for open/save operations initiated from the 391*** A file dialog is used for open/save operations initiated from the
414menu/toolbar. 392menu/toolbar.
415 393
416 394
417* Editing Changes in Emacs 24.3 395* Editing Changes in Emacs 24.3
418 396
419** Navigation command changes 397** Search and Replace
420+++
421*** New binding `M-g c' for `goto-char'.
422+++
423*** New binding `M-g TAB' for `move-to-column'.
424+++
425*** `M-g TAB' (`move-to-column') prompts for a column number if called
426interactively with no prefix arg. Previously, it moved to column 1.
427 398
428** Search and Replace changes
429+++
430*** Non-regexp Isearch now performs "lax" space matching. 399*** Non-regexp Isearch now performs "lax" space matching.
431Each sequence of spaces in the supplied search string may match any 400Each sequence of spaces in the supplied search string may match any
432sequence of one or more whitespace characters, as specified by the 401sequence of one or more whitespace characters, as specified by the
433variable `search-whitespace-regexp'. (This variable is also used by a 402variable `search-whitespace-regexp'. (This variable is also used by a
434similar existing feature for regexp Isearch). 403similar existing feature for regexp Isearch.)
435+++ 404
436*** New Isearch command `M-s SPC' toggles lax space matching. 405*** New Isearch command `M-s SPC' toggles lax space matching.
437This applies to both ordinary and regexp Isearch. 406This applies to both ordinary and regexp Isearch.
438+++ 407
439*** New option `replace-lax-whitespace'. 408*** New option `replace-lax-whitespace'.
440If non-nil, `query-replace' uses flexible whitespace matching too. 409If non-nil, `query-replace' uses flexible whitespace matching too.
441The default is nil. 410The default is nil.
442+++ 411
443*** Global `M-s _' starts a symbol (identifier) incremental search, 412*** Global `M-s _' starts a symbol (identifier) incremental search,
444and `M-s _' in Isearch toggles symbol search mode. 413and `M-s _' in Isearch toggles symbol search mode.
445`M-s c' in Isearch toggles search case-sensitivity. 414`M-s c' in Isearch toggles search case-sensitivity.
446 415
447+++ 416** Navigation commands
448** `C-x 8 RET' is now bound to `insert-char', which is now a command.
449`ucs-insert' is now an obsolete alias for `insert-char'.
450 417
451--- 418*** New binding `M-g c' for `goto-char'.
452** The `z' key no longer has a binding in most special modes. 419
453It used to be bound to `kill-this-buffer', but `z' is too easy to 420*** New binding `M-g TAB' for `move-to-column'.
454accidentally type. 421
422*** `M-g TAB' (`move-to-column') prompts for a column number if called
423interactively with no prefix arg. Previously, it moved to column 1.
424
425** New option `yank-handled-properties' allows processing of text
426properties on yanked text, in ways that are more general than just
427removing them (as is done by `yank-excluded-properties').
455 428
456+++
457** New option `delete-trailing-lines' specifies whether 429** New option `delete-trailing-lines' specifies whether
458M-x delete-trailing-whitespace should delete trailing lines at the end 430M-x delete-trailing-whitespace should delete trailing lines at the end
459of the buffer. It defaults to t. 431of the buffer. It defaults to t.
460 432
461** Register changes
462+++
463*** `C-x r +' is now overloaded to invoke `append-to-register.
464+++
465*** New option `register-separator' specifies the register containing
466the text to put between collected texts for use with M-x
467append-to-register and M-x prepend-to-register.
468
469+++
470** `C-u M-=' now counts lines/words/characters in the entire buffer. 433** `C-u M-=' now counts lines/words/characters in the entire buffer.
471 434
472+++ 435** `C-x 8 RET' is now bound to `insert-char', which is now a command.
473** New command `C-x r M-w' (copy-rectangle-as-kill). 436`ucs-insert' is now an obsolete alias for `insert-char'.
474It copies the region-rectangle as the last rectangle kill.
475
476+++
477** New option `yank-handled-properties' allows processing of text
478properties on yanked text, in more ways that are more general than
479just removing them, as done by `yank-excluded-properties'.
480
481
482* Changes in Specialized Modes and Packages in Emacs 24.3
483 437
484** Apropos 438** The `z' key no longer has a binding in most special modes.
485--- 439It used to be bound to `kill-this-buffer', but `z' is too easy to
486*** The faces used by Apropos are now directly customizable. 440accidentally type.
487These faces are named `apropos-symbol', `apropos-keybinding', and so on;
488see the `apropos' Custom group for details.
489---
490*** The old options whose values specified faces to use were removed
491(i.e. `apropos-symbol-face', `apropos-keybinding-face', etc.).
492 441
493** Buffer Menu 442** New command `C-x r M-w' (`copy-rectangle-as-kill').
494This package has been rewritten to use Tabulated List mode. 443It copies the region-rectangle as the last rectangle kill.
495---
496*** Option `Buffer-menu-buffer+size-width' is now obsolete.
497Use `Buffer-menu-name-width' and `Buffer-menu-size-width' instead.
498 444
499** Calendar 445** Registers
500 446
501+++ 447*** `C-x r +' is now overloaded to invoke `append-to-register'.
502*** You can customize the header text that appears above each calendar month.
503See the variable `calendar-month-header'.
504 448
505+++ 449*** New option `register-separator' specifies the register containing
506*** New LaTeX calendar style, produced by `cal-tex-cursor-week2-summary'. 450the text to put between collected texts for use with
451M-x append-to-register and M-x prepend-to-register.
507 452
508+++ 453
509*** The calendars produced by cal-html include holidays. 454* Changes in Specialized Modes and Packages in Emacs 24.3
510Customize `cal-html-holidays' to change this.
511 455
512** CL 456** Common Lisp emulation (CL)
513 457
514+++
515*** CL's main entry is now (require 'cl-lib). 458*** CL's main entry is now (require 'cl-lib).
516`cl-lib' is like the old `cl' except that it uses the namespace cleanly, 459`cl-lib' is like the old `cl' except that it uses the namespace cleanly;
517i.e. all its definitions have the "cl-" prefix (and internal definitions use 460i.e., all its definitions have the "cl-" prefix (and internal definitions
518the "cl--" prefix). 461use the "cl--" prefix).
519 462
520If `cl' provided a feature under the name `foo', then `cl-lib' provides it 463If `cl' provided a feature under the name `foo', then `cl-lib'
521under the name `cl-foo' instead, with the exceptions of the few definitions 464provides it under the name `cl-foo' instead; with the exceptions of the
522that had to use `foo*' to avoid conflicts with pre-existing Elisp entities, 465few `cl' definitions that had to use `foo*' to avoid conflicts with
523which have not been renamed to `cl-foo*' but just `cl-foo'. 466pre-existing Elisp entities. These have been renamed to `cl-foo'
467rather than `cl-foo*'.
524 468
525The old `cl' is now deprecated and is mainly just a bunch of aliases that 469The old `cl' is now deprecated and is mainly just a bunch of aliases that
526provide the old non-prefixed names. Some exceptions are listed below. 470provide the old, non-prefixed names. Some exceptions are listed below:
527 471
528+++
529*** `cl-flet' is not like `flet' (which is deprecated). 472*** `cl-flet' is not like `flet' (which is deprecated).
530Instead it obeys the behavior of Common-Lisp's `flet'. 473Instead it obeys the behavior of Common-Lisp's `flet'.
531In particular, in cl-flet function definitions are lexically scoped, 474In particular, in cl-flet function definitions are lexically scoped,
532whereas in flet the scoping is dynamic. 475whereas in flet the scoping is dynamic.
533 476
534+++
535*** `cl-labels' is slightly different from `labels'. 477*** `cl-labels' is slightly different from `labels'.
536The difference is that it relies on the `lexical-binding' machinery (as opposed 478The difference is that it relies on the `lexical-binding' machinery
537to the `lexical-let' machinery used previously) to capture definitions in 479(as opposed to the `lexical-let' machinery used previously) to capture
538closures, so such closures will only work if `lexical-binding' is in use. 480definitions in closures, so such closures will only work if `lexical-binding'
481is in use.
539 482
540+++
541*** `cl-letf' is not exactly like `letf'. 483*** `cl-letf' is not exactly like `letf'.
542The only difference is in details that relate to some deprecated usage 484The only difference is in details that relate to some deprecated usage
543of `symbol-function' in place forms. 485of `symbol-function' in place forms.
544 486
545+++
546*** `progv' was rewritten to use the `let' machinery. 487*** `progv' was rewritten to use the `let' machinery.
547A side effect is that vars without corresponding value are bound to nil 488A side effect is that variables without corresponding values are bound
548rather than making them unbound. 489to nil rather than being made unbound.
549 490
550+++
551*** The following methods of extending `setf' are obsolete 491*** The following methods of extending `setf' are obsolete
552(use features from gv.el instead): 492(use features from gv.el instead):
553`define-modify-macro' (use `gv-letplace') 493`define-modify-macro' (use `gv-letplace')
@@ -555,295 +495,281 @@ rather than making them unbound.
555`define-setf-expander' (use `gv-define-setter' or `gv-define-expander') 495`define-setf-expander' (use `gv-define-setter' or `gv-define-expander')
556`get-setf-method' no longer exists (see "Incompatible Lisp Changes") 496`get-setf-method' no longer exists (see "Incompatible Lisp Changes")
557 497
558+++ 498** Diff mode
559** New compilation option `compilation-always-kill'.
560 499
561** Customize 500*** Changes are now highlighted using the same color scheme as in
562--- 501modern VCSes. Deletions are displayed in red (new faces
563*** `custom-reset-button-menu' now defaults to t. 502`diff-refine-removed' and `smerge-refined-removed', and new definition
564--- 503of `diff-removed'), insertions in green (new faces `diff-refine-added'
565*** Non-option variables are never matched in `customize-apropos' and 504and `smerge-refined-added', and new definition of `diff-added').
566`customize-apropos-options' (i.e. the prefix argument does nothing for
567these commands now).
568 505
569--- 506*** The variable `diff-use-changed-face' defines whether to use the
570** `desktop-path' no longer includes the "." directory. 507face `diff-changed', or `diff-removed' and `diff-added' to highlight
571Desktop files are now located in ~/.emacs.d by default. 508changes in context diffs.
509
510*** The new command `diff-delete-trailing-whitespace' removes trailing
511whitespace introduced by a diff.
512
513** Ediff now uses the same color scheme as Diff mode.
514
515** Python mode
516
517A new version of python.el, which provides several new features, including:
518per-buffer shells, better indentation, Python 3 support, and improved
519shell-interaction compatible with iPython (and virtually any other
520text based shell).
521
522*** Some user options have been replaced/renamed, including (old -> new):
523**** python-indent -> python-indent-offset
524**** python-guess-indent -> python-indent-guess-indent-offset
525**** python-pdbtrack-do-tracking-p -> python-pdbtrack-activate
526**** python-use-skeletons -> python-skeleton-autoinsert
527
528*** Some user options have been removed, including:
529
530**** `python-indent-string-contents': Strings are never indented.
531
532**** `python-honour-comment-indentation':
533Comments are always considered as indentation markers.
534
535**** `python-continuation-offset': Indentation is automatically
536calculated in a pep8 compliant way depending on the context.
537
538**** `python-shell-prompt-alist', `python-shell-continuation-prompt-alist':
539Have no direct mapping as the shell interaction is completely different.
540
541**** `python-python-command', `python-jython-command':
542Replaced by `python-shell-interpreter'.
543
544**** `inferior-python-filter-regexp', `python-remove-cwd-from-path',
545`python-pdbtrack-minor-mode-string', `python-source-modes':
546No longer relevant.
547
548*** Some commands have been replaced (old -> new):
549**** python-insert-class -> python-skeleton-class
550**** python-insert-def -> python-skeleton-def
551**** python-insert-for -> python-skeleton-for
552**** python-insert-if -> python-skeleton-if
553**** python-insert-try/except -> python-skeleton-try
554**** python-insert-try/finally -> python-skeleton-try
555**** python-insert-while -> python-skeleton-while
556**** python-find-function -> python-nav-jump-to-defun
557**** python-next-statement -> python-nav-forward-sentence
558**** python-previous-statement -> python-nav-backward-sentence
559**** python-beginning-of-defun-function -> python-nav-beginning-of-defun
560**** python-end-of-defun-function -> python-nav-end-of-defun
561**** python-send-buffer -> python-shell-send-buffer
562**** python-send-defun -> python-shell-send-defun
563**** python-send-region -> python-shell-send-region
564**** python-send-region-and-go -> emulate with python-shell-send-region
565and python-shell-switch-to-shell
566**** python-send-string -> python-shell-send-string
567**** python-switch-to-python -> python-shell-switch-to-shell
568**** python-describe-symbol -> python-eldoc-at-point
572 569
573** D-Bus 570** D-Bus
574 571
575+++
576*** New variables `dbus-compiled-version' and `dbus-runtime-version'. 572*** New variables `dbus-compiled-version' and `dbus-runtime-version'.
577 573
578+++
579*** The D-Bus object manager interface is implemented. 574*** The D-Bus object manager interface is implemented.
580 575
581+++
582*** Variables of type :(u)int32 and :(u)int64 accept floating points, 576*** Variables of type :(u)int32 and :(u)int64 accept floating points,
583if their value does not fit into Emacs's integer range. 577if their value does not fit into Emacs's integer range.
584 578
585+++ 579*** The function `dbus-call-method' is now non-blocking.
586*** The function `dbus-call-method' works non-blocking now, it can be 580It can be interrupted by `C-g'. `dbus-call-method-non-blocking' is obsolete.
587interrupted by C-g. `dbus-call-method-non-blocking' is obsolete.
588 581
589+++ 582*** Signals can also be sent as unicast messages.
590*** Signals can be sent also as unicast message.
591 583
592+++
593*** The argument list of `dbus-register-signal' has been extended, 584*** The argument list of `dbus-register-signal' has been extended,
594according to the new match rule types of D-Bus. See the manual for 585according to the new match rule types of D-Bus.
595details.
596 586
597+++
598*** `dbus-init-bus' supports private connections. 587*** `dbus-init-bus' supports private connections.
599 588
600+++
601*** There is a new function `dbus-setenv'. 589*** There is a new function `dbus-setenv'.
602 590
603** Diff mode 591** `desktop-path' no longer includes the "." directory.
604 592Desktop files are now located in ~/.emacs.d by default.
605---
606*** Changes are now highlighted using the same color scheme as in
607modern VCSes. Deletions are displayed in red (new faces
608`diff-refine-removed' and `smerge-refined-removed', and new definition
609of `diff-removed'), insertions in green (new faces `diff-refine-added'
610and `smerge-refined-added', and new definition of `diff-added').
611
612---
613*** The variable `diff-use-changed-face' defines whether to use the
614face `diff-changed', or `diff-removed' and `diff-added' to highlight
615changes in context diffs.
616
617+++
618*** The new command `diff-delete-trailing-whitespace' removes trailing
619whitespace introduced by a diff.
620 593
621** Dired 594** Dired
622+++ 595
623*** `dired-do-async-shell-command' executes each file sequentially 596*** `dired-do-async-shell-command' executes each file sequentially
624if the command ends in `;' (when operating on multiple files). 597if the command ends in `;' (when operating on multiple files).
625Otherwise, it executes the command on each file in parallel. 598Otherwise, it executes the command on each file in parallel.
626--- 599
627*** Typing M-n in the minibuffer of `dired-do-chmod', `dired-do-chgrp', 600*** Typing `M-n' in the minibuffer of `dired-do-chmod', `dired-do-chgrp',
628`dired-do-chown', `dired-do-touch' pulls the file attributes of the 601`dired-do-chown', and `dired-do-touch' yanks the attributes of the
629file at point. 602file at point.
630+++ 603
631*** When the region is active, `m' (`dired-mark'), `u' (`dired-unmark'), 604*** When the region is active, `m' (`dired-mark'), `u' (`dired-unmark'),
632`DEL' (`dired-unmark-backward'), `d' (`dired-flag-file-deletion') 605`DEL' (`dired-unmark-backward'), and `d' (`dired-flag-file-deletion')
633mark/unmark/flag all files in the active region. 606mark/unmark/flag all files in the active region.
634+++ 607
635*** The minibuffer default for `=' (`dired-diff) has changed. 608*** The minibuffer default for `=' (`dired-diff) has changed.
636It is now the backup file for the file at point, if one exists. 609It is now the backup file for the file at point, if one exists.
637In Transient Mark mode the default is the file at the active mark. 610In Transient Mark mode the default is the file at the active mark.
638+++ 611
639*** `M-=' is no longer bound to `dired-backup-diff' in Dired buffers. 612*** `M-=' is no longer bound to `dired-backup-diff' in Dired buffers.
640The global binding for `M-=', `count-words-region' is in effect. 613The global binding for `M-=', `count-words-region' is in effect.
641 614
642---
643** Ediff now uses the same color scheme as Diff mode.
644
645** ERC 615** ERC
646 616
647+++
648*** New module "notifications", which can send a notification when you 617*** New module "notifications", which can send a notification when you
649receive a private message or your nickname is mentioned. 618receive a private message or your nickname is mentioned.
650 619
651+++
652*** ERC will look up server/channel names via auth-source and use any 620*** ERC will look up server/channel names via auth-source and use any
653channel keys found. 621channel keys found.
654 622
655+++
656*** New option `erc-lurker-hide-list', similar to `erc-hide-list', but 623*** New option `erc-lurker-hide-list', similar to `erc-hide-list', but
657only applies to messages sent by lurkers. 624only applies to messages sent by lurkers.
658 625
659+++ 626** reStructuredText mode
660** Flymake uses fringe bitmaps to indicate errors and warnings.
661See `flymake-fringe-indicator-position', `flymake-error-bitmap' and
662`flymake-warning-bitmap'.
663
664---
665** Follow mode no longer works by using advice.
666The option `follow-intercept-processes' has been removed.
667
668---
669** The FFAP option `ffap-url-unwrap-remote' can now be a list of strings,
670specifying URL types that should be converted to remote file names at
671the FFAP prompt. The default is now '("ftp").
672 627
673--- 628*** Keybindings (see `C-c C-h'), TAB indentation, filling and auto-filling,
674** New Ibuffer `derived-mode' filter, bound to `/ M'. 629fontification, comment handling, and customization have all been revised
675The old binding for `/ M' (filter by used-mode) is now bound to `/ m'. 630and improved.
676 631
677--- 632*** Support for `imenu' and `which-function-mode'.
678** `javascript-generic-mode' is now an obsolete alias for `js-mode'.
679 633
680+++ 634*** The reStructuredText syntax is more closely covered.
681** New option `mouse-avoidance-banish-position' specifies where the 635Sphinx support has been improved.
682`banish' mouse avoidance setting moves the mouse.
683 636
684+++ 637*** `rst-insert-list' inserts new list or continues existing lists.
685** notifications.el supports now version 1.2 of the Notifications API.
686The function `notifications-get-capabilities' returns the supported
687server properties.
688 638
689--- 639*** A negative prefix argument always works for `rst-adjust'.
690** In Perl mode, new option `perl-indent-parens-as-block' causes non-block
691closing brackets to be aligned with the line of the opening bracket.
692 640
693--- 641*** The window configuration is reset after displaying a TOC.
694** In Proced mode, new command `proced-renice' renices marked processes.
695 642
696--- 643*** The constant `rst-version' describes the rst.el package version.
697** Python mode
698 644
699A new version of python.el, which provides several new features, including: 645** Shell Script mode
700per-buffer shells, better indentation, Python 3 support, and improved
701shell-interaction compatible with iPython (and virtually any other
702text based shell).
703 646
704*** Some user options have been replaced/renamed: 647*** Pairing of parens/quotes uses `electric-pair-mode' instead of skeleton-pair.
705Old defcustom: | New defcustom:
706python-indent | python-indent-offset
707python-guess-indent | python-indent-guess-indent-offset
708python-pdbtrack-do-tracking-p | python-pdbtrack-activate
709python-use-skeletons | python-skeleton-autoinsert
710 648
711*** Some user options have been removed: 649*** `sh-electric-here-document-mode' now controls auto-insertion of here-docs.
712 650
713**** `python-indent-string-contents': Strings are never indented. 651*** `sh-use-smie' lets you choose a new indentation and navigation code.
714 652
715**** `python-honour-comment-indentation': 653** VHDL mode
716Comments are never considered as indentation markers themselves.
717 654
718**** `python-continuation-offset': Indentation is automatically 655*** The free software compiler GHDL is supported (and now the default).
719calculated in a pep8 compliant way depending on the context.
720 656
721**** `python-shell-prompt-alist', `python-shell-continuation-prompt-alist': 657*** Support for the VHDL-AMS packages has been added/updated.
722Have no direct mapping as the shell interaction is completely different.
723 658
724**** `python-python-command', `python-jython-command': 659*** Updated to the 2002 revision of the VHDL standard.
725Replaced by `python-shell-interpreter'.
726 660
727**** `inferior-python-filter-regexp', `python-remove-cwd-from-path', 661*** Accepts \r and \f as whitespace.
728`python-pdbtrack-minor-mode-string', `python-source-modes':
729No longer relevant.
730 662
731*** Some commands have been replaced: 663** Apropos
732Old command | New command
733python-insert-class | python-skeleton-class
734python-insert-def | python-skeleton-def
735python-insert-for | python-skeleton-for
736python-insert-if | python-skeleton-if
737python-insert-try/except | python-skeleton-try
738python-insert-try/finally | python-skeleton-try
739python-insert-while | python-skeleton-while
740python-find-function | python-nav-jump-to-defun
741python-next-statement | python-nav-forward-sentence
742python-previous-statement | python-nav-backward-sentence
743python-beginning-of-defun-function | python-nav-beginning-of-defun
744python-end-of-defun-function | python-nav-end-of-defun
745python-send-buffer | python-shell-send-buffer
746python-send-defun | python-shell-send-defun
747python-send-region | python-shell-send-region
748python-send-region-and-go | Emulate with python-shell-send-region and
749 python-shell-switch-to-shell
750python-send-string | python-shell-send-string
751python-switch-to-python | python-shell-switch-to-shell
752python-describe-symbol | python-eldoc-at-point
753 664
754--- 665*** The faces used by Apropos are now directly customizable.
755** reStructuredText mode 666These faces are named `apropos-symbol', `apropos-keybinding', and so on;
667see the `apropos' Custom group for details.
756 668
757*** Keybindings (see `C-c C-h'), TAB indentation, filling and auto-filling, 669*** The old options whose values specified faces to use have been removed
758fontification, comment handling, and customization have all been revised 670(i.e. `apropos-symbol-face', `apropos-keybinding-face', etc.).
759and improved.
760 671
761*** Support for `imenu' and `which-function-mode'. 672** Buffer Menu
762 673
763*** The reStructuredText syntax is more closely covered. 674*** This package has been rewritten to use Tabulated List mode.
764Sphinx support has been improved.
765 675
766*** `rst-insert-list' inserts new list or continues existing lists. 676*** Option `Buffer-menu-buffer+size-width' is now obsolete.
677Use `Buffer-menu-name-width' and `Buffer-menu-size-width' instead.
767 678
768*** A negative prefix argument always works for `rst-adjust'. 679** Calendar
769 680
770*** The window configuration is reset after displaying a TOC. 681*** You can customize the header text that appears above each calendar month.
682See the variable `calendar-month-header'.
771 683
772*** The constant `rst-version' describes the rst.el package version. 684*** New LaTeX calendar style, produced by `cal-tex-cursor-week2-summary'.
773 685
774--- 686*** The calendars produced by cal-html include holidays.
775** Shell Script mode 687Customize `cal-html-holidays' to change this.
776 688
777*** Pairing of parens/quotes uses electric-pair-mode instead of skeleton-pair. 689** Compile has a new option `compilation-always-kill'.
778 690
779*** `sh-electric-here-document-mode' now controls auto-insertion of here-docs. 691** Customize
780 692
781*** `sh-use-smie' lets you choose a new indentation and navigation code. 693*** `custom-reset-button-menu' now defaults to t.
782 694
783+++ 695*** Non-option variables are never matched in `customize-apropos' and
784** New option `async-shell-command-buffer' specifies the buffer to use 696`customize-apropos-options' (i.e., the prefix argument does nothing for
785for a new asynchronous `shell-command' when the default output buffer 697these commands now).
786`*Async Shell Command*' is already in use.
787 698
788--- 699** Term
789** SQL mode has a new option `sql-db2-escape-newlines'.
790If non-nil, newlines sent to the command interpreter will be escaped
791by a backslash. The default does not escape the newlines and assumes
792that the sql statement will be terminated by a semicolon.
793 700
794** Tabulated List and packages derived from it 701*** The variables `term-default-fg-color' and `term-default-bg-color'
795+++ 702are now deprecated in favor of the customizable face `term'.
796*** New command `tabulated-list-sort', bound to `S', sorts the column
797at point, or the Nth column if a numeric prefix argument is given.
798 703
799** Term
800+++
801*** The variables `term-default-fg-color' and `term-default-bg-color' are
802now deprecated in favor of the customizable face `term'.
803+++
804*** You can customize how to display ANSI terminal colors and styles 704*** You can customize how to display ANSI terminal colors and styles
805by customizing the corresponding `term-color-<COLOR>', 705by customizing the corresponding `term-color-<COLOR>',
806`term-color-underline' and `term-color-bold' faces. 706`term-color-underline' and `term-color-bold' faces.
807 707
808** Tramp 708** Tramp
809+++ 709
810*** The syntax has been extended in order to allow ad-hoc proxy definitions. 710*** The syntax has been extended in order to allow ad-hoc proxy definitions.
811See the manual for details. 711
812+++ 712*** Remote processes are now also supported on remote MS-Windows hosts.
813*** Remote processes are now supported also on remote Windows host.
814 713
815** URL 714** URL
816+++ 715
817*** Structs made by `url-generic-parse-url' have nil `attributes' slot. 716*** Structs made by `url-generic-parse-url' have nil `attributes' slot.
818Previously, this slot stored semicolon-separated attribute-value pairs 717Previously, this slot stored semicolon-separated attribute-value pairs
819appended to some imap URLs, but this is not compatible with RFC 3986. 718appended to some imap URLs, but this is not compatible with RFC 3986.
820So now the `filename' slot stores the entire path and query components 719So now the `filename' slot stores the entire path and query components,
821and the `attributes' slot is always nil. 720and the `attributes' slot is always nil.
822+++ 721
823*** New function `url-encode-url' for encoding a URI string. 722*** New function `url-encode-url' for encoding a URI string.
824The `url-retrieve' function now uses this to encode its URL argument, 723The `url-retrieve' function now uses this to encode its URL argument,
825in case that is not properly encoded. 724in case that is not properly encoded.
826 725
827--- 726** notifications.el supports now version 1.2 of the Notifications API.
828** VHDL mode 727The function `notifications-get-capabilities' returns the supported
728server properties.
829 729
830*** The free software compiler GHDL is supported (and now the default). 730** Flymake uses fringe bitmaps to indicate errors and warnings.
731See `flymake-fringe-indicator-position', `flymake-error-bitmap' and
732`flymake-warning-bitmap'.
831 733
832*** Support for the VHDL-AMS packages has been added/updated. 734** The FFAP option `ffap-url-unwrap-remote' can now be a list of strings,
735specifying URL types that should be converted to remote file names at
736the FFAP prompt. The default is now '("ftp").
833 737
834*** Updated to the 2002 revision of the VHDL standard. 738** New Ibuffer `derived-mode' filter, bound to `/ M'.
739The old binding for `/ M' (filter by used-mode) is now bound to `/ m'.
835 740
836*** Accepts \r and \f as whitespace. 741** New option `mouse-avoidance-banish-position' specifies where the
742`banish' mouse avoidance setting moves the mouse.
743
744** In Perl mode, new option `perl-indent-parens-as-block' causes non-block
745closing brackets to be aligned with the line of the opening bracket.
746
747** In Proced mode, new command `proced-renice' renices marked processes.
748
749** New option `async-shell-command-buffer' specifies the buffer to use
750for a new asynchronous `shell-command' when the default output buffer
751`*Async Shell Command*' is already in use.
752
753** SQL mode has a new option `sql-db2-escape-newlines'.
754If non-nil, newlines sent to the command interpreter will be escaped
755by a backslash. The default does not escape the newlines and assumes
756that the sql statement will be terminated by a semicolon.
757
758** New command `tabulated-list-sort', bound to `S' in Tabulated List mode
759(and modes that derive from it), sorts the column at point, or the Nth
760column if a numeric prefix argument is given.
837 761
838+++
839** `which-func-modes' now defaults to t, so Which Function mode, when 762** `which-func-modes' now defaults to t, so Which Function mode, when
840enabled, applies to all applicable major modes. 763enabled, applies to all applicable major modes.
841 764
842--- 765** `winner-mode-hook' now runs when the mode is disabled, as well as when
843** winner-mode-hook now runs when the mode is disabled, as well as when it is 766it is enabled.
844enabled. 767
768** Follow mode no longer works by using advice.
769The option `follow-intercept-processes' has been removed.
770
771** `javascript-generic-mode' is now an obsolete alias for `js-mode'.
845 772
846+++
847** Hooks renamed to avoid obsolete "-hooks" suffix: 773** Hooks renamed to avoid obsolete "-hooks" suffix:
848*** semantic-lex-reset-hooks -> semantic-lex-reset-functions 774*** semantic-lex-reset-hooks -> semantic-lex-reset-functions
849*** semantic-change-hooks -> semantic-change-functions 775*** semantic-change-hooks -> semantic-change-functions
@@ -868,86 +794,68 @@ enabled.
868*** nndiary-request-accept-article-hooks -> nndiary-request-accept-article-functions 794*** nndiary-request-accept-article-hooks -> nndiary-request-accept-article-functions
869*** gnus-subscribe-newsgroup-hooks -> gnus-subscribe-newsgroup-functions 795*** gnus-subscribe-newsgroup-hooks -> gnus-subscribe-newsgroup-functions
870 796
871** Obsolete packages: 797** Obsolete packages
872+++ 798
873*** assoc.el 799*** assoc.el
874In most cases, assoc+member+push+delq work just as well. 800In most cases, assoc+member+push+delq work just as well.
875And in any case it's just a terrible package: ugly semantics, terrible 801And in any case it's just a terrible package: ugly semantics, terrible
876inefficiency, and not namespace-clean. 802inefficiency, and not namespace-clean.
877---
878*** bruce.el 803*** bruce.el
879+++
880*** cust-print.el 804*** cust-print.el
881---
882*** ledit.el 805*** ledit.el
883---
884*** mailpost.el 806*** mailpost.el
885+++
886*** mouse-sel.el 807*** mouse-sel.el
887---
888*** patcomp.el 808*** patcomp.el
889 809
890 810
891* Incompatible Lisp Changes in Emacs 24.3 811* Incompatible Lisp Changes in Emacs 24.3
892 812
893+++ 813** Docstrings starting with `*' no longer indicate user options.
894** set-buffer-multibyte now signals an error in narrowed buffers. 814Only variables defined using `defcustom' are considered user options.
815The function `user-variable-p' is now an obsolete alias for
816`custom-variable-p'.
895 817
896+++ 818** The return values of `defalias', `defun' and `defmacro' have changed,
897** (random) by default now returns a different random sequence in 819and are now undefined. For backwards compatibility, `defun' and
898every Emacs run. Use (random S), where S is a string, to set the 820`defmacro' currently return the name of the newly defined
821function/macro, but this should not be relied upon.
822
823** `random' by default now returns a different random sequence in
824every Emacs run. Use `(random S)', where S is a string, to set the
899random seed to a value based on S, in order to get a repeatable 825random seed to a value based on S, in order to get a repeatable
900sequence in later calls. 826sequence in later calls.
901 827
902---
903** The function `x-select-font' can return a font spec, instead of a
904font name as a string. Whether it returns a font spec or a font name
905depends on the graphical library.
906
907+++
908** If the NEWTEXT arg to `replace-match' contains a substring "\?", 828** If the NEWTEXT arg to `replace-match' contains a substring "\?",
909that substring is inserted literally even if the LITERAL arg is 829that substring is inserted literally even if the LITERAL arg is
910non-nil, instead of causing an error to be signaled. 830non-nil, instead of causing an error to be signaled.
911 831
912+++
913** `select-window' now always makes the window's buffer current. 832** `select-window' now always makes the window's buffer current.
914It does so even if the window was selected before. 833It does so even if the window was selected before.
915 834
916+++ 835** The function `x-select-font' can return a font spec, instead of a
917** Docstrings starting with `*' no longer indicate user options. 836font name as a string. Whether it returns a font spec or a font name
918Only variables defined using `defcustom' are considered user options. 837depends on the graphical library.
919The function `user-variable-p' is now an obsolete alias for
920`custom-variable-p'.
921
922+++
923** The return values of `defalias', `defun' and `defmacro' have changed,
924and are now undefined. For backwards compatibility, `defun' and
925`defmacro' currently return the name of the newly defined
926function/macro, but this should not be relied upon.
927 838
928---
929** `face-spec-set' no longer sets frame-specific attributes when the 839** `face-spec-set' no longer sets frame-specific attributes when the
930third argument is a frame (that usage was obsolete since Emacs 22.2). 840third argument is a frame (that usage was obsolete since Emacs 22.2).
931 841
932+++ 842** `set-buffer-multibyte' now signals an error in narrowed buffers.
933** The arguments of `dbus-register-signal' are no longer just strings,
934but keywords or keyword-string pairs. The old argument list will
935still be supported for Emacs 24.x.
936 843
937+++
938** The CL package's `get-setf-method' function no longer exists. 844** The CL package's `get-setf-method' function no longer exists.
939Generalized variables are now part of core Emacs Lisp, and implemented 845Generalized variables are now part of core Emacs Lisp, and implemented
940differently to the way cl.el used to do it. It is not possible to 846differently to the way cl.el used to do it. It is not possible to
941define a compatible replacement for `get-setf-method'. See the file 847define a compatible replacement for `get-setf-method'. See the file
942gv.el for internal details of the new implementation. 848gv.el for internal details of the new implementation.
943 849
944** Spelling changes. 850** The arguments of `dbus-register-signal' are no longer just strings,
945Some Lisp symbols have been renamed to avoid problems with spelling 851but keywords or keyword-string pairs. The old argument list will
946that is incorrect or inconsistent with how Emacs normally spells a word. 852still be supported for Emacs 24.x.
947 853
948--- 854** Miscellaneous name changes
949*** Renamed functions 855Some Lisp symbols have been renamed to correct their spelling,
856or to be more consistent with standard Emacs terminology.
950 857
858*** Renamed functions
951**** hangul-input-method-inactivate -> hangul-input-method-deactivate 859**** hangul-input-method-inactivate -> hangul-input-method-deactivate
952**** inactivate-input-method -> deactivate-input-method 860**** inactivate-input-method -> deactivate-input-method
953**** quail-inactivate -> quail-deactivate 861**** quail-inactivate -> quail-deactivate
@@ -957,7 +865,6 @@ that is incorrect or inconsistent with how Emacs normally spells a word.
957 viper-deactivate-input-method-action 865 viper-deactivate-input-method-action
958**** ucs-input-inactivate -> ucs-input-deactivate 866**** ucs-input-inactivate -> ucs-input-deactivate
959 867
960---
961*** Renamed hooks 868*** Renamed hooks
962The old hooks are still supported for backward compatibility, but they 869The old hooks are still supported for backward compatibility, but they
963are deprecated and will be removed eventually. 870are deprecated and will be removed eventually.
@@ -965,13 +872,11 @@ are deprecated and will be removed eventually.
965**** robin-inactivate-hook -> robin-deactivate-hook 872**** robin-inactivate-hook -> robin-deactivate-hook
966**** quail-inactivate-hook -> quail-deactivate-hook 873**** quail-inactivate-hook -> quail-deactivate-hook
967 874
968--- 875*** Renamed variables
969*** Renamed Lisp variables
970**** follow-deactive-menu -> follow-inactive-menu 876**** follow-deactive-menu -> follow-inactive-menu
971**** inactivate-current-input-method-function -> 877**** inactivate-current-input-method-function ->
972 deactivate-current-input-method-function 878 deactivate-current-input-method-function
973 879
974+++
975** Some obsolete functions, variables, and faces have been removed: 880** Some obsolete functions, variables, and faces have been removed:
976*** `last-input-char', `last-command-char', `unread-command-char' 881*** `last-input-char', `last-command-char', `unread-command-char'
977*** `facemenu-unlisted-faces' 882*** `facemenu-unlisted-faces'
@@ -996,26 +901,34 @@ are deprecated and will be removed eventually.
996 901
997* Lisp changes in Emacs 24.3 902* Lisp changes in Emacs 24.3
998 903
999** New sampling-based Elisp profiler.
1000Try M-x profiler-start, do some work, and then call M-x profiler-report.
1001When finished, use M-x profiler-stop. The sampling rate can be based on
1002CPU time or memory allocations.
1003
1004+++
1005** CL-style generalized variables are now in core Elisp. 904** CL-style generalized variables are now in core Elisp.
1006`setf' is autoloaded; `push' and `pop' accept generalized variables. 905`setf' is autoloaded; `push' and `pop' accept generalized variables.
1007You can define your own generalized variables using `gv-define-simple-setter', 906You can define your own generalized variables using `gv-define-simple-setter',
1008`gv-define-setter', etc. 907`gv-define-setter', etc.
1009 908
1010+++ 909** Emacs tries to macroexpand interpreted (non-compiled) files during load.
910This can significantly speed up execution of non-byte-compiled code,
911but can also bump into previously unnoticed cyclic dependencies.
912These are generally harmless: they will simply cause the macro calls
913to be left for later expansion (as before), but will result in a
914warning ("Eager macro-expansion skipped due to cycle") describing the cycle.
915You may wish to restructure your code so this does not happen.
916
917** New sampling-based Elisp profiler.
918Try M-x profiler-start, do some work, and then call M-x profiler-report.
919When finished, use M-x profiler-stop. The sampling rate can be based on
920CPU time or memory allocations.
921
1011** `defun' also accepts a (declare DECLS) form, like `defmacro'. 922** `defun' also accepts a (declare DECLS) form, like `defmacro'.
1012The interpretation of the DECLS is determined by `defun-declarations-alist'. 923The interpretation of the DECLS is determined by `defun-declarations-alist'.
1013 924
1014** Minibuffer 925** New macros `setq-local' and `defvar-local'.
1015+++ 926
1016*** `read-regexp' has a new argument HISTORY; the first argument PROMPT 927** Face underlining can now use a wave.
928
929** `read-regexp' has a new argument HISTORY; the first argument PROMPT
1017of `read-regexp' accepts a string ending with a colon and space, and its 930of `read-regexp' accepts a string ending with a colon and space, and its
1018second argument DEFAULTS can be a list of strings accessible via M-n 931second argument DEFAULTS can be a list of strings accessible via `M-n'
1019in the minibuffer ahead of other hard-coded useful regexp-related values. 932in the minibuffer ahead of other hard-coded useful regexp-related values.
1020More commands use `read-regexp' now to read their regexp arguments. 933More commands use `read-regexp' now to read their regexp arguments.
1021 934
@@ -1024,211 +937,164 @@ More commands use `read-regexp' now to read their regexp arguments.
1024*** New function `completion-table-with-quoting' to handle completion 937*** New function `completion-table-with-quoting' to handle completion
1025in the presence of quoting, such as file completion in shell buffers. 938in the presence of quoting, such as file completion in shell buffers.
1026 939
1027+++
1028*** New function `completion-table-subvert' to use an existing completion 940*** New function `completion-table-subvert' to use an existing completion
1029table, but with a different prefix. 941table, but with a different prefix.
1030 942
1031** Debugger changes 943** Debugger
1032 944
1033+++
1034*** New error type and new function `user-error'. 945*** New error type and new function `user-error'.
1035These do not trigger the debugger. 946These do not trigger the debugger.
1036 947
1037+++
1038*** New option `debugger-bury-or-kill', saying what to do with the 948*** New option `debugger-bury-or-kill', saying what to do with the
1039debugger buffer when exiting debug. 949debugger buffer when exiting debug.
1040 950
1041+++
1042*** Set `debug-on-message' to enter the debugger when a certain 951*** Set `debug-on-message' to enter the debugger when a certain
1043message is displayed in the echo area. This can be useful when trying 952message is displayed in the echo area. This can be useful when trying
1044to work out which code is doing something. 953to work out which code is doing something.
1045--- 954
1046*** New var `inhibit-debugger', automatically set to prevent accidental 955*** New var `inhibit-debugger', automatically set to prevent accidental
1047recursive invocations. 956recursive invocations.
1048 957
1049** Window changes 958** Window handling
1050+++ 959
1051*** The functions get-lru-window, get-mru-window and get-largest-window 960*** New command `fit-frame-to-buffer' adjusts the frame height to
1052now accept a third argument to avoid choosing the selected window. 961fit the contents.
1053+++ 962
1054*** Additional values recognized for option `window-combination-limit'. 963*** The command `fit-window-to-buffer' can adjust the frame height
964if the new option `fit-frame-to-buffer' is non-nil.
1055 965
1056+++
1057*** New macro `with-temp-buffer-window', similar to 966*** New macro `with-temp-buffer-window', similar to
1058`with-output-to-temp-buffer'. 967`with-output-to-temp-buffer'.
1059 968
1060---
1061*** `temp-buffer-resize-mode' no longer resizes windows that have been 969*** `temp-buffer-resize-mode' no longer resizes windows that have been
1062reused. 970reused.
1063 971
1064+++ 972*** New option `switch-to-buffer-preserve-window-point' to restore a
1065*** New command `fit-frame-to-buffer' adjusts the frame height to 973window's point when switching buffers.
1066fit the contents.
1067 974
1068+++ 975*** New display action alist entries `window-height' and `window-width'
1069*** The command `fit-window-to-buffer' can adjust the frame height 976specify the size of new windows created by `display-buffer'.
1070if the new option `fit-frame-to-buffer' is non-nil. 977
978*** New display action alist entry `pop-up-frame-parameters', if
979non-nil, specifies frame parameters to give any newly-created frame.
1071 980
1072+++
1073*** New option switch-to-buffer-preserve-window-point to restore a
1074window's point when switching buffers.
1075+++
1076*** New display action functions `display-buffer-below-selected',
1077and `display-buffer-in-previous-window'.
1078+++
1079*** New display action alist entry `inhibit-switch-frame', if non-nil, 981*** New display action alist entry `inhibit-switch-frame', if non-nil,
1080tells display action functions to avoid changing which frame is 982tells display action functions to avoid changing which frame is
1081selected. 983selected.
1082+++ 984
1083*** New display action alist entry `pop-up-frame-parameters', if
1084non-nil, specifies frame parameters to give any newly-created frame.
1085+++
1086*** New display action alist entry `previous-window', if non-nil, 985*** New display action alist entry `previous-window', if non-nil,
1087specifies window to reuse in `display-buffer-in-previous-window'. 986specifies window to reuse in `display-buffer-in-previous-window'.
1088+++ 987
1089*** New display action alist entries `window-height' and `window-width' 988*** New display action functions `display-buffer-below-selected',
1090to specify size of new window created by `display-buffer'. 989and `display-buffer-in-previous-window'.
990
991*** The functions `get-lru-window', `get-mru-window' and `get-largest-window'
992now accept a third argument to avoid choosing the selected window.
993
994*** Additional values recognized for option `window-combination-limit'.
1091 995
1092*** The following variables are obsolete, as they can be replaced by 996*** The following variables are obsolete, as they can be replaced by
1093appropriate entries in the `display-buffer-alist' function introduced 997appropriate entries in the `display-buffer-alist' function introduced
1094in Emacs 24.1: 998in Emacs 24.1:
1095+++ 999**** `dired-shrink-to-fit'
1096**** `display-buffer-reuse-frames' 1000**** `display-buffer-reuse-frames'
1097+++ 1001**** `display-buffer-function'
1098**** `special-display-regexps'
1099+++
1100**** `special-display-frame-alist'
1101+++
1102**** `special-display-buffer-names' 1002**** `special-display-buffer-names'
1103+++ 1003**** `special-display-frame-alist'
1104**** `special-display-function' 1004**** `special-display-function'
1105+++ 1005**** `special-display-regexps'
1106**** `display-buffer-function'
1107---
1108**** `dired-shrink-to-fit'
1109 1006
1110** Time 1007** Time
1111--- 1008
1112*** `current-time-string' no longer requires that its argument's year 1009*** `current-time-string' no longer requires that its argument's year
1113must be in the range 1000..9999. It now works with any year supported 1010must be in the range 1000..9999. It now works with any year supported
1114by the underlying C implementation. 1011by the underlying C implementation.
1115+++ 1012
1116*** `current-time' now returns extended-format time stamps 1013*** `current-time' now returns extended-format time stamps
1117(HIGH LOW USEC PSEC), where the new PSEC slot specifies picoseconds. 1014(HIGH LOW USEC PSEC), where the new PSEC slot specifies picoseconds.
1118PSEC is typically a multiple of 1000 on current machines. Other 1015PSEC is typically a multiple of 1000 on current machines. Other
1119functions that use this format, such as file-attributes and 1016functions that use this format, such as `file-attributes' and
1120format-time-string, have been changed accordingly. Old-format time 1017`format-time-string', have been changed accordingly. Old-format time
1121stamps are still accepted. 1018stamps are still accepted.
1122--- 1019
1123*** The format of timers in timer-list and timer-idle-list is now 1020*** The format of timers in `timer-list' and `timer-idle-list' is now
1124[TRIGGERED-P HI-SECS LO-SECS USECS REPEAT-DELAY FUNCTION ARGS IDLE-DELAY PSECS]. 1021[TRIGGERED-P HI-SECS LO-SECS USECS REPEAT-DELAY FUNCTION ARGS IDLE-DELAY PSECS].
1125The PSECS slot is new, and uses picosecond resolution. It can be 1022The PSECS slot is new, and uses picosecond resolution. It can be
1126accessed via the new timer--psecs accessor. 1023accessed via the new `timer--psecs' accessor.
1127+++ 1024
1128*** Last-modified time stamps in undo lists now are of the form 1025*** Last-modified time stamps in undo lists now are of the form
1129(t HI-SECS LO-SECS USECS PSECS) instead of (t HI-SECS . LO-SECS). 1026(t HI-SECS LO-SECS USECS PSECS) instead of (t HI-SECS . LO-SECS).
1130 1027
1131+++
1132** Floating point functions now always return special values like NaN, 1028** Floating point functions now always return special values like NaN,
1133instead of signaling errors, if given invalid args, e.g. (log -1.0). 1029instead of signaling errors, if given invalid args; e.g., (log -1.0).
1134Previously, they returned NaNs on some platforms but signaled errors 1030Previously, they returned NaNs on some platforms but signaled errors
1135on others. The affected functions are acos, asin, tan, exp, expt, 1031on others. The affected functions are acos, asin, tan, exp, expt,
1136log, log10, sqrt, and mod. 1032log, log10, sqrt, and mod.
1137 1033
1138+++ 1034** New fringe bitmap `exclamation-mark'.
1139** Emacs tries to macroexpand interpreted (non-compiled) files during load. 1035
1140This can significantly speed up execution of non-byte-compiled code, 1036** Miscellaneous changes to special forms and macros
1141but can also bump into previously unnoticed cyclic dependencies. 1037
1142These are generally harmless: they will simply cause the macro calls 1038*** `defun' and `defmacro' are now macros rather than special forms.
1143to be left for later expansion (as before), but will result in a 1039
1144warning ("Eager macro-expansion skipped due to cycle") describing the cycle. 1040*** `kbd' is now a function rather than a macro.
1145You may wish to restructure your code so this does not happen. 1041
1042** Miscellaneous new functions
1043
1044*** `set-temporary-overlay-map' sets up a temporary keymap that
1045takes precedence over most other maps for a short while (normally one key).
1146 1046
1147** Miscellaneous new functions:
1148+++
1149*** `autoloadp' tests if its argument is an autoloaded object. 1047*** `autoloadp' tests if its argument is an autoloaded object.
1150+++ 1048
1151*** `autoload-do-load' performs the autoloading operation. 1049*** `autoload-do-load' performs the autoloading operation.
1152+++ 1050
1153*** `buffer-narrowed-p' tests if the buffer is narrowed. 1051*** `buffer-narrowed-p' tests if the buffer is narrowed.
1154+++ 1052
1155*** `file-name-base' returns a file name sans directory and extension. 1053*** `file-name-base' returns a file name sans directory and extension.
1156+++ 1054
1157*** `function-get' fetches a function property, following aliases. 1055*** `function-get' fetches a function property, following aliases.
1158+++
1159*** `posnp' tests if an object is a `posn'.
1160+++
1161*** `set-temporary-overlay-map' sets up a temporary keymap that
1162takes precedence over most other maps for a short while (normally one key).
1163+++
1164*** `system-users' returns the user names on the system.
1165+++
1166*** `system-groups' returns the group names on the system.
1167+++
1168*** `tty-top-frame' returns the topmost frame of a text terminal.
1169 1056
1170+++ 1057*** `posnp' tests if an object is a `posn'.
1171** New macros `setq-local' and `defvar-local'.
1172 1058
1173** Changes to special forms and macros 1059*** `system-users' returns the user names on the system.
1174+++
1175*** `defun' and `defmacro' are now macros rather than special forms
1176+++
1177*** `kbd' is now a function rather than a macro.
1178 1060
1179+++ 1061*** `system-groups' returns the group names on the system.
1180** New fringe bitmap `exclamation-mark'.
1181 1062
1182+++ 1063*** `tty-top-frame' returns the topmost frame of a text terminal.
1183** Face underlining can now use a wave.
1184 1064
1185** The following functions and variables are obsolete: 1065** The following functions and variables are obsolete:
1186---
1187*** `automount-dir-prefix' (use `directory-abbrev-alist') 1066*** `automount-dir-prefix' (use `directory-abbrev-alist')
1188+++
1189*** `buffer-has-markers-at' 1067*** `buffer-has-markers-at'
1190---
1191*** `macro-declaration-function' (use `macro-declarations-alist') 1068*** `macro-declaration-function' (use `macro-declarations-alist')
1192---
1193*** `window-system-version' (provides no useful information) 1069*** `window-system-version' (provides no useful information)
1194---
1195*** `dired-pop-to-buffer' (use `dired-mark-pop-up') 1070*** `dired-pop-to-buffer' (use `dired-mark-pop-up')
1196---
1197*** `query-replace-interactive' 1071*** `query-replace-interactive'
1198---
1199*** `font-list-limit' (has had no effect since Emacs < 23) 1072*** `font-list-limit' (has had no effect since Emacs < 23)
1200 1073
1201 1074
1202* Changes in Emacs 24.3 on non-free operating systems 1075* Changes in Emacs 24.3 on non-free operating systems
1203 1076
1204---
1205** Cygwin builds can use the native MS Windows user interface. 1077** Cygwin builds can use the native MS Windows user interface.
1206Pass --with-w32 to configure. The default remains the X11 interface. 1078Pass `--with-w32' to configure. The default remains the X11 interface.
1207 1079
1208+++
1209** Two new functions are available in Cygwin builds: 1080** Two new functions are available in Cygwin builds:
1210`cygwin-convert-file-name-from-windows' and 1081`cygwin-convert-file-name-from-windows' and
1211`cygwin-convert-file-name-to-windows'. These functions allow Lisp 1082`cygwin-convert-file-name-to-windows'. These functions allow Lisp
1212code to access the Cygwin file-name mapping machinery to convert 1083code to access the Cygwin file-name mapping machinery to convert
1213between Cygwin and Windows-native file and directory names. 1084between Cygwin and Windows-native file and directory names.
1214 1085
1215---
1216** When invoked with the -nw switch to run on the Windows text-mode terminal, 1086** When invoked with the -nw switch to run on the Windows text-mode terminal,
1217Emacs now supports `mouse-highlight', help-echo (in the echo area), and 1087Emacs now supports `mouse-highlight', help-echo (in the echo area), and
1218`mouse-autoselect-window'. 1088`mouse-autoselect-window'.
1219 1089
1220+++
1221** On MS Windows Vista and later Emacs now supports symbolic links. 1090** On MS Windows Vista and later Emacs now supports symbolic links.
1222 1091
1223+++ 1092** On MS Windows, you can pass `--without-libxml2' to configure.bat to omit
1224** On MS Windows, you can pass --without-libxml2 to configure.bat to omit
1225support for libxml2, even if its presence is detected. 1093support for libxml2, even if its presence is detected.
1226 1094
1227---
1228** On Mac OS X, the Nextstep port requires OS X 10.4 or later. 1095** On Mac OS X, the Nextstep port requires OS X 10.4 or later.
1229 1096
1230--- 1097** On Mac OS X, configure no longer automatically adds the Fink "/sw"
1231** On Mac OS X, configure no longer automatically adds the Fink /sw
1232directories to the search path. You must add them yourself if you want them. 1098directories to the search path. You must add them yourself if you want them.
1233 1099
1234 1100
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 81b4978dba5..c895bce1cad 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,36 @@
12012-12-30 Glenn Morris <rgm@gnu.org>
2
3 * net/mairix.el (rmail, rmail-summary-displayed, rmail-summary):
4 Remove unnecessary/buggy autoloads (missing interactive). (Bug#13294)
5 (rmail-summary-displayed, rmail-summary): Declare.
6 (mairix-rmail-display): Just require rmail.
7
82012-12-30 Chong Yidong <cyd@gnu.org>
9
10 * emacs-lisp/package.el (package-untar-buffer): Improve integrity
11 check for the tarball contents.
12
132012-12-30 Matt Fidler <matt.fidler@alcon.com> (tiny change)
14
15 * emacs-lisp/package.el (package-untar-buffer): Handle problematic
16 tarfile content listings (Bug#13136).
17
182012-12-30 Mark Lillibridge <mark.lillibridge@hp.com>
19
20 * mail/rmailmm.el (rmail-insert-mime-forwarded-message): Insert
21 the undecoded text of the message being forwarded. (Bug#9521)
22
232012-12-30 Michael Albinus <michael.albinus@gmx.de>
24
25 * net/tramp-sh.el (tramp-set-file-uid-gid): Convert UID and GID to
26 integers, if they are real numbers. (Bug#13282)
27
28 * net/tramp-sh.el (tramp-sh-handle-set-file-selinux-context):
29 Return `t' on success.
30
31 * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add
32 handler for `set-file-selinux-context'.
33
12012-12-29 Michael Albinus <michael.albinus@gmx.de> 342012-12-29 Michael Albinus <michael.albinus@gmx.de>
2 35
3 * net/tramp-sh.el (tramp-sh-handle-file-acl): Suppress basic attributes. 36 * net/tramp-sh.el (tramp-sh-handle-file-acl): Suppress basic attributes.
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 6629410a1f1..96435e52f11 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -596,6 +596,8 @@ EXTRA-PROPERTIES is currently unused."
596 596
597(defvar tar-parse-info) 597(defvar tar-parse-info)
598(declare-function tar-untar-buffer "tar-mode" ()) 598(declare-function tar-untar-buffer "tar-mode" ())
599(declare-function tar-header-name "tar-mode" (tar-header))
600(declare-function tar-header-link-type "tar-mode" (tar-header))
599 601
600(defun package-untar-buffer (dir) 602(defun package-untar-buffer (dir)
601 "Untar the current buffer. 603 "Untar the current buffer.
@@ -604,10 +606,16 @@ untar into a directory named DIR; otherwise, signal an error."
604 (require 'tar-mode) 606 (require 'tar-mode)
605 (tar-mode) 607 (tar-mode)
606 ;; Make sure everything extracts into DIR. 608 ;; Make sure everything extracts into DIR.
607 (let ((regexp (concat "\\`" (regexp-quote dir) "/"))) 609 (let ((regexp (concat "\\`" (regexp-quote (expand-file-name dir)) "/"))
610 (case-fold-search (memq system-type '(windows-nt ms-dos cygwin))))
608 (dolist (tar-data tar-parse-info) 611 (dolist (tar-data tar-parse-info)
609 (unless (string-match regexp (aref tar-data 2)) 612 (let ((name (expand-file-name (tar-header-name tar-data))))
610 (error "Package does not untar cleanly into directory %s/" dir)))) 613 (or (string-match regexp name)
614 ;; Tarballs created by some utilities don't list
615 ;; directories with a trailing slash (Bug#13136).
616 (and (string-equal dir name)
617 (eq (tar-header-link-type tar-data) 5))
618 (error "Package does not untar cleanly into directory %s/" dir)))))
611 (tar-untar-buffer)) 619 (tar-untar-buffer))
612 620
613(defun package-unpack (package version) 621(defun package-unpack (package version)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index e17661095e4..6dca9e6cb7c 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,9 @@
12012-12-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * nnfolder.el (nnfolder-recursive-directory-files): New function.
4 (nnfolder-generate-active-file): Make this function work with recursive
5 folder names.
6
12012-12-27 Lars Ingebrigtsen <larsi@gnus.org> 72012-12-27 Lars Ingebrigtsen <larsi@gnus.org>
2 8
3 * nntp.el (nntp-open-connection): Use HELP as the capability command 9 * nntp.el (nntp-open-connection): Use HELP as the capability command
diff --git a/lisp/gnus/nnfolder.el b/lisp/gnus/nnfolder.el
index e93bd7f43e0..ae9e551c93a 100644
--- a/lisp/gnus/nnfolder.el
+++ b/lisp/gnus/nnfolder.el
@@ -1004,6 +1004,28 @@ deleted. Point is left where the deleted region was."
1004 (nnfolder-save-nov)) 1004 (nnfolder-save-nov))
1005 (current-buffer)))))) 1005 (current-buffer))))))
1006 1006
1007(defun nnfolder-recursive-directory-files (dir prefix)
1008 (let ((files nil))
1009 (dolist (file (directory-files dir))
1010 (cond
1011 ((or (file-symlink-p (expand-file-name file dir))
1012 (member file '("." "..")))
1013 ;; Ignore
1014 )
1015 ((file-directory-p (expand-file-name file dir))
1016 (setq files (nconc (nnfolder-recursive-directory-files
1017 (expand-file-name file dir)
1018 (if prefix
1019 (concat prefix "." (directory-file-name file))
1020 (file-name-nondirectory file)))
1021 files)))
1022 ((file-regular-p (expand-file-name file dir))
1023 (push (if prefix
1024 (concat prefix "." file)
1025 file)
1026 files))))
1027 files))
1028
1007;;;###autoload 1029;;;###autoload
1008(defun nnfolder-generate-active-file () 1030(defun nnfolder-generate-active-file ()
1009 "Look for mbox folders in the nnfolder directory and make them into groups. 1031 "Look for mbox folders in the nnfolder directory and make them into groups.
@@ -1020,10 +1042,13 @@ This command does not work if you use short group names."
1020 (when (not (message-mail-file-mbox-p file)) 1042 (when (not (message-mail-file-mbox-p file))
1021 (ignore-errors 1043 (ignore-errors
1022 (delete-file file))))) 1044 (delete-file file)))))
1023 (dolist (file (directory-files nnfolder-directory)) 1045 (dolist (file (if nnmail-use-long-file-names
1046 (directory-files nnfolder-directory)
1047 (nnfolder-recursive-directory-files
1048 nnfolder-directory nil)))
1024 (when (and (not (backup-file-name-p file)) 1049 (when (and (not (backup-file-name-p file))
1025 (message-mail-file-mbox-p 1050 (message-mail-file-mbox-p
1026 (nnheader-concat nnfolder-directory file))) 1051 (nnfolder-group-pathname file)))
1027 (let ((oldgroup (assoc file nnfolder-group-alist))) 1052 (let ((oldgroup (assoc file nnfolder-group-alist)))
1028 (if oldgroup 1053 (if oldgroup
1029 (nnheader-message 5 "Refreshing group %s..." file) 1054 (nnheader-message 5 "Refreshing group %s..." file)
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index ec35cc59b26..096b53c6cab 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -4622,7 +4622,7 @@ With prefix argument N moves forward N messages with these labels.
4622 4622
4623;;;*** 4623;;;***
4624 4624
4625;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "f1937f85a1258de8880a089fa5ae5621") 4625;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "c106528cab2def0306822563a9083967")
4626;;; Generated autoloads from rmailmm.el 4626;;; Generated autoloads from rmailmm.el
4627 4627
4628(autoload 'rmail-mime "rmailmm" "\ 4628(autoload 'rmail-mime "rmailmm" "\
diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el
index 11bccd59765..a9bbe6c2da3 100644
--- a/lisp/mail/rmailmm.el
+++ b/lisp/mail/rmailmm.el
@@ -1368,8 +1368,8 @@ This is the usual value of `rmail-insert-mime-forwarded-message-function'."
1368 (let ((message-buffer 1368 (let ((message-buffer
1369 (with-current-buffer forward-buffer 1369 (with-current-buffer forward-buffer
1370 (if rmail-buffer-swapped 1370 (if rmail-buffer-swapped
1371 forward-buffer 1371 rmail-view-buffer
1372 rmail-view-buffer)))) 1372 forward-buffer))))
1373 (save-restriction 1373 (save-restriction
1374 (narrow-to-region (point) (point)) 1374 (narrow-to-region (point) (point))
1375 (message-forward-make-body-mime message-buffer)))) 1375 (message-forward-make-body-mime message-buffer))))
diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el
index f85983e6e9f..50cc2ed3dc3 100644
--- a/lisp/net/mairix.el
+++ b/lisp/net/mairix.el
@@ -222,14 +222,12 @@ Currently there are 'threads and 'flags.")
222 222
223;;; RMail 223;;; RMail
224 224
225;; Display function: 225(declare-function rmail-summary-displayed "rmail" ())
226(autoload 'rmail "rmail") 226(declare-function rmail-summary "rmailsum" ()) ; autoloaded in rmail
227(autoload 'rmail-summary-displayed "rmail")
228(autoload 'rmail-summary "rmailsum")
229(defvar rmail-buffer)
230 227
231(defun mairix-rmail-display (folder) 228(defun mairix-rmail-display (folder)
232 "Display mbox file FOLDER with RMail." 229 "Display mbox file FOLDER with RMail."
230 (require 'rmail)
233 (let (show-summary) 231 (let (show-summary)
234 ;; If it exists, select existing RMail window 232 ;; If it exists, select existing RMail window
235 (when (and (boundp 'rmail-buffer) 233 (when (and (boundp 'rmail-buffer)
@@ -249,6 +247,8 @@ Currently there are 'threads and 'flags.")
249 (when show-summary 247 (when show-summary
250 (rmail-summary)))) 248 (rmail-summary))))
251 249
250(defvar rmail-buffer)
251
252;; Fetching mail header field: 252;; Fetching mail header field:
253(defun mairix-rmail-fetch-field (field) 253(defun mairix-rmail-fetch-field (field)
254 "Get mail header FIELD for current message using RMail." 254 "Get mail header FIELD for current message using RMail."
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index ebc377c08c8..e46b32c85a5 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -1458,7 +1458,9 @@ and gid of the corresponding user is taken. Both parameters must be integers."
1458 ;; working with su(do)? when it is needed, so it shall succeed in 1458 ;; working with su(do)? when it is needed, so it shall succeed in
1459 ;; the majority of cases. 1459 ;; the majority of cases.
1460 ;; Don't modify `last-coding-system-used' by accident. 1460 ;; Don't modify `last-coding-system-used' by accident.
1461 (let ((last-coding-system-used last-coding-system-used)) 1461 (let ((last-coding-system-used last-coding-system-used)
1462 (uid (and (numberp uid) (round uid)))
1463 (gid (and (numberp gid) (round gid))))
1462 (if (file-remote-p filename) 1464 (if (file-remote-p filename)
1463 (with-parsed-tramp-file-name filename nil 1465 (with-parsed-tramp-file-name filename nil
1464 (if (and (zerop (user-uid)) (tramp-local-host-p v)) 1466 (if (and (zerop (user-uid)) (tramp-local-host-p v))
@@ -1530,10 +1532,11 @@ and gid of the corresponding user is taken. Both parameters must be integers."
1530 (if (stringp (nth 3 context)) 1532 (if (stringp (nth 3 context))
1531 (format "--range=%s" (nth 3 context)) "") 1533 (format "--range=%s" (nth 3 context)) "")
1532 (tramp-shell-quote-argument localname)))) 1534 (tramp-shell-quote-argument localname))))
1533 (tramp-set-file-property v localname "file-selinux-context" context) 1535 (progn
1534 (tramp-set-file-property v localname "file-selinux-context" 'undef))) 1536 (tramp-set-file-property v localname "file-selinux-context" context)
1535 ;; We always return nil. 1537 t)
1536 nil) 1538 (tramp-set-file-property v localname "file-selinux-context" 'undef)
1539 nil)))
1537 1540
1538(defun tramp-remote-acl-p (vec) 1541(defun tramp-remote-acl-p (vec)
1539 "Check, whether ACL is enabled on the remote host." 1542 "Check, whether ACL is enabled on the remote host."
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index f97d4620b97..af1e36350f5 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -230,7 +230,7 @@ See `tramp-actions-before-shell' for more info.")
230 (rename-file . tramp-smb-handle-rename-file) 230 (rename-file . tramp-smb-handle-rename-file)
231 (set-file-acl . ignore) 231 (set-file-acl . ignore)
232 (set-file-modes . tramp-smb-handle-set-file-modes) 232 (set-file-modes . tramp-smb-handle-set-file-modes)
233 ;; `set-file-selinux-context' performed by default handler. 233 (set-file-selinux-context . ignore)
234 (set-file-times . ignore) 234 (set-file-times . ignore)
235 (set-visited-file-modtime . ignore) 235 (set-visited-file-modtime . ignore)
236 (shell-command . tramp-handle-shell-command) 236 (shell-command . tramp-handle-shell-command)
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index ce3fd523b88..e2b5437228d 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -4583,12 +4583,7 @@
4583 (org-set-autofill-regexps): Add previous function to 4583 (org-set-autofill-regexps): Add previous function to
4584 `fill-nobreak-predicate'. 4584 `fill-nobreak-predicate'.
4585 4585
45862012-04-01 Vitalie Spinu <spinuvit@gmail.com> 45862012-04-01 Vitalie Spinu <spinuvit@gmail.com> (tiny change)
4587
4588 * ob-R.el (org-babel-R-evaluate-session): Inhibit R evaluation
4589 visibility regardless of local user customization.
4590
45912012-04-01 Vitalie Spinu <spinuvit@gmail.com>
4592 4587
4593 * ob-R.el (org-babel-R-evaluate-session): Inhibit R evaluation 4588 * ob-R.el (org-babel-R-evaluate-session): Inhibit R evaluation
4594 visibility regardless of local user customization. 4589 visibility regardless of local user customization.
diff --git a/msdos/ChangeLog b/msdos/ChangeLog
index 1fdd9316847..c530dff150c 100644
--- a/msdos/ChangeLog
+++ b/msdos/ChangeLog
@@ -1,3 +1,8 @@
12012-12-30 Eli Zaretskii <eliz@gnu.org>
2
3 * sed1v2.inp (TEMACS_LDFLAGS2): Remove editing.
4 (LIBS_GNUSTEP): Edit to empty.
5
12012-12-03 Eli Zaretskii <eliz@gnu.org> 62012-12-03 Eli Zaretskii <eliz@gnu.org>
2 7
3 * sed1v2.inp: Dump emacs.exe and copy to b-emacs.exe before 8 * sed1v2.inp: Dump emacs.exe and copy to b-emacs.exe before
diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp
index 0ee7510bec1..c7199621634 100644
--- a/msdos/sed1v2.inp
+++ b/msdos/sed1v2.inp
@@ -49,7 +49,6 @@ s/\.h\.in/.h-in/
49/^LD_SWITCH_X_SITE_AUX *=/s/@LD_SWITCH_X_SITE_AUX@// 49/^LD_SWITCH_X_SITE_AUX *=/s/@LD_SWITCH_X_SITE_AUX@//
50/^LD_SWITCH_X_SITE_AUX_RPATH *=/s/@LD_SWITCH_X_SITE_AUX_RPATH@// 50/^LD_SWITCH_X_SITE_AUX_RPATH *=/s/@LD_SWITCH_X_SITE_AUX_RPATH@//
51/^LD_SWITCH_SYSTEM *=/s/@LD_SWITCH_SYSTEM@// 51/^LD_SWITCH_SYSTEM *=/s/@LD_SWITCH_SYSTEM@//
52/^TEMACS_LDFLAGS2 *=/s/@TEMACS_LDFLAGS2@/$(LDFLAGS)/
53/^LIBS_SYSTEM *=/s/@LIBS_SYSTEM@// 52/^LIBS_SYSTEM *=/s/@LIBS_SYSTEM@//
54/^LIB_GCC *=/s/@LIB_GCC@// 53/^LIB_GCC *=/s/@LIB_GCC@//
55/^LIB_STANDARD *=/s/@LIB_STANDARD@// 54/^LIB_STANDARD *=/s/@LIB_STANDARD@//
@@ -86,6 +85,7 @@ s/ *@LIBXPM@//
86/^XOBJ *=/s/@XOBJ@// 85/^XOBJ *=/s/@XOBJ@//
87/^TOOLKIT_LIBW *=/s/@TOOLKIT_LIBW@// 86/^TOOLKIT_LIBW *=/s/@TOOLKIT_LIBW@//
88/^LIBSOUND *=/s/@LIBSOUND@// 87/^LIBSOUND *=/s/@LIBSOUND@//
88/^LIBS_GNUSTEP *=/s/@LIBS_GNUSTEP@//
89/^CFLAGS_SOUND *=/s/@CFLAGS_SOUND@// 89/^CFLAGS_SOUND *=/s/@CFLAGS_SOUND@//
90/^RSVG_LIBS *=/s/@RSVG_LIBS@// 90/^RSVG_LIBS *=/s/@RSVG_LIBS@//
91/^RSVG_CFLAGS *=/s/@RSVG_CFLAGS@// 91/^RSVG_CFLAGS *=/s/@RSVG_CFLAGS@//
diff --git a/src/ChangeLog b/src/ChangeLog
index e95df2b8953..483930a6489 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,49 @@
12012-12-30 Paul Eggert <eggert@cs.ucla.edu>
2
3 * coding.c (Qmac): Now static.
4
52012-12-30 Jan Djärv <jan.h.d@swipnet.se>
6
7 * gtkutil.c (TOOLBAR_TOP_WIDGET): New macro.
8 (xg_pack_tool_bar): Use TOOLBAR_TOP_WIDGET, condition out use of
9 handlebox_widget. Set toolbar_in_hbox to false/true, set
10 toolbar_is_packed to true.
11 (xg_update_tool_bar_sizes): Use widget returned by TOOLBAR_TOP_WIDGET.
12 (update_frame_tool_bar): Check toolbar_is_packed for packing.
13 Show all on TOOLBAR_TOP_WIDGET.
14 (free_frame_tool_bar): Check toolbar_is_packed. Use widget returned
15 by TOOLBAR_TOP_WIDGET.
16 (xg_change_toolbar_position): Use widget returned by TOOLBAR_TOP_WIDGET.
17 Check toolbar_is_packed.
18 (xg_have_tear_offs, tearoff_remove, tearoff_activate): Condition on
19 HAVE_GTK_TEAROFF_MENU_ITEM_NEW.
20 (xg_have_tear_offs): When ! HAVE_GTK_TEAROFF_MENU_ITEM_NEW, return
21 false.
22 (create_menus): Create tearoff only if HAVE_GTK_TEAROFF_MENU_ITEM_NEW.
23 (xg_update_menubar): Update title only if
24 HAVE_GTK_TEAROFF_MENU_ITEM_NEW.
25 (xg_update_submenu): Skip tearoff only if
26 HAVE_GTK_TEAROFF_MENU_ITEM_NEW.
27 (xg_initialize): Initialize xg_detached_menus only if
28 HAVE_GTK_TEAROFF_MENU_ITEM_NEW.
29
30 * xterm.h (struct x_output): Surround handlebox_widget with
31 #ifdef HAVE_GTK_HANDLE_BOX_NEW. toolbar_is_packed is new,
32 toolbar_in_hbox is bool.
33
342012-12-30 Andreas Schwab <schwab@linux-m68k.org>
35
36 * src/Makefile.in (TEMACS_LDFLAGS2): Remove.
37 (LIBS_GNUSTEP): Define.
38 (LIBES): Add $(LIBS_GNUSTEP).
39 (temacs$(EXEEXT)): Use $(LDFLAGS) instead of $(TEMACS_LDFLAGS2).
40
412012-12-30 Eli Zaretskii <eliz@gnu.org>
42
43 * xdisp.c (set_cursor_from_row): Don't confuse a truncation or
44 continuation glyph on a TTY with an indication of an empty line.
45 (Bug#13277)
46
12012-12-29 Eli Zaretskii <eliz@gnu.org> 472012-12-29 Eli Zaretskii <eliz@gnu.org>
2 48
3 * fileio.c (Fset_file_selinux_context, Fset_file_acl): Return t if 49 * fileio.c (Fset_file_selinux_context, Fset_file_acl): Return t if
diff --git a/src/Makefile.in b/src/Makefile.in
index f430c787d56..eb4e8903812 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -111,9 +111,6 @@ LD_SWITCH_SYSTEM_TEMACS=@LD_SWITCH_SYSTEM_TEMACS@
111## Flags to pass to ld only for temacs. 111## Flags to pass to ld only for temacs.
112TEMACS_LDFLAGS = $(LD_SWITCH_SYSTEM) $(LD_SWITCH_SYSTEM_TEMACS) 112TEMACS_LDFLAGS = $(LD_SWITCH_SYSTEM) $(LD_SWITCH_SYSTEM_TEMACS)
113 113
114## $LDFLAGS or empty if NS_IMPL_GNUSTEP (for some reason).
115TEMACS_LDFLAGS2 = @TEMACS_LDFLAGS2@
116
117## If available, the full path to the paxctl program. 114## If available, the full path to the paxctl program.
118## On grsecurity/PaX systems, unexec will fail due to a gap between 115## On grsecurity/PaX systems, unexec will fail due to a gap between
119## the bss section and the heap. This can be prevented by disabling 116## the bss section and the heap. This can be prevented by disabling
@@ -230,6 +227,9 @@ LIBX_OTHER=@LIBX_OTHER@
230## configure, which should set it to nil in non-X builds. 227## configure, which should set it to nil in non-X builds.
231LIBX_BASE=$(LIBXMENU) $(LD_SWITCH_X_SITE) 228LIBX_BASE=$(LIBXMENU) $(LD_SWITCH_X_SITE)
232 229
230## Only used for GNUstep
231LIBS_GNUSTEP=@LIBS_GNUSTEP@
232
233LIBSOUND= @LIBSOUND@ 233LIBSOUND= @LIBSOUND@
234CFLAGS_SOUND= @CFLAGS_SOUND@ 234CFLAGS_SOUND= @CFLAGS_SOUND@
235 235
@@ -412,7 +412,7 @@ otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \
412## Note that SunOS needs -lm to come before -lc; otherwise, you get 412## Note that SunOS needs -lm to come before -lc; otherwise, you get
413## duplicated symbols. If the standard libraries were compiled 413## duplicated symbols. If the standard libraries were compiled
414## with GCC, we might need LIB_GCC again after them. 414## with GCC, we might need LIB_GCC again after them.
415LIBES = $(LIBS) $(W32_LIBS) $(LIBX_BASE) $(LIBIMAGE) \ 415LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(LIBX_BASE) $(LIBIMAGE) \
416 $(LIBX_OTHER) $(LIBSOUND) \ 416 $(LIBX_OTHER) $(LIBSOUND) \
417 $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(LIB_CLOCK_GETTIME) \ 417 $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(LIB_CLOCK_GETTIME) \
418 $(WEBKIT_LIBS) $(CLUTTER_LIBS) $(GIR_LIBS) \ 418 $(WEBKIT_LIBS) $(CLUTTER_LIBS) $(GIR_LIBS) \
@@ -488,7 +488,7 @@ $(lib)/libgnu.a: $(config_h)
488 488
489temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) \ 489temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) \
490 $(lib)/libgnu.a $(W32_RES) 490 $(lib)/libgnu.a $(W32_RES)
491 $(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(TEMACS_LDFLAGS2) \ 491 $(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(LDFLAGS) \
492 -o temacs $(START_FILES) $(obj) $(otherobj) $(lib)/libgnu.a $(LIBES) \ 492 -o temacs $(START_FILES) $(obj) $(otherobj) $(lib)/libgnu.a $(LIBES) \
493 $(W32_RES_LINK) 493 $(W32_RES_LINK)
494 test "$(CANNOT_DUMP)" = "yes" || \ 494 test "$(CANNOT_DUMP)" = "yes" || \
diff --git a/src/coding.c b/src/coding.c
index 2c1139ec5fc..044583d26b6 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -301,7 +301,8 @@ Lisp_Object Vcoding_system_hash_table;
301 301
302static Lisp_Object Qcoding_system, Qeol_type; 302static Lisp_Object Qcoding_system, Qeol_type;
303static Lisp_Object Qcoding_aliases; 303static Lisp_Object Qcoding_aliases;
304Lisp_Object Qunix, Qdos, Qmac; 304Lisp_Object Qunix, Qdos;
305static Lisp_Object Qmac;
305Lisp_Object Qbuffer_file_coding_system; 306Lisp_Object Qbuffer_file_coding_system;
306static Lisp_Object Qpost_read_conversion, Qpre_write_conversion; 307static Lisp_Object Qpost_read_conversion, Qpre_write_conversion;
307static Lisp_Object Qdefault_char; 308static Lisp_Object Qdefault_char;
diff --git a/src/coding.h b/src/coding.h
index 192be58f083..db0033c751b 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -767,7 +767,7 @@ extern Lisp_Object Qcoding_system_p;
767extern Lisp_Object Qraw_text, Qemacs_mule, Qno_conversion, Qundecided; 767extern Lisp_Object Qraw_text, Qemacs_mule, Qno_conversion, Qundecided;
768extern Lisp_Object Qbuffer_file_coding_system; 768extern Lisp_Object Qbuffer_file_coding_system;
769 769
770extern Lisp_Object Qunix, Qdos, Qmac; 770extern Lisp_Object Qunix, Qdos;
771 771
772extern Lisp_Object Qtranslation_table; 772extern Lisp_Object Qtranslation_table;
773extern Lisp_Object Qtranslation_table_id; 773extern Lisp_Object Qtranslation_table_id;
diff --git a/src/dispextern.h b/src/dispextern.h
index 55fd852ea3b..3b24d49da75 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -321,13 +321,18 @@ struct glyph
321 Lisp string, this is a position in that string. If it is a 321 Lisp string, this is a position in that string. If it is a
322 buffer, this is a position in that buffer. A value of -1 322 buffer, this is a position in that buffer. A value of -1
323 together with a null object means glyph is a truncation glyph at 323 together with a null object means glyph is a truncation glyph at
324 the start of a row. */ 324 the start of a row. Right truncation and continuation glyphs at
325 the right edge of a row have their position set to the next
326 buffer position that is not shown on this row. Glyphs inserted
327 by redisplay, such as the empty space after the end of a line on
328 TTYs, or the overlay-arrow on a TTY, have this set to -1. */
325 ptrdiff_t charpos; 329 ptrdiff_t charpos;
326 330
327 /* Lisp object source of this glyph. Currently either a buffer or 331 /* Lisp object source of this glyph. Currently either a buffer or a
328 a string, if the glyph was produced from characters which came from 332 string, if the glyph was produced from characters which came from
329 a buffer or a string; or 0 if the glyph was inserted by redisplay 333 a buffer or a string; or 0 if the glyph was inserted by redisplay
330 for its own purposes such as padding. */ 334 for its own purposes, such as padding or truncation/continuation
335 glyphs, or the overlay-arrow glyphs on TTYs. */
331 Lisp_Object object; 336 Lisp_Object object;
332 337
333 /* Width in pixels. */ 338 /* Width in pixels. */
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 7f50b67d1e5..7b05cff71c0 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -2416,6 +2416,8 @@ make_menu_item (const char *utf8_label,
2416 return w; 2416 return w;
2417} 2417}
2418 2418
2419#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW
2420
2419static int xg_detached_menus; 2421static int xg_detached_menus;
2420 2422
2421/* Return true if there are detached menus. */ 2423/* Return true if there are detached menus. */
@@ -2454,7 +2456,13 @@ tearoff_activate (GtkWidget *widget, gpointer client_data)
2454 G_CALLBACK (tearoff_remove), 0); 2456 G_CALLBACK (tearoff_remove), 0);
2455 } 2457 }
2456} 2458}
2457 2459#else /* ! HAVE_GTK_TEAROFF_MENU_ITEM_NEW */
2460bool
2461xg_have_tear_offs (void)
2462{
2463 return false;
2464}
2465#endif /* ! HAVE_GTK_TEAROFF_MENU_ITEM_NEW */
2458 2466
2459/* Create a menu item widget, and connect the callbacks. 2467/* Create a menu item widget, and connect the callbacks.
2460 ITEM describes the menu item. 2468 ITEM describes the menu item.
@@ -2526,7 +2534,8 @@ xg_create_one_menuitem (widget_value *item,
2526 HIGHLIGHT_CB is the callback to call when entering/leaving menu items. 2534 HIGHLIGHT_CB is the callback to call when entering/leaving menu items.
2527 If POP_UP_P, create a popup menu. 2535 If POP_UP_P, create a popup menu.
2528 If MENU_BAR_P, create a menu bar. 2536 If MENU_BAR_P, create a menu bar.
2529 If ADD_TEAROFF_P, add a tearoff menu item. Ignored if MENU_BAR_P. 2537 If ADD_TEAROFF_P, add a tearoff menu item. Ignored if MENU_BAR_P or
2538 the Gtk+ version used does not have tearoffs.
2530 TOPMENU is the topmost GtkWidget that others shall be placed under. 2539 TOPMENU is the topmost GtkWidget that others shall be placed under.
2531 It may be NULL, in that case we create the appropriate widget 2540 It may be NULL, in that case we create the appropriate widget
2532 (menu bar or menu item depending on POP_UP_P and MENU_BAR_P) 2541 (menu bar or menu item depending on POP_UP_P and MENU_BAR_P)
@@ -2599,6 +2608,7 @@ create_menus (widget_value *data,
2599 "selection-done", deactivate_cb, 0); 2608 "selection-done", deactivate_cb, 0);
2600 } 2609 }
2601 2610
2611#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW
2602 if (! menu_bar_p && add_tearoff_p) 2612 if (! menu_bar_p && add_tearoff_p)
2603 { 2613 {
2604 GtkWidget *tearoff = gtk_tearoff_menu_item_new (); 2614 GtkWidget *tearoff = gtk_tearoff_menu_item_new ();
@@ -2607,6 +2617,7 @@ create_menus (widget_value *data,
2607 g_signal_connect (G_OBJECT (tearoff), "activate", 2617 g_signal_connect (G_OBJECT (tearoff), "activate",
2608 G_CALLBACK (tearoff_activate), 0); 2618 G_CALLBACK (tearoff_activate), 0);
2609 } 2619 }
2620#endif
2610 2621
2611 for (item = data; item; item = item->next) 2622 for (item = data; item; item = item->next)
2612 { 2623 {
@@ -2897,11 +2908,13 @@ xg_update_menubar (GtkWidget *menubar,
2897 2908
2898 gtk_label_set_text (wlabel, utf8_label); 2909 gtk_label_set_text (wlabel, utf8_label);
2899 2910
2911#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW
2900 /* If this item has a submenu that has been detached, change 2912 /* If this item has a submenu that has been detached, change
2901 the title in the WM decorations also. */ 2913 the title in the WM decorations also. */
2902 if (submenu && gtk_menu_get_tearoff_state (GTK_MENU (submenu))) 2914 if (submenu && gtk_menu_get_tearoff_state (GTK_MENU (submenu)))
2903 /* Set the title of the detached window. */ 2915 /* Set the title of the detached window. */
2904 gtk_menu_set_title (GTK_MENU (submenu), utf8_label); 2916 gtk_menu_set_title (GTK_MENU (submenu), utf8_label);
2917#endif
2905 2918
2906 if (utf8_label) g_free (utf8_label); 2919 if (utf8_label) g_free (utf8_label);
2907 iter = g_list_next (iter); 2920 iter = g_list_next (iter);
@@ -3129,7 +3142,8 @@ xg_update_submenu (GtkWidget *submenu,
3129 { 3142 {
3130 GtkWidget *w = GTK_WIDGET (iter->data); 3143 GtkWidget *w = GTK_WIDGET (iter->data);
3131 3144
3132 /* Skip tearoff items, they have no counterpart in val. */ 3145#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW
3146 /* Skip tearoff items, they have no counterpart in val. */
3133 if (GTK_IS_TEAROFF_MENU_ITEM (w)) 3147 if (GTK_IS_TEAROFF_MENU_ITEM (w))
3134 { 3148 {
3135 has_tearoff_p = 1; 3149 has_tearoff_p = 1;
@@ -3137,6 +3151,7 @@ xg_update_submenu (GtkWidget *submenu,
3137 if (iter) w = GTK_WIDGET (iter->data); 3151 if (iter) w = GTK_WIDGET (iter->data);
3138 else break; 3152 else break;
3139 } 3153 }
3154#endif
3140 3155
3141 /* Remember first radio button in a group. If we get a mismatch in 3156 /* Remember first radio button in a group. If we get a mismatch in
3142 a radio group we must rebuild the whole group so that the connections 3157 a radio group we must rebuild the whole group so that the connections
@@ -4269,6 +4284,12 @@ xg_tool_bar_item_expose_callback (GtkWidget *w,
4269 gtk_toolbar_set_orientation (GTK_TOOLBAR (w), o) 4284 gtk_toolbar_set_orientation (GTK_TOOLBAR (w), o)
4270#endif 4285#endif
4271 4286
4287#ifdef HAVE_GTK_HANDLE_BOX_NEW
4288#define TOOLBAR_TOP_WIDGET(x) ((x)->handlebox_widget)
4289#else
4290#define TOOLBAR_TOP_WIDGET(x) ((x)->toolbar_widget)
4291#endif
4292
4272/* Attach a tool bar to frame F. */ 4293/* Attach a tool bar to frame F. */
4273 4294
4274static void 4295static void
@@ -4276,14 +4297,16 @@ xg_pack_tool_bar (FRAME_PTR f, Lisp_Object pos)
4276{ 4297{
4277 struct x_output *x = f->output_data.x; 4298 struct x_output *x = f->output_data.x;
4278 bool into_hbox = EQ (pos, Qleft) || EQ (pos, Qright); 4299 bool into_hbox = EQ (pos, Qleft) || EQ (pos, Qright);
4300 GtkWidget *top_widget = TOOLBAR_TOP_WIDGET (x);
4279 4301
4280 toolbar_set_orientation (x->toolbar_widget, 4302 toolbar_set_orientation (x->toolbar_widget,
4281 into_hbox 4303 into_hbox
4282 ? GTK_ORIENTATION_VERTICAL 4304 ? GTK_ORIENTATION_VERTICAL
4283 : GTK_ORIENTATION_HORIZONTAL); 4305 : GTK_ORIENTATION_HORIZONTAL);
4306#ifdef HAVE_GTK_HANDLE_BOX_NEW
4284 if (!x->handlebox_widget) 4307 if (!x->handlebox_widget)
4285 { 4308 {
4286 x->handlebox_widget = gtk_handle_box_new (); 4309 top_widget = x->handlebox_widget = gtk_handle_box_new ();
4287 g_signal_connect (G_OBJECT (x->handlebox_widget), "child-detached", 4310 g_signal_connect (G_OBJECT (x->handlebox_widget), "child-detached",
4288 G_CALLBACK (xg_tool_bar_detach_callback), f); 4311 G_CALLBACK (xg_tool_bar_detach_callback), f);
4289 g_signal_connect (G_OBJECT (x->handlebox_widget), "child-attached", 4312 g_signal_connect (G_OBJECT (x->handlebox_widget), "child-attached",
@@ -4291,34 +4314,40 @@ xg_pack_tool_bar (FRAME_PTR f, Lisp_Object pos)
4291 gtk_container_add (GTK_CONTAINER (x->handlebox_widget), 4314 gtk_container_add (GTK_CONTAINER (x->handlebox_widget),
4292 x->toolbar_widget); 4315 x->toolbar_widget);
4293 } 4316 }
4317#endif
4294 4318
4295 if (into_hbox) 4319 if (into_hbox)
4296 { 4320 {
4321#ifdef HAVE_GTK_HANDLE_BOX_NEW
4297 gtk_handle_box_set_handle_position (GTK_HANDLE_BOX (x->handlebox_widget), 4322 gtk_handle_box_set_handle_position (GTK_HANDLE_BOX (x->handlebox_widget),
4298 GTK_POS_TOP); 4323 GTK_POS_TOP);
4299 gtk_box_pack_start (GTK_BOX (x->hbox_widget), x->handlebox_widget, 4324#endif
4325 gtk_box_pack_start (GTK_BOX (x->hbox_widget), top_widget,
4300 FALSE, FALSE, 0); 4326 FALSE, FALSE, 0);
4301 4327
4302 if (EQ (pos, Qleft)) 4328 if (EQ (pos, Qleft))
4303 gtk_box_reorder_child (GTK_BOX (x->hbox_widget), 4329 gtk_box_reorder_child (GTK_BOX (x->hbox_widget),
4304 x->handlebox_widget, 4330 top_widget,
4305 0); 4331 0);
4306 x->toolbar_in_hbox = 1; 4332 x->toolbar_in_hbox = true;
4307 } 4333 }
4308 else 4334 else
4309 { 4335 {
4310 bool vbox_pos = x->menubar_widget != 0; 4336 bool vbox_pos = x->menubar_widget != 0;
4337#ifdef HAVE_GTK_HANDLE_BOX_NEW
4311 gtk_handle_box_set_handle_position (GTK_HANDLE_BOX (x->handlebox_widget), 4338 gtk_handle_box_set_handle_position (GTK_HANDLE_BOX (x->handlebox_widget),
4312 GTK_POS_LEFT); 4339 GTK_POS_LEFT);
4313 gtk_box_pack_start (GTK_BOX (x->vbox_widget), x->handlebox_widget, 4340#endif
4341 gtk_box_pack_start (GTK_BOX (x->vbox_widget), top_widget,
4314 FALSE, FALSE, 0); 4342 FALSE, FALSE, 0);
4315 4343
4316 if (EQ (pos, Qtop)) 4344 if (EQ (pos, Qtop))
4317 gtk_box_reorder_child (GTK_BOX (x->vbox_widget), 4345 gtk_box_reorder_child (GTK_BOX (x->vbox_widget),
4318 x->handlebox_widget, 4346 top_widget,
4319 vbox_pos); 4347 vbox_pos);
4320 x->toolbar_in_hbox = 0; 4348 x->toolbar_in_hbox = false;
4321 } 4349 }
4350 x->toolbar_is_packed = true;
4322} 4351}
4323 4352
4324/* Create a tool bar for frame F. */ 4353/* Create a tool bar for frame F. */
@@ -4561,13 +4590,14 @@ xg_update_tool_bar_sizes (FRAME_PTR f)
4561 struct x_output *x = f->output_data.x; 4590 struct x_output *x = f->output_data.x;
4562 GtkRequisition req; 4591 GtkRequisition req;
4563 int nl = 0, nr = 0, nt = 0, nb = 0; 4592 int nl = 0, nr = 0, nt = 0, nb = 0;
4593 GtkWidget *top_widget = TOOLBAR_TOP_WIDGET (x);
4564 4594
4565 gtk_widget_get_preferred_size (GTK_WIDGET (x->handlebox_widget), NULL, &req); 4595 gtk_widget_get_preferred_size (GTK_WIDGET (top_widget), NULL, &req);
4566 if (x->toolbar_in_hbox) 4596 if (x->toolbar_in_hbox)
4567 { 4597 {
4568 int pos; 4598 int pos;
4569 gtk_container_child_get (GTK_CONTAINER (x->hbox_widget), 4599 gtk_container_child_get (GTK_CONTAINER (x->hbox_widget),
4570 x->handlebox_widget, 4600 top_widget,
4571 "position", &pos, NULL); 4601 "position", &pos, NULL);
4572 if (pos == 0) nl = req.width; 4602 if (pos == 0) nl = req.width;
4573 else nr = req.width; 4603 else nr = req.width;
@@ -4576,7 +4606,7 @@ xg_update_tool_bar_sizes (FRAME_PTR f)
4576 { 4606 {
4577 int pos; 4607 int pos;
4578 gtk_container_child_get (GTK_CONTAINER (x->vbox_widget), 4608 gtk_container_child_get (GTK_CONTAINER (x->vbox_widget),
4579 x->handlebox_widget, 4609 top_widget,
4580 "position", &pos, NULL); 4610 "position", &pos, NULL);
4581 if (pos == 0 || (pos == 1 && x->menubar_widget)) nt = req.height; 4611 if (pos == 0 || (pos == 1 && x->menubar_widget)) nt = req.height;
4582 else nb = req.height; 4612 else nb = req.height;
@@ -4611,7 +4641,6 @@ update_frame_tool_bar (FRAME_PTR f)
4611 GtkToolbar *wtoolbar; 4641 GtkToolbar *wtoolbar;
4612 GtkToolItem *ti; 4642 GtkToolItem *ti;
4613 GtkTextDirection dir; 4643 GtkTextDirection dir;
4614 bool pack_tool_bar = x->handlebox_widget == NULL;
4615 Lisp_Object style; 4644 Lisp_Object style;
4616 bool text_image, horiz; 4645 bool text_image, horiz;
4617 struct xg_frame_tb_info *tbinfo; 4646 struct xg_frame_tb_info *tbinfo;
@@ -4865,9 +4894,9 @@ update_frame_tool_bar (FRAME_PTR f)
4865 4894
4866 if (f->n_tool_bar_items != 0) 4895 if (f->n_tool_bar_items != 0)
4867 { 4896 {
4868 if (pack_tool_bar) 4897 if (! x->toolbar_is_packed)
4869 xg_pack_tool_bar (f, f->tool_bar_position); 4898 xg_pack_tool_bar (f, f->tool_bar_position);
4870 gtk_widget_show_all (GTK_WIDGET (x->handlebox_widget)); 4899 gtk_widget_show_all (TOOLBAR_TOP_WIDGET (x));
4871 if (xg_update_tool_bar_sizes (f)) 4900 if (xg_update_tool_bar_sizes (f))
4872 xg_height_or_width_changed (f); 4901 xg_height_or_width_changed (f);
4873 } 4902 }
@@ -4886,24 +4915,26 @@ free_frame_tool_bar (FRAME_PTR f)
4886 if (x->toolbar_widget) 4915 if (x->toolbar_widget)
4887 { 4916 {
4888 struct xg_frame_tb_info *tbinfo; 4917 struct xg_frame_tb_info *tbinfo;
4889 bool is_packed = x->handlebox_widget != 0; 4918 GtkWidget *top_widget = TOOLBAR_TOP_WIDGET (x);
4919
4890 block_input (); 4920 block_input ();
4891 /* We may have created the toolbar_widget in xg_create_tool_bar, but 4921 /* We may have created the toolbar_widget in xg_create_tool_bar, but
4892 not the x->handlebox_widget which is created in xg_pack_tool_bar. */ 4922 not the x->handlebox_widget which is created in xg_pack_tool_bar. */
4893 if (is_packed) 4923 if (x->toolbar_is_packed)
4894 { 4924 {
4895 if (x->toolbar_in_hbox) 4925 if (x->toolbar_in_hbox)
4896 gtk_container_remove (GTK_CONTAINER (x->hbox_widget), 4926 gtk_container_remove (GTK_CONTAINER (x->hbox_widget),
4897 x->handlebox_widget); 4927 top_widget);
4898 else 4928 else
4899 gtk_container_remove (GTK_CONTAINER (x->vbox_widget), 4929 gtk_container_remove (GTK_CONTAINER (x->vbox_widget),
4900 x->handlebox_widget); 4930 top_widget);
4901 } 4931 }
4902 else 4932 else
4903 gtk_widget_destroy (x->toolbar_widget); 4933 gtk_widget_destroy (x->toolbar_widget);
4904 4934
4905 x->toolbar_widget = 0; 4935 x->toolbar_widget = 0;
4906 x->handlebox_widget = 0; 4936 TOOLBAR_TOP_WIDGET (x) = 0;
4937 x->toolbar_is_packed = false;
4907 FRAME_TOOLBAR_TOP_HEIGHT (f) = FRAME_TOOLBAR_BOTTOM_HEIGHT (f) = 0; 4938 FRAME_TOOLBAR_TOP_HEIGHT (f) = FRAME_TOOLBAR_BOTTOM_HEIGHT (f) = 0;
4908 FRAME_TOOLBAR_LEFT_WIDTH (f) = FRAME_TOOLBAR_RIGHT_WIDTH (f) = 0; 4939 FRAME_TOOLBAR_LEFT_WIDTH (f) = FRAME_TOOLBAR_RIGHT_WIDTH (f) = 0;
4909 4940
@@ -4927,20 +4958,25 @@ void
4927xg_change_toolbar_position (FRAME_PTR f, Lisp_Object pos) 4958xg_change_toolbar_position (FRAME_PTR f, Lisp_Object pos)
4928{ 4959{
4929 struct x_output *x = f->output_data.x; 4960 struct x_output *x = f->output_data.x;
4961 GtkWidget *top_widget = TOOLBAR_TOP_WIDGET (x);
4930 4962
4931 if (! x->toolbar_widget || ! x->handlebox_widget) 4963 if (! x->toolbar_widget || ! top_widget)
4932 return; 4964 return;
4933 4965
4934 block_input (); 4966 block_input ();
4935 g_object_ref (x->handlebox_widget); 4967 g_object_ref (top_widget);
4936 if (x->toolbar_in_hbox) 4968 if (x->toolbar_is_packed)
4937 gtk_container_remove (GTK_CONTAINER (x->hbox_widget), 4969 {
4938 x->handlebox_widget); 4970 if (x->toolbar_in_hbox)
4939 else 4971 gtk_container_remove (GTK_CONTAINER (x->hbox_widget),
4940 gtk_container_remove (GTK_CONTAINER (x->vbox_widget), 4972 top_widget);
4941 x->handlebox_widget); 4973 else
4974 gtk_container_remove (GTK_CONTAINER (x->vbox_widget),
4975 top_widget);
4976 }
4977
4942 xg_pack_tool_bar (f, pos); 4978 xg_pack_tool_bar (f, pos);
4943 g_object_unref (x->handlebox_widget); 4979 g_object_unref (top_widget);
4944 if (xg_update_tool_bar_sizes (f)) 4980 if (xg_update_tool_bar_sizes (f))
4945 xg_height_or_width_changed (f); 4981 xg_height_or_width_changed (f);
4946 4982
@@ -4966,7 +5002,9 @@ xg_initialize (void)
4966 5002
4967 gdpy_def = NULL; 5003 gdpy_def = NULL;
4968 xg_ignore_gtk_scrollbar = 0; 5004 xg_ignore_gtk_scrollbar = 0;
5005#ifdef HAVE_GTK_TEAROFF_MENU_ITEM_NEW
4969 xg_detached_menus = 0; 5006 xg_detached_menus = 0;
5007#endif
4970 xg_menu_cb_list.prev = xg_menu_cb_list.next = 5008 xg_menu_cb_list.prev = xg_menu_cb_list.next =
4971 xg_menu_item_cb_list.prev = xg_menu_item_cb_list.next = 0; 5009 xg_menu_item_cb_list.prev = xg_menu_item_cb_list.next = 0;
4972 5010
diff --git a/src/xdisp.c b/src/xdisp.c
index 26d41a42cc8..2464fc06fa4 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -14250,7 +14250,12 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
14250 CHARPOS is zero or negative. */ 14250 CHARPOS is zero or negative. */
14251 int empty_line_p = 14251 int empty_line_p =
14252 (row->reversed_p ? glyph > glyphs_end : glyph < glyphs_end) 14252 (row->reversed_p ? glyph > glyphs_end : glyph < glyphs_end)
14253 && INTEGERP (glyph->object) && glyph->charpos > 0; 14253 && INTEGERP (glyph->object) && glyph->charpos > 0
14254 /* On a TTY, continued and truncated rows also have a glyph at
14255 their end whose OBJECT is zero and whose CHARPOS is
14256 positive (the continuation and truncation glyphs), but such
14257 rows are obviously not "empty". */
14258 && !(row->continued_p || row->truncated_on_right_p);
14254 14259
14255 if (row->ends_in_ellipsis_p && pos_after == last_pos) 14260 if (row->ends_in_ellipsis_p && pos_after == last_pos)
14256 { 14261 {
diff --git a/src/xterm.h b/src/xterm.h
index e680cbe7dd2..2d99d2f25db 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -473,10 +473,13 @@ struct x_output
473 GtkWidget *menubar_widget; 473 GtkWidget *menubar_widget;
474 /* The tool bar in this frame */ 474 /* The tool bar in this frame */
475 GtkWidget *toolbar_widget; 475 GtkWidget *toolbar_widget;
476 /* The handle box that makes the tool bar detachable. */ 476#ifdef HAVE_GTK_HANDLE_BOX_NEW
477/* The handle box that makes the tool bar detachable. */
477 GtkWidget *handlebox_widget; 478 GtkWidget *handlebox_widget;
479#endif
478 /* Non-zero if tool bar is packed into the hbox widget (i.e. vertical). */ 480 /* Non-zero if tool bar is packed into the hbox widget (i.e. vertical). */
479 int toolbar_in_hbox; 481 bool toolbar_in_hbox;
482 bool toolbar_is_packed;
480 483
481 /* The last size hints set. */ 484 /* The last size hints set. */
482 GdkGeometry size_hints; 485 GdkGeometry size_hints;