aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Verona2013-01-14 00:04:04 +0100
committerJoakim Verona2013-01-14 00:04:04 +0100
commit132fdce3d2530db5a6edeaf4242257ff01ea4760 (patch)
tree75638977b562d18c4cb2b20fab58262bbbe4c2be
parentec43cd5d7289dd1a994dc3517fccce1611966f89 (diff)
parentb35b088608a02d43b39bbfd3240547d3d9de7366 (diff)
downloademacs-132fdce3d2530db5a6edeaf4242257ff01ea4760.tar.gz
emacs-132fdce3d2530db5a6edeaf4242257ff01ea4760.zip
auto upstream
-rw-r--r--ChangeLog4
-rw-r--r--admin/nt/README-ftp-server2
-rw-r--r--doc/misc/ChangeLog11
-rw-r--r--doc/misc/org.texi140
-rw-r--r--etc/NEWS4
-rw-r--r--lisp/ChangeLog33
-rw-r--r--lisp/cus-start.el4
-rw-r--r--lisp/emacs-lisp/timer.el4
-rw-r--r--lisp/gnus/ChangeLog6
-rw-r--r--lisp/gnus/message.el5
-rw-r--r--lisp/jit-lock.el44
-rw-r--r--lisp/mail/rmail.el2
-rw-r--r--lisp/mail/rmailmm.el17
-rw-r--r--lisp/mail/sendmail.el3
-rw-r--r--lisp/org/ChangeLog53
-rw-r--r--lisp/org/ob-eval.el14
-rw-r--r--lisp/org/org-agenda.el148
-rw-r--r--lisp/org/org-capture.el8
-rw-r--r--lisp/org/org-clock.el2
-rw-r--r--lisp/org/org-compat.el28
-rw-r--r--lisp/org/org-id.el2
-rw-r--r--lisp/org/org-lparse.el4
-rw-r--r--lisp/org/org-mobile.el8
-rw-r--r--lisp/org/org-odt.el2
-rw-r--r--lisp/org/org-protocol.el6
-rw-r--r--lisp/org/org-version.el4
-rw-r--r--lisp/org/org.el35
-rw-r--r--lisp/progmodes/python.el13
-rw-r--r--lisp/subr.el19
-rwxr-xr-xmake-dist10
-rw-r--r--src/ChangeLog44
-rw-r--r--src/emacs.c19
-rw-r--r--src/gtkutil.c18
-rw-r--r--src/nsfont.m35
-rw-r--r--src/nsterm.m2
-rw-r--r--src/sysdep.c19
-rw-r--r--src/xterm.c43
37 files changed, 528 insertions, 287 deletions
diff --git a/ChangeLog b/ChangeLog
index f306aefbd1b..dabe3b3d7db 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
12013-01-13 Glenn Morris <rgm@gnu.org>
2
3 * make-dist: Add options for xz compression and no compression.
4
12013-01-12 Paul Eggert <eggert@cs.ucla.edu> 52013-01-12 Paul Eggert <eggert@cs.ucla.edu>
2 6
3 Enable conservative stack scanning for all architectures. 7 Enable conservative stack scanning for all architectures.
diff --git a/admin/nt/README-ftp-server b/admin/nt/README-ftp-server
index 16d8887ed5a..5983a0f9617 100644
--- a/admin/nt/README-ftp-server
+++ b/admin/nt/README-ftp-server
@@ -288,4 +288,4 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
288GNU General Public License for more details. 288GNU General Public License for more details.
289 289
290You should have received a copy of the GNU General Public License 290You should have received a copy of the GNU General Public License
291along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 291along with GNU Emacs. If not, see http://www.gnu.org/licenses/.
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 4412b1c3c2c..95c7ac7b233 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,14 @@
12013-01-13 Bastien Guerry <bzg@gnu.org>
2
3 * org.texi (Installation): Simplify.
4
52013-01-13 François Allisson <francois@allisson.co> (tiny change)
6
7 * org.texi (Handling links): Update the mention to the obsolete
8 variable `org-link-to-org-use-id' with a mention to the newer
9 variable `org-id-link-to-org-use-id'. Mention the need to load
10 the org-id library.
11
12013-01-10 Michael Albinus <michael.albinus@gmx.de> 122013-01-10 Michael Albinus <michael.albinus@gmx.de>
2 13
3 * tramp.texi (Default Host): Introduce `tramp-default-host-alist'. 14 * tramp.texi (Default Host): Introduce `tramp-default-host-alist'.
diff --git a/doc/misc/org.texi b/doc/misc/org.texi
index 75298db29fe..d41d2848cc6 100644
--- a/doc/misc/org.texi
+++ b/doc/misc/org.texi
@@ -2,7 +2,7 @@
2@c %**start of header 2@c %**start of header
3@setfilename ../../info/org 3@setfilename ../../info/org
4@settitle The Org Manual 4@settitle The Org Manual
5@set VERSION 7.9.3+ (GNU Emacs 24.3) 5@set VERSION 7.9.3d (GNU Emacs 24.3)
6 6
7@c Use proper quote and backtick for code sections in PDF output 7@c Use proper quote and backtick for code sections in PDF output
8@c Cf. Texinfo manual 14.2 8@c Cf. Texinfo manual 14.2
@@ -339,7 +339,7 @@ with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison,
339Introduction 339Introduction
340 340
341* Summary:: Brief summary of what Org does 341* Summary:: Brief summary of what Org does
342* Installation:: How to install a downloaded version of Org 342* Installation:: Installing Org
343* Activation:: How to activate Org for certain buffers 343* Activation:: How to activate Org for certain buffers
344* Feedback:: Bug reports, ideas, patches etc. 344* Feedback:: Bug reports, ideas, patches etc.
345* Conventions:: Typesetting conventions in the manual 345* Conventions:: Typesetting conventions in the manual
@@ -771,7 +771,7 @@ MobileOrg
771 771
772@menu 772@menu
773* Summary:: Brief summary of what Org does 773* Summary:: Brief summary of what Org does
774* Installation:: How to install a downloaded version of Org 774* Installation:: Installing Org
775* Activation:: How to activate Org for certain buffers 775* Activation:: How to activate Org for certain buffers
776* Feedback:: Bug reports, ideas, patches etc. 776* Feedback:: Bug reports, ideas, patches etc.
777* Conventions:: Typesetting conventions in the manual 777* Conventions:: Typesetting conventions in the manual
@@ -851,118 +851,69 @@ Theory Ltd.}
851@cindex installation 851@cindex installation
852@cindex XEmacs 852@cindex XEmacs
853 853
854@b{Important:} @i{If you the version of Org that comes with Emacs or as a 854Org is part of recent distributions of GNU Emacs, so you normally don't need
855XEmacs package, please skip this section and go directly to @ref{Activation}. 855to install it. If, for one reason or another, you want to install Org on top
856If you downloaded Org as an ELPA package, please read the instructions on the 856of this pre-packaged version, there are three ways to do it:
857@uref{http://orgmode.org/elpa.html, Org ELPA page}. To see what version of Org
858(if any) is part of your Emacs distribution, type @kbd{M-x org-version} (if
859your Emacs distribution does not come with Org, this function will not be
860defined).}
861
862Installation of Org mode uses a build system, which is described in more
863detail on @uref{http://orgmode.org/worg/dev/org-build-system.html, Worg}.
864
865If you have downloaded Org from the Web as a distribution @file{.zip} or
866@file{.tar.gz} archive, take the following steps to install it:
867 857
868@itemize @bullet 858@itemize @bullet
869@item Unpack the distribution archive. 859@item By using Emacs package system.
870@item Change into (@code{cd}) the Org directory. 860@item By downloading Org as an archive.
871@item Run @code{make help config} 861@item By using Org's git repository.
872and then check and edit the file @file{local.mk} if the default configuration
873does not match your system. Set the name of the Emacs binary (likely either
874@file{emacs} or @file{xemacs}), and the paths to the directories where local
875Lisp and Info files will be installed. If the Emacs binary is not in your
876path, give the full path to the executable. Avoid spaces in any path names.
877@item Run @code{make config}
878again to check the configuration.
879@item Run @code{make install} or @code{sudo make install}
880to build and install Org mode on your system.
881@end itemize 862@end itemize
882 863
883If you use a cloned Git repository, then the procedure is slightly different. 864We @b{strongly recommend} to stick to a single installation method.
884The following description assumes that you are using the @code{master} branch
885(where the development is done). You could also use the @code{maint} branch
886instead, where the release versions are published, just replace @code{master}
887with @code{maint} in the description below.
888 865
889@itemize @bullet 866@subsubheading Using Emacs packaging system
890@item Change into (@code{cd}) the Org repository.
891@item Run @code{git checkout master}
892to switch to the @code{master} branch of the Org repository.
893@item Run @code{make help}
894and then check and edit the file @file{local.mk}. You must set the name of
895the Emacs binary (likely either @file{emacs} or @file{xemacs}), and the paths
896to the directories where local Lisp and Info files will be installed. If the
897Emacs binary is not in your path, you must give the full path to the
898executable. Avoid spaces in any path names.
899@item Run @code{make config}
900to check the configuration.
901@item Optionally run @code{make test}
902to build Org mode and then run the full testsuite.
903@item Run @code{make update2} or @code{make up2}
904to update the Git repository and build and install Org mode. The latter
905invocation runs the complete test suite before installation and installs only
906if the build passes all tests.
907@end itemize
908 867
909If you don't have access to the system-wide directories and you don't want to 868Recent Emacs distributions include a packaging system which lets you install
910install somewhere into your home directory, you can run Org directly from the 869Elisp libraries. You can install Org with @kbd{M-x package-install RET org}.
911distribution directory or Org repository by compiling Org mode in place: 870To make sure your Org configuration is well taken into account, initialize
912 871the package system with @code{(package-initialize)} before setting any Org
913@itemize @bullet 872option. If you want to use Org's package repository, check out the
914@item Change into (@code{cd}) the Org repository. 873@uref{http://orgmode.org/elpa.html, Org ELPA page}.
915@item Run @code{git checkout master}
916to switch to the @code{master} branch of the Org repository.
917@item Run @code{make compile}
918@end itemize
919 874
920Last but not least you can also run Org mode directly from an Org repository 875@subsubheading Downloading Org as an archive
921without any compilation. Simply replace the last step in the recipe above
922with @code{make uncompiled}.
923 876
924Then add the following line to @file{.emacs}: 877You can download Org latest release from @uref{http://orgmode.org/, Org's
878website}. In this case, make sure you set the load-path correctly in your
879@file{.emacs}:
925 880
926@example 881@example
927(add-to-list 'load-path "~/path/to/orgdir/lisp") 882(add-to-list 'load-path "~/path/to/orgdir/lisp")
928@end example 883@end example
929 884
930@noindent 885The downloaded archive contains contributed libraries that are not included
931If you plan to use code from the @file{contrib} subdirectory without 886in Emacs. If you want to use them, add the @file{contrib} directory to your
932compiling them, do a similar step for this directory: 887load-path:
933 888
934@example 889@example
935(add-to-list 'load-path "~/path/to/orgdir/contrib/lisp" t) 890(add-to-list 'load-path "~/path/to/orgdir/contrib/lisp" t)
936@end example 891@end example
937 892
938If you want to include those files with the build and install, please 893Optionally, you can compile the files and/or install them in your system.
939customize the variable @code{ORG_ADD_CONTRIB} instead in your @code{local.mk} 894Run @code{make help} to list compilation and installation options.
940file, for more details please see this
941@uref{http://orgmode.org/worg/dev/org-build-system.html#sec-4-1-2,
942description on Worg}.
943 895
944Installing Info files is system dependent, because of differences in the 896@subsubheading Using Org's git repository
945@file{install-info} program. The Info documentation is installed together 897
946with the rest of Org mode. If you don't install Org mode, it is possible to 898You can clone Org's repository and install Org like this:
947install the Info documentation separately (you need to have
948install-info@footnote{The output from install-info (if any) is system
949dependent. In particular Debian and its derivatives use two different
950versions of install-info and you may see the message:
951 899
952@example 900@example
953This is not dpkg install-info anymore, but GNU install-info 901$ cd ~/src/
954See the man page for ginstall-info for command line arguments 902$ git clone git://orgmode.org/org-mode.git
903$ make autoloads
955@end example 904@end example
956 905
957@noindent which can be safely ignored.} 906Note that @code{make autoloads} is mandatory: it defines Org's version and
958on your system). 907Org's autoloaded functions, respectively in @file{org-version.el} and in
908@file{org-loaddefs.el}.
959 909
960@example 910Remember to add the correct load-path as described in the method above.
961make install-info
962@end example
963 911
964Do not forget to activate Org as described in the following section. 912You can also compile and install Org from this git repository: check
965@page 913@code{make help} to get the list of compilation/installation options.
914
915For more detailed explanations on Org's build system, please check the Org
916Build System page on @uref{http://orgmode.org/worg/dev/org-build-system.html, Worg}.
966 917
967@node Activation, Feedback, Installation, Introduction 918@node Activation, Feedback, Installation, Introduction
968@section Activation 919@section Activation
@@ -3384,13 +3335,16 @@ be the description@footnote{If the headline contains a timestamp, it will be
3384removed from the link and result in a wrong link---you should avoid putting 3335removed from the link and result in a wrong link---you should avoid putting
3385timestamp in the headline.}. 3336timestamp in the headline.}.
3386 3337
3387@vindex org-link-to-org-use-id 3338@vindex org-id-link-to-org-use-id
3388@cindex property, CUSTOM_ID 3339@cindex property, CUSTOM_ID
3389@cindex property, ID 3340@cindex property, ID
3390If the headline has a @code{CUSTOM_ID} property, a link to this custom ID 3341If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
3391will be stored. In addition or alternatively (depending on the value of 3342will be stored. In addition or alternatively (depending on the value of
3392@code{org-link-to-org-use-id}), a globally unique @code{ID} property will be 3343@code{org-id-link-to-org-use-id}), a globally unique @code{ID} property will
3393created and/or used to construct a link. So using this command in Org 3344be created and/or used to construct a link@footnote{The library @code{org-id}
3345must first be loaded, either through @code{org-customize} by enabling
3346@code{id} in @code{org-modules} , or by adding @code{(require 'org-id)} in
3347your @file{.emacs}.}. So using this command in Org
3394buffers will potentially create two links: a human-readable from the custom 3348buffers will potentially create two links: a human-readable from the custom
3395ID, and one that is globally unique and works even if the entry is moved from 3349ID, and one that is globally unique and works even if the entry is moved from
3396file to file. Later, when inserting the link, you need to decide which one 3350file to file. Later, when inserting the link, you need to decide which one
diff --git a/etc/NEWS b/etc/NEWS
index 52429a3e21d..0471683fa9b 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -58,6 +58,8 @@ entries of a file. On GNU/Linux, the POSIX ACL interface is used via
58libacl. On MS-Windows, the NT Security APIs are used to emulate the 58libacl. On MS-Windows, the NT Security APIs are used to emulate the
59POSIX ACL interfaces. 59POSIX ACL interfaces.
60 60
61** New option `scroll-bar-adjust-thumb-portion'.
62
61* Editing Changes in Emacs 24.4 63* Editing Changes in Emacs 24.4
62 64
63** New commands `toggle-frame-fullscreen' and `toggle-frame-maximized', 65** New commands `toggle-frame-fullscreen' and `toggle-frame-maximized',
@@ -66,6 +68,8 @@ bound to <f11> and M-<f10>, respectively.
66 68
67* Changes in Specialized Modes and Packages in Emacs 24.4 69* Changes in Specialized Modes and Packages in Emacs 24.4
68 70
71** jit-lock-debug-mode lets you use the debuggers on code run via jit-lock.
72
69** completing-read-multiple's separator can now be a regexp. 73** completing-read-multiple's separator can now be a regexp.
70The default separator is changed to allow surrounding spaces around the comma. 74The default separator is changed to allow surrounding spaces around the comma.
71 75
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7723528c886..5c7e8c3e6a8 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,36 @@
12013-01-13 Fabián Ezequiel Gallina <fgallina@cuca>
2
3 * progmodes/python.el (python-nav-end-of-statement): Fix
4 cornercase when handling multiline strings.
5
62013-01-13 Richard Stallman <rms@gnu.org>
7
8 * mail/sendmail.el (mail-position-on-field): Add doc string.
9
10 * mail/rmailmm.el (rmail-insert-mime-forwarded-message): Get
11 current message boundaries and pass them to
12 message-forward-make-body-mime. Minor style changes.
13
142013-01-13 Eli Zaretskii <eliz@gnu.org>
15
16 * cus-start.el (all): Avoid warnings about
17 scroll-bar-adjust-thumb-portion on platforms where it is not
18 defined.
19
202013-01-11 Jan Djärv <jan.h.d@swipnet.se>
21
22 * cus-start.el (all): Add scroll-bar-adjust-thumb-portion.
23
242013-01-13 Stefan Monnier <monnier@iro.umontreal.ca>
25
26 * jit-lock.el (jit-lock-debug-mode): New minor mode.
27 (jit-lock--debug-fontifying): New var.
28 (jit-lock--debug-fontify): New function.
29 * subr.el (condition-case-unless-debug): Don't prevent catching the
30 error, just let the debbugger run.
31 * emacs-lisp/timer.el (timer-event-handler): Don't prevent debugging
32 timer code and don't drop errors silently.
33
12013-01-12 Michael Albinus <michael.albinus@gmx.de> 342013-01-12 Michael Albinus <michael.albinus@gmx.de>
2 35
3 * autorevert.el (auto-revert-notify-watch-descriptor): Give it 36 * autorevert.el (auto-revert-notify-watch-descriptor): Give it
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index b954ed60baa..62e91fafcbf 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -513,6 +513,7 @@ since it could result in memory overflow and make Emacs crash."
513 (x-use-underline-position-properties display boolean "22.1") 513 (x-use-underline-position-properties display boolean "22.1")
514 (x-underline-at-descent-line display boolean "22.1") 514 (x-underline-at-descent-line display boolean "22.1")
515 (x-stretch-cursor display boolean "21.1") 515 (x-stretch-cursor display boolean "21.1")
516 (scroll-bar-adjust-thumb-portion windows boolean "24.4")
516 ;; xselect.c 517 ;; xselect.c
517 (x-select-enable-clipboard-manager killing boolean "24.1") 518 (x-select-enable-clipboard-manager killing boolean "24.1")
518 ;; xsettings.c 519 ;; xsettings.c
@@ -575,6 +576,9 @@ since it could result in memory overflow and make Emacs crash."
575 (symbol-name symbol)) 576 (symbol-name symbol))
576 ;; Any function from fontset.c will do. 577 ;; Any function from fontset.c will do.
577 (fboundp 'new-fontset)) 578 (fboundp 'new-fontset))
579 ((equal "scroll-bar-adjust-thumb-portion"
580 (symbol-name symbol))
581 (featurep 'x))
578 (t t)))) 582 (t t))))
579 (if (not (boundp symbol)) 583 (if (not (boundp symbol))
580 ;; If variables are removed from C code, give an error here! 584 ;; If variables are removed from C code, give an error here!
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el
index 3eaacd24ec8..8b019d0a785 100644
--- a/lisp/emacs-lisp/timer.el
+++ b/lisp/emacs-lisp/timer.el
@@ -307,13 +307,13 @@ This function is called, by name, directly by the C code."
307 ;; Run handler. 307 ;; Run handler.
308 ;; We do this after rescheduling so that the handler function 308 ;; We do this after rescheduling so that the handler function
309 ;; can cancel its own timer successfully with cancel-timer. 309 ;; can cancel its own timer successfully with cancel-timer.
310 (condition-case nil 310 (condition-case-unless-debug err
311 ;; Timer functions should not change the current buffer. 311 ;; Timer functions should not change the current buffer.
312 ;; If they do, all kinds of nasty surprises can happen, 312 ;; If they do, all kinds of nasty surprises can happen,
313 ;; and it can be hellish to track down their source. 313 ;; and it can be hellish to track down their source.
314 (save-current-buffer 314 (save-current-buffer
315 (apply (timer--function timer) (timer--args timer))) 315 (apply (timer--function timer) (timer--args timer)))
316 (error nil)) 316 (error (message "Error in timer: %S" err)))
317 (if retrigger 317 (if retrigger
318 (setf (timer--triggered timer) nil))) 318 (setf (timer--triggered timer) nil)))
319 (error "Bogus timer event")))) 319 (error "Bogus timer event"))))
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 44dbf060e49..1524f000450 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,9 @@
12013-01-13 Richard Stallman <rms@gnu.org>
2
3 * message.el (message-forward-make-body-mime): New args BEG, END
4 specify what part of FORWARD-BUFFER to use. Do the work directly
5 instead of calling `mml-insert-buffer'.
6
12013-01-11 Aaron S. Hawley <Aaron.Hawley@vtinfo.com> 72013-01-11 Aaron S. Hawley <Aaron.Hawley@vtinfo.com>
2 8
3 * gnus-start.el (gnus-check-new-newsgroups): Fix ambiguous doc string 9 * gnus-start.el (gnus-check-new-newsgroups): Fix ambiguous doc string
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 8832899c55d..808e1edd6c3 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -7376,12 +7376,13 @@ Optional DIGEST will use digest to forward."
7376 (dolist (elem ignored) 7376 (dolist (elem ignored)
7377 (message-remove-header elem t)))))) 7377 (message-remove-header elem t))))))
7378 7378
7379(defun message-forward-make-body-mime (forward-buffer) 7379(defun message-forward-make-body-mime (forward-buffer &optional beg end)
7380 (let ((b (point))) 7380 (let ((b (point)))
7381 (insert "\n\n<#part type=message/rfc822 disposition=inline raw=t>\n") 7381 (insert "\n\n<#part type=message/rfc822 disposition=inline raw=t>\n")
7382 (save-restriction 7382 (save-restriction
7383 (narrow-to-region (point) (point)) 7383 (narrow-to-region (point) (point))
7384 (mml-insert-buffer forward-buffer) 7384 (insert-buffer-substring forward-buffer beg end)
7385 (mml-quote-region (point-min) (point-max))
7385 (goto-char (point-min)) 7386 (goto-char (point-min))
7386 (when (looking-at "From ") 7387 (when (looking-at "From ")
7387 (replace-match "X-From-Line: ")) 7388 (replace-match "X-From-Line: "))
diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el
index 7be5df72c84..668f1ec963a 100644
--- a/lisp/jit-lock.el
+++ b/lisp/jit-lock.el
@@ -257,6 +257,47 @@ the variable `jit-lock-stealth-nice'."
257 (remove-hook 'after-change-functions 'jit-lock-after-change t) 257 (remove-hook 'after-change-functions 'jit-lock-after-change t)
258 (remove-hook 'fontification-functions 'jit-lock-function)))) 258 (remove-hook 'fontification-functions 'jit-lock-function))))
259 259
260(define-minor-mode jit-lock-debug-mode
261 "Minor mode to help debug code run from jit-lock.
262When this minor mode is enabled, jit-lock runs as little code as possible
263during redisplay and moves the rest to a timer, where things
264like `debug-on-error' and Edebug can be used."
265 :global t
266 (when jit-lock-defer-timer
267 (cancel-timer jit-lock-defer-timer)
268 (setq jit-lock-defer-timer nil))
269 (when jit-lock-debug-mode
270 (setq jit-lock-defer-timer
271 (run-with-idle-timer 0 t #'jit-lock--debug-fontify))))
272
273(defvar jit-lock--debug-fontifying nil)
274
275(defun jit-lock--debug-fontify ()
276 "Fontify what was deferred for debugging."
277 (when (and (not jit-lock--debug-fontifying)
278 jit-lock-defer-buffers (not memory-full))
279 (let ((jit-lock--debug-fontifying t)
280 (inhibit-debugger nil)) ;FIXME: Not sufficient!
281 ;; Mark the deferred regions back to `fontified = nil'
282 (dolist (buffer jit-lock-defer-buffers)
283 (when (buffer-live-p buffer)
284 (with-current-buffer buffer
285 ;; (message "Jit-Debug %s" (buffer-name))
286 (with-buffer-prepared-for-jit-lock
287 (let ((pos (point-min)))
288 (while
289 (progn
290 (when (eq (get-text-property pos 'fontified) 'defer)
291 (let ((beg pos)
292 (end (setq pos (next-single-property-change
293 pos 'fontified
294 nil (point-max)))))
295 (put-text-property beg end 'fontified nil)
296 (jit-lock-fontify-now beg end)))
297 (setq pos (next-single-property-change
298 pos 'fontified)))))))))
299 (setq jit-lock-defer-buffers nil))))
300
260(defun jit-lock-register (fun &optional contextual) 301(defun jit-lock-register (fun &optional contextual)
261 "Register FUN as a fontification function to be called in this buffer. 302 "Register FUN as a fontification function to be called in this buffer.
262FUN will be called with two arguments START and END indicating the region 303FUN will be called with two arguments START and END indicating the region
@@ -504,7 +545,8 @@ non-nil in a repeated invocation of this function."
504 pos (setq pos (next-single-property-change 545 pos (setq pos (next-single-property-change
505 pos 'fontified nil (point-max))) 546 pos 'fontified nil (point-max)))
506 'fontified nil)) 547 'fontified nil))
507 (setq pos (next-single-property-change pos 'fontified))))))))) 548 (setq pos (next-single-property-change
549 pos 'fontified)))))))))
508 (setq jit-lock-defer-buffers nil) 550 (setq jit-lock-defer-buffers nil)
509 ;; Force fontification of the visible parts. 551 ;; Force fontification of the visible parts.
510 (let ((jit-lock-defer-timer nil)) 552 (let ((jit-lock-defer-timer nil))
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index e32d3c608d4..c6385498dcd 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -4647,7 +4647,7 @@ With prefix argument N moves forward N messages with these labels.
4647 4647
4648;;;*** 4648;;;***
4649 4649
4650;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "1f33964668345a1a1f3119fece148227") 4650;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "93951f748e43e1015da1b485088970ca")
4651;;; Generated autoloads from rmailmm.el 4651;;; Generated autoloads from rmailmm.el
4652 4652
4653(autoload 'rmail-mime "rmailmm" "\ 4653(autoload 'rmail-mime "rmailmm" "\
diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el
index 566dec1ad39..350e3dacbcf 100644
--- a/lisp/mail/rmailmm.el
+++ b/lisp/mail/rmailmm.el
@@ -1365,14 +1365,15 @@ The arguments ARG and STATE have no effect in this case."
1365(defun rmail-insert-mime-forwarded-message (forward-buffer) 1365(defun rmail-insert-mime-forwarded-message (forward-buffer)
1366 "Insert the message in FORWARD-BUFFER as a forwarded message. 1366 "Insert the message in FORWARD-BUFFER as a forwarded message.
1367This is the usual value of `rmail-insert-mime-forwarded-message-function'." 1367This is the usual value of `rmail-insert-mime-forwarded-message-function'."
1368 (let ((message-buffer 1368 (let (contents-buffer start end)
1369 (with-current-buffer forward-buffer 1369 (with-current-buffer forward-buffer
1370 (if rmail-buffer-swapped 1370 (setq contents-buffer
1371 rmail-view-buffer 1371 (if rmail-buffer-swapped
1372 forward-buffer)))) 1372 rmail-view-buffer
1373 (save-restriction 1373 forward-buffer)
1374 (narrow-to-region (point) (point)) 1374 start (rmail-msgbeg rmail-current-message)
1375 (message-forward-make-body-mime message-buffer)))) 1375 end (rmail-msgend rmail-current-message)))
1376 (message-forward-make-body-mime contents-buffer start end)))
1376 1377
1377(setq rmail-insert-mime-forwarded-message-function 1378(setq rmail-insert-mime-forwarded-message-function
1378 'rmail-insert-mime-forwarded-message) 1379 'rmail-insert-mime-forwarded-message)
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index e86229a5cfb..e1dee3295f2 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -1493,6 +1493,9 @@ just append to the file, in Babyl format if necessary."
1493 (insert "\nMail-Followup-To: ")))) 1493 (insert "\nMail-Followup-To: "))))
1494 1494
1495(defun mail-position-on-field (field &optional soft) 1495(defun mail-position-on-field (field &optional soft)
1496 "Move to the start of the contents of header field FIELD.
1497If there is none, insert one, unless SOFT is non-nil.
1498If there are multiple FIELD fields, this goes to the first."
1496 (let (end 1499 (let (end
1497 (case-fold-search t)) 1500 (case-fold-search t))
1498 (setq end (mail-header-end)) 1501 (setq end (mail-header-end))
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index 3a575f60414..56a76c7d680 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -1,24 +1,47 @@
12013-01-09 Achim Gratz <Stromeko@Stromeko.de> 12013-01-13 Bastien Guerry <bzg@gnu.org>
2
3 * org-compat.el (org-condition-case-unless-debug): Delete.
4
5 * org-odt.el (org-odt-cleanup-xml-buffers): Use
6 `condition-case' instead of `org-condition-case-unless-debug',
7 which is now deleted.
8
9 * org-capture.el (org-capture-templates-contexts):
10 * org-agenda.el (org-agenda-custom-commands-contexts):
11 Docstring fix.
12
13 * org.el (org-get-tags-at): Remove duplicate inherited tags.
14
15 * org-agenda.el (org-agenda-show-inherited-tags): Allow to be set
16 to 'always or to a list of agenda types.
17 (org-agenda-finalize): Rework conditions under which inherited
18 tags should be made available even when not displayed.
19 (org-search-view, org-agenda-get-todos)
20 (org-agenda-get-timestamps, org-agenda-get-sexps)
21 (org-agenda-get-progress, org-agenda-get-scheduled)
22 (org-agenda-get-blocks): Use new possible values of
23 `org-agenda-show-inherited-tags'.
2 24
3 * org-compat.el (org-define-obsolete-function-alias) 25 * org.el (org-open-at-point): Fix opening all links at point.
4 (org-define-obsolete-variable-alias): Introduce new compatibility
5 macros to obsolete functions and variables.
6 26
7 * org-agenda.el, org-clock.el, org-id.el, org-lparse.el: 27 * org-agenda.el (org-get-entries-from-diary): Turn off
8 * org-protocol.el, org.el: 28 `diary-file-name-prefix' instead of
9 Use `org-define-obsolete-{function,variable}-alias' instead 29 `diary-file-name-prefix-function', the former is checked before
10 of `define-obsolate{function,variable}-alias'. 30 the latter.
31
32 * org.el (org-edit-special): Check for table.el before checking
33 for Org tables.
34
352013-01-13 Michael Albinus <michael.albinus@gmx.de>
36
37 * ob-eval.el (org-babel-shell-command-on-region): Use
38 `executable-find' for local `shell-file-name'.
39
402013-01-09 Achim Gratz <Stromeko@Stromeko.de>
11 41
12 * org-faces.el: Define face alias mode-line for XEmacs (it's 42 * org-faces.el: Define face alias mode-line for XEmacs (it's
13 called modeline there). 43 called modeline there).
14 44
15 * org-compat.el (org-condition-case-unless-debug): Do not use
16 defalias for special forms, the Emacs 22 byte-compiler does not
17 recognize them correctly when compiling macros. Use a macro
18 instead and rely on macro expansion. That however makes the
19 decision at compile time, which should be acceptable in this case
20 since it only affects debugging.
21
22 * org-compat.el (org-no-popups): New wrapper macro which let-binds 45 * org-compat.el (org-no-popups): New wrapper macro which let-binds
23 the correct variables to suppress popup windows depending on the 46 the correct variables to suppress popup windows depending on the
24 Emacs version in use. This is a compile-time decision when 47 Emacs version in use. This is a compile-time decision when
diff --git a/lisp/org/ob-eval.el b/lisp/org/ob-eval.el
index 5884d33d786..22d2bcf288e 100644
--- a/lisp/org/ob-eval.el
+++ b/lisp/org/ob-eval.el
@@ -137,11 +137,17 @@ specifies the value of ERROR-BUFFER."
137 t))) 137 t)))
138 (let ((input-file (org-babel-temp-file "input-")) 138 (let ((input-file (org-babel-temp-file "input-"))
139 (error-file (if error-buffer (org-babel-temp-file "scor-") nil)) 139 (error-file (if error-buffer (org-babel-temp-file "scor-") nil))
140 ;; Unfortunately, `executable-find' does not support file name
141 ;; handlers. Therefore, we could use it in the local case
142 ;; only.
140 (shell-file-name 143 (shell-file-name
141 (if (file-executable-p 144 (cond ((and (not (file-remote-p default-directory))
142 (concat (file-remote-p default-directory) shell-file-name)) 145 (executable-find shell-file-name))
143 shell-file-name 146 shell-file-name)
144 "/bin/sh")) 147 ((file-executable-p
148 (concat (file-remote-p default-directory) shell-file-name))
149 shell-file-name)
150 ("/bin/sh")))
145 exit-status) 151 exit-status)
146 ;; There is an error in `process-file' when `error-file' exists. 152 ;; There is an error in `process-file' when `error-file' exists.
147 ;; This is fixed in Emacs trunk as of 2012-12-21; let's use this 153 ;; This is fixed in Emacs trunk as of 2012-12-21; let's use this
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index 2eb96c2510b..ca8459ca33d 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -890,7 +890,7 @@ you want to use two-columns display (see `org-agenda-menu-two-columns')."
890 :version "24.1" 890 :version "24.1"
891 :type 'boolean) 891 :type 'boolean)
892 892
893(org-define-obsolete-variable-alias 'org-agenda-menu-two-column 'org-agenda-menu-two-columns "24.3") 893(define-obsolete-variable-alias 'org-agenda-menu-two-column 'org-agenda-menu-two-columns "24.3")
894 894
895(defcustom org-agenda-menu-two-columns nil 895(defcustom org-agenda-menu-two-columns nil
896 "Non-nil means, use two columns to show custom commands in the dispatcher. 896 "Non-nil means, use two columns to show custom commands in the dispatcher.
@@ -900,7 +900,7 @@ to nil."
900 :version "24.1" 900 :version "24.1"
901 :type 'boolean) 901 :type 'boolean)
902 902
903(org-define-obsolete-variable-alias 'org-finalize-agenda-hook 'org-agenda-finalize-hook "24.3") 903(define-obsolete-variable-alias 'org-finalize-agenda-hook 'org-agenda-finalize-hook "24.3")
904(defcustom org-agenda-finalize-hook nil 904(defcustom org-agenda-finalize-hook nil
905 "Hook run just before displaying an agenda buffer. 905 "Hook run just before displaying an agenda buffer.
906The buffer is still writable when the hook is called. 906The buffer is still writable when the hook is called.
@@ -1648,26 +1648,53 @@ When non-nil, this must be the number of minutes, e.g. 60 for one hour."
1648 (const :tag "No default duration"))) 1648 (const :tag "No default duration")))
1649 1649
1650(defcustom org-agenda-show-inherited-tags t 1650(defcustom org-agenda-show-inherited-tags t
1651 "Non-nil means show inherited tags in each agenda line." 1651 "Non-nil means show inherited tags in each agenda line.
1652
1653When this option is set to 'always, it take precedences over
1654`org-agenda-use-tag-inheritance' and inherited tags are shown
1655in every agenda.
1656
1657When this option is set to t (the default), inherited tags are
1658shown when they are available, i.e. when the value of
1659`org-agenda-use-tag-inheritance' has been taken into account.
1660
1661This can be set to a list of agenda types in which the agenda
1662must display the inherited tags. Available types are 'todo,
1663'agenda, 'search and 'timeline.
1664
1665When set to nil, never show inherited tags in agenda lines."
1652 :group 'org-agenda-line-format 1666 :group 'org-agenda-line-format
1653 :type 'boolean) 1667 :group 'org-agenda
1668 :version "24.3"
1669 :type '(choice
1670 (const :tag "Show inherited tags when available" t)
1671 (const :tag "Always show inherited tags" 'always)
1672 (repeat :tag "Show inherited tags only in selected agenda types"
1673 (symbol :tag "Agenda type"))))
1654 1674
1655(defcustom org-agenda-use-tag-inheritance '(todo search timeline agenda) 1675(defcustom org-agenda-use-tag-inheritance '(todo search timeline agenda)
1656 "List of agenda view types where to use tag inheritance. 1676 "List of agenda view types where to use tag inheritance.
1657 1677
1658In tags/tags-todo/tags-tree agenda views, tag inheritance is 1678In tags/tags-todo/tags-tree agenda views, tag inheritance is
1659controlled by `org-use-tag-inheritance'. In other agenda types, 1679controlled by `org-use-tag-inheritance'. In other agenda types,
1660`org-use-tag-inheritance' is not used when selecting the agenda 1680`org-use-tag-inheritance' is not used for the selection of the
1661entries, but you may want the agenda to use the inherited tags 1681agenda entries. Still, you may want the agenda to be aware of
1662anyway, e.g. for later tag filtering. 1682the inherited tags anyway, e.g. for later tag filtering.
1663 1683
1664The default value reset tags in every agenda type. Setting this 1684Allowed value are 'todo, 'search, 'timeline and 'agenda.
1665option to nil will speed up non-tags agenda view a lot.
1666 1685
1667Allowed value are 'todo, 'search, 'timeline and 'agenda." 1686This variable has no effect if `org-agenda-show-inherited-tags'
1668 :version "24.3" 1687is set to 'always. In that case, the agenda is aware of those
1688tags.
1689
1690The default value sets tags in every agenda type. Setting this
1691option to nil will speed up non-tags agenda view a lot."
1669 :group 'org-agenda 1692 :group 'org-agenda
1670 :type '(repeat (symbol :tag "Agenda type"))) 1693 :version "24.3"
1694 :type '(choice
1695 (const :tag "Use tag inheritance in all agenda types" t)
1696 (repeat :tag "Use tag inheritance in selected agenda types"
1697 (symbol :tag "Agenda type"))))
1671 1698
1672(defcustom org-agenda-hide-tags-regexp nil 1699(defcustom org-agenda-hide-tags-regexp nil
1673 "Regular expression used to filter away specific tags in agenda views. 1700 "Regular expression used to filter away specific tags in agenda views.
@@ -2363,7 +2390,7 @@ For example, if you have a custom agenda command \"p\" and you
2363want this command to be accessible only from plain text files, 2390want this command to be accessible only from plain text files,
2364use this: 2391use this:
2365 2392
2366 '((\"p\" (in-file . \"\\.txt\"))) 2393 '((\"p\" ((in-file . \"\\.txt\"))))
2367 2394
2368Here are the available contexts definitions: 2395Here are the available contexts definitions:
2369 2396
@@ -2379,7 +2406,7 @@ accessible if there is at least one valid check.
2379You can also bind a key to another agenda custom command 2406You can also bind a key to another agenda custom command
2380depending on contextual rules. 2407depending on contextual rules.
2381 2408
2382 '((\"p\" \"q\" (in-file . \"\\.txt\"))) 2409 '((\"p\" \"q\" ((in-file . \"\\.txt\"))))
2383 2410
2384Here it means: in .txt files, use \"p\" as the key for the 2411Here it means: in .txt files, use \"p\" as the key for the
2385agenda command otherwise associated with \"q\". (The command 2412agenda command otherwise associated with \"q\". (The command
@@ -3569,8 +3596,14 @@ generating a new one."
3569 (save-excursion (next-single-property-change (point-min) 'org-habit-p))) 3596 (save-excursion (next-single-property-change (point-min) 'org-habit-p)))
3570 (org-habit-insert-consistency-graphs)) 3597 (org-habit-insert-consistency-graphs))
3571 (setq org-agenda-type (org-get-at-bol 'org-agenda-type)) 3598 (setq org-agenda-type (org-get-at-bol 'org-agenda-type))
3572 (when (delq nil (mapcar (lambda (tp) (org-agenda-check-type nil tp)) 3599 (unless (or (eq org-agenda-show-inherited-tags 'always)
3573 org-agenda-use-tag-inheritance)) 3600 (and (listp org-agenda-show-inherited-tags)
3601 (memq org-agenda-type org-agenda-show-inherited-tags))
3602 (and (eq org-agenda-show-inherited-tags t)
3603 (or (eq org-agenda-use-tag-inheritance t)
3604 (and (listp org-agenda-use-tag-inheritance)
3605 (not (memq org-agenda-type
3606 org-agenda-use-tag-inheritance))))))
3574 (let (mrk) 3607 (let (mrk)
3575 (save-excursion 3608 (save-excursion
3576 (goto-char (point-min)) 3609 (goto-char (point-min))
@@ -4290,7 +4323,7 @@ in `org-agenda-text-search-extra-files'."
4290 'help-echo (format "mouse-2 or RET jump to location"))) 4323 'help-echo (format "mouse-2 or RET jump to location")))
4291 (full-words org-agenda-search-view-force-full-words) 4324 (full-words org-agenda-search-view-force-full-words)
4292 (org-agenda-text-search-extra-files org-agenda-text-search-extra-files) 4325 (org-agenda-text-search-extra-files org-agenda-text-search-extra-files)
4293 regexp rtn rtnall files file pos 4326 regexp rtn rtnall files file pos inherited-tags
4294 marker category category-pos tags c neg re boolean 4327 marker category category-pos tags c neg re boolean
4295 ee txt beg end words regexps+ regexps- hdl-only buffer beg1 str) 4328 ee txt beg end words regexps+ regexps- hdl-only buffer beg1 str)
4296 (unless (and (not edit-at) 4329 (unless (and (not edit-at)
@@ -4444,7 +4477,13 @@ in `org-agenda-text-search-extra-files'."
4444 (setq marker (org-agenda-new-marker (point)) 4477 (setq marker (org-agenda-new-marker (point))
4445 category (org-get-category) 4478 category (org-get-category)
4446 category-pos (get-text-property (point) 'org-category-position) 4479 category-pos (get-text-property (point) 'org-category-position)
4447 tags (org-get-tags-at nil t) 4480 inherited-tags
4481 (or (eq org-agenda-show-inherited-tags 'always)
4482 (memq 'todo org-agenda-show-inherited-tags)
4483 (and (eq org-agenda-show-inherited-tags t)
4484 (or (eq org-agenda-use-tag-inheritance t)
4485 (memq 'todo org-agenda-use-tag-inheritance))))
4486 tags (org-get-tags-at nil (not inherited-tags))
4448 txt (org-agenda-format-item 4487 txt (org-agenda-format-item
4449 "" 4488 ""
4450 (buffer-substring-no-properties 4489 (buffer-substring-no-properties
@@ -4974,7 +5013,7 @@ of what a project is and how to check if it stuck, customize the variable
4974 (pop-up-frames nil) 5013 (pop-up-frames nil)
4975 (diary-list-entries-hook 5014 (diary-list-entries-hook
4976 (cons 'org-diary-default-entry diary-list-entries-hook)) 5015 (cons 'org-diary-default-entry diary-list-entries-hook))
4977 (diary-file-name-prefix-function nil) ; turn this feature off 5016 (diary-file-name-prefix nil) ; turn this feature off
4978 (diary-modify-entry-list-string-function 'org-modify-diary-entry-string) 5017 (diary-modify-entry-list-string-function 'org-modify-diary-entry-string)
4979 entries 5018 entries
4980 (org-disable-agenda-to-diary t)) 5019 (org-disable-agenda-to-diary t))
@@ -5250,7 +5289,7 @@ the documentation of `org-diary'."
5250 "\\|") "\\)")) 5289 "\\|") "\\)"))
5251 (t org-not-done-regexp)))) 5290 (t org-not-done-regexp))))
5252 marker priority category category-pos tags todo-state 5291 marker priority category category-pos tags todo-state
5253 ee txt beg end) 5292 ee txt beg end inherited-tags)
5254 (goto-char (point-min)) 5293 (goto-char (point-min))
5255 (while (re-search-forward regexp nil t) 5294 (while (re-search-forward regexp nil t)
5256 (catch :skip 5295 (catch :skip
@@ -5268,7 +5307,14 @@ the documentation of `org-diary'."
5268 category-pos (get-text-property (point) 'org-category-position) 5307 category-pos (get-text-property (point) 'org-category-position)
5269 txt (org-trim 5308 txt (org-trim
5270 (buffer-substring (match-beginning 2) (match-end 0))) 5309 (buffer-substring (match-beginning 2) (match-end 0)))
5271 tags (org-get-tags-at nil t) 5310 inherited-tags
5311 (or (eq org-agenda-show-inherited-tags 'always)
5312 (and (listp org-agenda-show-inherited-tags)
5313 (memq 'todo org-agenda-show-inherited-tags))
5314 (and (eq org-agenda-show-inherited-tags t)
5315 (or (eq org-agenda-use-tag-inheritance t)
5316 (memq 'todo org-agenda-use-tag-inheritance))))
5317 tags (org-get-tags-at nil (not inherited-tags))
5272 txt (org-agenda-format-item "" txt category tags t) 5318 txt (org-agenda-format-item "" txt category tags t)
5273 priority (1+ (org-get-priority txt)) 5319 priority (1+ (org-get-priority txt))
5274 todo-state (org-get-todo-state)) 5320 todo-state (org-get-todo-state))
@@ -5395,7 +5441,8 @@ Do we have a reason to ignore this TODO entry because it has a time stamp?
5395 "\\|\\(<%%\\(([^>\n]+)\\)>\\)")) 5441 "\\|\\(<%%\\(([^>\n]+)\\)>\\)"))
5396 marker hdmarker deadlinep scheduledp clockp closedp inactivep 5442 marker hdmarker deadlinep scheduledp clockp closedp inactivep
5397 donep tmp priority category category-pos ee txt timestr tags 5443 donep tmp priority category category-pos ee txt timestr tags
5398 b0 b3 e3 head todo-state end-of-match show-all warntime habitp) 5444 b0 b3 e3 head todo-state end-of-match show-all warntime habitp
5445 inherited-tags)
5399 (goto-char (point-min)) 5446 (goto-char (point-min))
5400 (while (setq end-of-match (re-search-forward regexp nil t)) 5447 (while (setq end-of-match (re-search-forward regexp nil t))
5401 (setq b0 (match-beginning 0) 5448 (setq b0 (match-beginning 0)
@@ -5447,7 +5494,14 @@ Do we have a reason to ignore this TODO entry because it has a time stamp?
5447 (assoc (point) deadline-position-alist)) 5494 (assoc (point) deadline-position-alist))
5448 (throw :skip nil)) 5495 (throw :skip nil))
5449 (setq hdmarker (org-agenda-new-marker) 5496 (setq hdmarker (org-agenda-new-marker)
5450 tags (org-get-tags-at nil t)) 5497 inherited-tags
5498 (or (eq org-agenda-show-inherited-tags 'always)
5499 (and (listp org-agenda-show-inherited-tags)
5500 (memq 'agenda org-agenda-show-inherited-tags))
5501 (and (eq org-agenda-show-inherited-tags t)
5502 (or (eq org-agenda-use-tag-inheritance t)
5503 (memq 'agenda org-agenda-use-tag-inheritance))))
5504 tags (org-get-tags-at nil (not inherited-tags)))
5451 (looking-at "\\*+[ \t]+\\([^\r\n]+\\)") 5505 (looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
5452 (setq head (or (match-string 1) "")) 5506 (setq head (or (match-string 1) ""))
5453 (setq txt (org-agenda-format-item 5507 (setq txt (org-agenda-format-item
@@ -5479,7 +5533,7 @@ Do we have a reason to ignore this TODO entry because it has a time stamp?
5479 (abbreviate-file-name buffer-file-name)))) 5533 (abbreviate-file-name buffer-file-name))))
5480 (regexp "^&?%%(") 5534 (regexp "^&?%%(")
5481 marker category extra category-pos ee txt tags entry 5535 marker category extra category-pos ee txt tags entry
5482 result beg b sexp sexp-entry todo-state warntime) 5536 result beg b sexp sexp-entry todo-state warntime inherited-tags)
5483 (goto-char (point-min)) 5537 (goto-char (point-min))
5484 (while (re-search-forward regexp nil t) 5538 (while (re-search-forward regexp nil t)
5485 (catch :skip 5539 (catch :skip
@@ -5497,7 +5551,14 @@ Do we have a reason to ignore this TODO entry because it has a time stamp?
5497 (setq marker (org-agenda-new-marker beg) 5551 (setq marker (org-agenda-new-marker beg)
5498 category (org-get-category beg) 5552 category (org-get-category beg)
5499 category-pos (get-text-property beg 'org-category-position) 5553 category-pos (get-text-property beg 'org-category-position)
5500 tags (save-excursion (org-back-to-heading t) (org-get-tags-at nil t)) 5554 inherited-tags
5555 (or (eq org-agenda-show-inherited-tags 'always)
5556 (and (listp org-agenda-show-inherited-tags)
5557 (memq 'agenda org-agenda-show-inherited-tags))
5558 (and (eq org-agenda-show-inherited-tags t)
5559 (or (eq org-agenda-use-tag-inheritance t)
5560 (memq 'agenda org-agenda-use-tag-inheritance))))
5561 tags (org-get-tags-at nil (not inherited-tags))
5501 todo-state (org-get-todo-state) 5562 todo-state (org-get-todo-state)
5502 warntime (get-text-property (point) 'org-appt-warntime) 5563 warntime (get-text-property (point) 'org-appt-warntime)
5503 extra nil) 5564 extra nil)
@@ -5628,7 +5689,7 @@ please use `org-class' instead."
5628 1 11)))) 5689 1 11))))
5629 (org-agenda-search-headline-for-time nil) 5690 (org-agenda-search-headline-for-time nil)
5630 marker hdmarker priority category category-pos tags closedp 5691 marker hdmarker priority category category-pos tags closedp
5631 statep clockp state ee txt extra timestr rest clocked) 5692 statep clockp state ee txt extra timestr rest clocked inherited-tags)
5632 (goto-char (point-min)) 5693 (goto-char (point-min))
5633 (while (re-search-forward regexp nil t) 5694 (while (re-search-forward regexp nil t)
5634 (catch :skip 5695 (catch :skip
@@ -5666,7 +5727,14 @@ please use `org-class' instead."
5666 (setq txt org-agenda-no-heading-message) 5727 (setq txt org-agenda-no-heading-message)
5667 (goto-char (match-beginning 0)) 5728 (goto-char (match-beginning 0))
5668 (setq hdmarker (org-agenda-new-marker) 5729 (setq hdmarker (org-agenda-new-marker)
5669 tags (org-get-tags-at nil t)) 5730 inherited-tags
5731 (or (eq org-agenda-show-inherited-tags 'always)
5732 (and (listp org-agenda-show-inherited-tags)
5733 (memq 'todo org-agenda-show-inherited-tags))
5734 (and (eq org-agenda-show-inherited-tags t)
5735 (or (eq org-agenda-use-tag-inheritance t)
5736 (memq 'todo org-agenda-use-tag-inheritance))))
5737 tags (org-get-tags-at nil (not inherited-tags)))
5670 (looking-at "\\*+[ \t]+\\([^\r\n]+\\)") 5738 (looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
5671 (setq txt (match-string 1)) 5739 (setq txt (match-string 1))
5672 (when extra 5740 (when extra
@@ -5944,7 +6012,7 @@ FRACTION is what fraction of the head-warning time has passed."
5944 deadline-results)) 6012 deadline-results))
5945 d2 diff pos pos1 category category-pos tags donep 6013 d2 diff pos pos1 category category-pos tags donep
5946 ee txt head pastschedp todo-state face timestr s habitp show-all 6014 ee txt head pastschedp todo-state face timestr s habitp show-all
5947 did-habit-check-p warntime) 6015 did-habit-check-p warntime inherited-tags)
5948 (goto-char (point-min)) 6016 (goto-char (point-min))
5949 (while (re-search-forward regexp nil t) 6017 (while (re-search-forward regexp nil t)
5950 (catch :skip 6018 (catch :skip
@@ -6006,7 +6074,14 @@ FRACTION is what fraction of the head-warning time has passed."
6006 pastschedp)) 6074 pastschedp))
6007 (setq mm (assoc pos1 deadline-position-alist))) 6075 (setq mm (assoc pos1 deadline-position-alist)))
6008 (throw :skip nil))) 6076 (throw :skip nil)))
6009 (setq tags (org-get-tags-at nil t)) 6077 (setq inherited-tags
6078 (or (eq org-agenda-show-inherited-tags 'always)
6079 (and (listp org-agenda-show-inherited-tags)
6080 (memq 'agenda org-agenda-show-inherited-tags))
6081 (and (eq org-agenda-show-inherited-tags t)
6082 (or (eq org-agenda-use-tag-inheritance t)
6083 (memq 'agenda org-agenda-use-tag-inheritance))))
6084 tags (org-get-tags-at nil (not inherited-tags)))
6010 (setq head (buffer-substring-no-properties 6085 (setq head (buffer-substring-no-properties
6011 (point) 6086 (point)
6012 (progn (skip-chars-forward "^\r\n") (point)))) 6087 (progn (skip-chars-forward "^\r\n") (point))))
@@ -6061,7 +6136,7 @@ FRACTION is what fraction of the head-warning time has passed."
6061 (regexp org-tr-regexp) 6136 (regexp org-tr-regexp)
6062 (d0 (calendar-absolute-from-gregorian date)) 6137 (d0 (calendar-absolute-from-gregorian date))
6063 marker hdmarker ee txt d1 d2 s1 s2 category category-pos 6138 marker hdmarker ee txt d1 d2 s1 s2 category category-pos
6064 todo-state tags pos head donep) 6139 todo-state tags pos head donep inherited-tags)
6065 (goto-char (point-min)) 6140 (goto-char (point-min))
6066 (while (re-search-forward regexp nil t) 6141 (while (re-search-forward regexp nil t)
6067 (catch :skip 6142 (catch :skip
@@ -6087,8 +6162,15 @@ FRACTION is what fraction of the head-warning time has passed."
6087 (if (not (re-search-backward org-outline-regexp-bol nil t)) 6162 (if (not (re-search-backward org-outline-regexp-bol nil t))
6088 (setq txt org-agenda-no-heading-message) 6163 (setq txt org-agenda-no-heading-message)
6089 (goto-char (match-beginning 0)) 6164 (goto-char (match-beginning 0))
6090 (setq hdmarker (org-agenda-new-marker (point))) 6165 (setq hdmarker (org-agenda-new-marker (point))
6091 (setq tags (org-get-tags-at nil t)) 6166 inherited-tags
6167 (or (eq org-agenda-show-inherited-tags 'always)
6168 (and (listp org-agenda-show-inherited-tags)
6169 (memq 'agenda org-agenda-show-inherited-tags))
6170 (and (eq org-agenda-show-inherited-tags t)
6171 (or (eq org-agenda-use-tag-inheritance t)
6172 (memq 'agenda org-agenda-use-tag-inheritance))))
6173 tags (org-get-tags-at nil (not inherited-tags)))
6092 (looking-at "\\*+[ \t]+\\([^\r\n]+\\)") 6174 (looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
6093 (setq head (match-string 1)) 6175 (setq head (match-string 1))
6094 (let ((remove-re 6176 (let ((remove-re
@@ -7702,7 +7784,7 @@ When called with a prefix argument, include all archive files as well."
7702 ""))) 7784 "")))
7703 (force-mode-line-update)) 7785 (force-mode-line-update))
7704 7786
7705(org-define-obsolete-function-alias 7787(define-obsolete-function-alias
7706 'org-agenda-post-command-hook 'org-agenda-update-agenda-type "24.3") 7788 'org-agenda-post-command-hook 'org-agenda-update-agenda-type "24.3")
7707 7789
7708(defun org-agenda-update-agenda-type () 7790(defun org-agenda-update-agenda-type ()
diff --git a/lisp/org/org-capture.el b/lisp/org/org-capture.el
index c888536b385..8a271b8d055 100644
--- a/lisp/org/org-capture.el
+++ b/lisp/org/org-capture.el
@@ -451,7 +451,7 @@ For example, if you have a capture template \"c\" and you want
451this template to be accessible only from `message-mode' buffers, 451this template to be accessible only from `message-mode' buffers,
452use this: 452use this:
453 453
454 '((\"c\" (in-mode . \"message-mode\"))) 454 '((\"c\" ((in-mode . \"message-mode\"))))
455 455
456Here are the available contexts definitions: 456Here are the available contexts definitions:
457 457
@@ -467,11 +467,11 @@ accessible if there is at least one valid check.
467You can also bind a key to another agenda custom command 467You can also bind a key to another agenda custom command
468depending on contextual rules. 468depending on contextual rules.
469 469
470 '((\"c\" \"d\" (in-mode . \"message-mode\"))) 470 '((\"c\" \"d\" ((in-mode . \"message-mode\"))))
471 471
472Here it means: in `message-mode buffers', use \"d\" as the 472Here it means: in `message-mode buffers', use \"c\" as the
473key for the capture template otherwise associated with \"d\". 473key for the capture template otherwise associated with \"d\".
474\(The template originally associated with \"q\" is not displayed 474\(The template originally associated with \"d\" is not displayed
475to avoid duplicates.)" 475to avoid duplicates.)"
476 :version "24.3" 476 :version "24.3"
477 :group 'org-capture 477 :group 'org-capture
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index 32cfa9ae913..c043dd19e11 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -205,7 +205,7 @@ file name play this sound file. If not possible, fall back to beep"
205 (const :tag "Standard beep" t) 205 (const :tag "Standard beep" t)
206 (file :tag "Play sound file"))) 206 (file :tag "Play sound file")))
207 207
208(org-define-obsolete-variable-alias 'org-clock-modeline-total 208(define-obsolete-variable-alias 'org-clock-modeline-total
209 'org-clock-mode-line-total "24.3") 209 'org-clock-mode-line-total "24.3")
210 210
211(defcustom org-clock-mode-line-total 'auto 211(defcustom org-clock-mode-line-total 'auto
diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el
index 687b81fd882..9292b994367 100644
--- a/lisp/org/org-compat.el
+++ b/lisp/org/org-compat.el
@@ -169,24 +169,6 @@ If DELETE is non-nil, delete all those overlays."
169 (set-buffer-modified-p modified-p)) 169 (set-buffer-modified-p modified-p))
170 (decompose-region beg end))) 170 (decompose-region beg end)))
171 171
172(defmacro org-define-obsolete-function-alias (o-name c-name when &optional doc)
173 "Reconcile the two-argument form of
174`define-obsolete-function-alias' in XEmacs/Emacs 22 with the 3-4
175argument form in Emacs 23 and later."
176 (if (or (featurep 'xemacs)
177 (< emacs-major-version 23))
178 `(define-obsolete-function-alias ,o-name ,c-name)
179 `(define-obsolete-function-alias ,o-name ,c-name ,when ,doc)))
180
181(defmacro org-define-obsolete-variable-alias (o-name c-name when &optional doc)
182 "Reconcile the two-argument form of
183`define-obsolete-variable-alias' in XEmacs/Emacs 22 with the 3-4
184argument form in Emacs 23 and later."
185 (if (or (featurep 'xemacs)
186 (< emacs-major-version 23))
187 `(define-obsolete-variable-alias ,o-name ,c-name)
188 `(define-obsolete-variable-alias ,o-name ,c-name ,when ,doc)))
189
190;; Miscellaneous functions 172;; Miscellaneous functions
191 173
192(defun org-add-hook (hook function &optional append local) 174(defun org-add-hook (hook function &optional append local)
@@ -463,16 +445,6 @@ With two arguments, return floor and remainder of their quotient."
463 'pop-to-buffer-same-window buffer-or-name norecord) 445 'pop-to-buffer-same-window buffer-or-name norecord)
464 (funcall 'switch-to-buffer buffer-or-name norecord))) 446 (funcall 'switch-to-buffer buffer-or-name norecord)))
465 447
466;; `condition-case-unless-debug' has been introduced in Emacs 24.1
467;; `condition-case-no-debug' has been introduced in Emacs 23.1
468(defmacro org-condition-case-unless-debug (var bodyform &rest handlers)
469 (declare (debug condition-case) (indent 2))
470 (or (and (fboundp 'condition-case-unless-debug)
471 `(condition-case-unless-debug ,var ,bodyform ,@handlers))
472 (and (fboundp 'condition-case-no-debug)
473 `(condition-case-no-debug ,var ,bodyform ,@handlers))
474 `(condition-case ,var ,bodyform ,@handlers)))
475
476;; RECURSIVE has been introduced with Emacs 23.2. 448;; RECURSIVE has been introduced with Emacs 23.2.
477;; This is copying and adapted from `tramp-compat-delete-directory' 449;; This is copying and adapted from `tramp-compat-delete-directory'
478(defun org-delete-directory (directory &optional recursive) 450(defun org-delete-directory (directory &optional recursive)
diff --git a/lisp/org/org-id.el b/lisp/org/org-id.el
index 5d8e5b0dcf9..6e865b50c2c 100644
--- a/lisp/org/org-id.el
+++ b/lisp/org/org-id.el
@@ -83,7 +83,7 @@
83 :tag "Org ID" 83 :tag "Org ID"
84 :group 'org) 84 :group 'org)
85 85
86(org-define-obsolete-variable-alias 86(define-obsolete-variable-alias
87 'org-link-to-org-use-id 'org-id-link-to-org-use-id "24.3") 87 'org-link-to-org-use-id 'org-id-link-to-org-use-id "24.3")
88(defcustom org-id-link-to-org-use-id nil 88(defcustom org-id-link-to-org-use-id nil
89 "Non-nil means storing a link to an Org file will use entry IDs. 89 "Non-nil means storing a link to an Org file will use entry IDs.
diff --git a/lisp/org/org-lparse.el b/lisp/org/org-lparse.el
index e9fbbea586e..11711353ff7 100644
--- a/lisp/org/org-lparse.el
+++ b/lisp/org/org-lparse.el
@@ -1718,7 +1718,7 @@ information."
1718 (org-lparse-end-paragraph) 1718 (org-lparse-end-paragraph)
1719 (org-lparse-end-list-item (or type "u"))) 1719 (org-lparse-end-list-item (or type "u")))
1720 1720
1721(org-define-obsolete-function-alias 1721(define-obsolete-function-alias
1722 'org-lparse-preprocess-after-blockquote-hook 1722 'org-lparse-preprocess-after-blockquote-hook
1723 'org-lparse-preprocess-after-blockquote 1723 'org-lparse-preprocess-after-blockquote
1724 "24.3") 1724 "24.3")
@@ -1736,7 +1736,7 @@ information."
1736 (format "ORG-%s-END %s" (upcase (match-string 2)) 1736 (format "ORG-%s-END %s" (upcase (match-string 2))
1737 (match-string 3))) t t)))) 1737 (match-string 3))) t t))))
1738 1738
1739(org-define-obsolete-function-alias 1739(define-obsolete-function-alias
1740 'org-lparse-strip-experimental-blocks-maybe-hook 1740 'org-lparse-strip-experimental-blocks-maybe-hook
1741 'org-lparse-strip-experimental-blocks-maybe 1741 'org-lparse-strip-experimental-blocks-maybe
1742 "24.3") 1742 "24.3")
diff --git a/lisp/org/org-mobile.el b/lisp/org/org-mobile.el
index d2e7c217f76..a410de0d775 100644
--- a/lisp/org/org-mobile.el
+++ b/lisp/org/org-mobile.el
@@ -620,12 +620,10 @@ The table of checksums is written to the file mobile-checksums."
620 (delete-region (point) (point-at-eol))) 620 (delete-region (point) (point-at-eol)))
621 ((get-text-property (point) 'org-agenda-structural-header) 621 ((get-text-property (point) 'org-agenda-structural-header)
622 (setq in-date nil) 622 (setq in-date nil)
623 (setq app (get-text-property (point) 623 (setq app (get-text-property (point) 'org-agenda-title-append))
624 'org-agenda-title-append)) 624 (setq short (get-text-property (point) 'short-heading))
625 (setq short (get-text-property (point)
626 'short-heading))
627 (when (and short (looking-at ".+")) 625 (when (and short (looking-at ".+"))
628 (replace-match short) 626 (replace-match short nil t)
629 (beginning-of-line 1)) 627 (beginning-of-line 1))
630 (when app 628 (when app
631 (end-of-line 1) 629 (end-of-line 1)
diff --git a/lisp/org/org-odt.el b/lisp/org/org-odt.el
index b5f6e21c0c2..92228f37eb8 100644
--- a/lisp/org/org-odt.el
+++ b/lisp/org/org-odt.el
@@ -447,7 +447,7 @@ values. See Info node `(emacs) File Variables'."
447 xml-files)) 447 xml-files))
448 ;; delete temporary directory. 448 ;; delete temporary directory.
449 (org-delete-directory org-odt-zip-dir t))))) 449 (org-delete-directory org-odt-zip-dir t)))))
450 (org-condition-case-unless-debug err 450 (condition-case err
451 (prog1 (progn ,@body) 451 (prog1 (progn ,@body)
452 (funcall --cleanup-xml-buffers)) 452 (funcall --cleanup-xml-buffers))
453 ((quit error) 453 ((quit error)
diff --git a/lisp/org/org-protocol.el b/lisp/org/org-protocol.el
index fd84e62c003..18c6d6d70a4 100644
--- a/lisp/org/org-protocol.el
+++ b/lisp/org/org-protocol.el
@@ -128,15 +128,15 @@
128 (filename &optional up)) 128 (filename &optional up))
129(declare-function server-edit "server" (&optional arg)) 129(declare-function server-edit "server" (&optional arg))
130 130
131(org-define-obsolete-function-alias 131(define-obsolete-function-alias
132 'org-protocol-unhex-compound 'org-link-unescape-compound 132 'org-protocol-unhex-compound 'org-link-unescape-compound
133 "2011-02-17") 133 "2011-02-17")
134 134
135(org-define-obsolete-function-alias 135(define-obsolete-function-alias
136 'org-protocol-unhex-string 'org-link-unescape 136 'org-protocol-unhex-string 'org-link-unescape
137 "2011-02-17") 137 "2011-02-17")
138 138
139(org-define-obsolete-function-alias 139(define-obsolete-function-alias
140 'org-protocol-unhex-single-byte-sequence 140 'org-protocol-unhex-single-byte-sequence
141 'org-link-unescape-single-byte-sequence 141 'org-link-unescape-single-byte-sequence
142 "2011-02-17") 142 "2011-02-17")
diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el
index f638e57ad94..e62eba3cf83 100644
--- a/lisp/org/org-version.el
+++ b/lisp/org/org-version.el
@@ -5,13 +5,13 @@
5(defun org-release () 5(defun org-release ()
6 "The release version of org-mode. 6 "The release version of org-mode.
7 Inserted by installing org-mode or when a release is made." 7 Inserted by installing org-mode or when a release is made."
8 (let ((org-release "7.9.3+")) 8 (let ((org-release "7.9.3d"))
9 org-release)) 9 org-release))
10;;;###autoload 10;;;###autoload
11(defun org-git-version () 11(defun org-git-version ()
12 "The Git version of org-mode. 12 "The Git version of org-mode.
13 Inserted by installing org-mode or when a release is made." 13 Inserted by installing org-mode or when a release is made."
14 (let ((org-git-version "7.9.3+-GNU-Emacs-24-3 (commit 4cac75153)")) 14 (let ((org-git-version "7.9.3d-GNU-Emacs-24-3 (commit e8f5b0ad)"))
15 org-git-version)) 15 org-git-version))
16;;;###autoload 16;;;###autoload
17(defvar org-odt-data-dir "/usr/share/emacs/etc/org" 17(defvar org-odt-data-dir "/usr/share/emacs/etc/org"
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 32ed13fc1a3..9409feca178 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -7402,7 +7402,12 @@ even level numbers will become the next higher odd number."
7402 ((< change 0) (max 1 (1+ (* 2 (/ (+ level (* 2 change)) 2)))))) 7402 ((< change 0) (max 1 (1+ (* 2 (/ (+ level (* 2 change)) 2))))))
7403 (max 1 (+ level (or change 0))))) 7403 (max 1 (+ level (or change 0)))))
7404 7404
7405(org-define-obsolete-function-alias 'org-get-legal-level 'org-get-valid-level "23.1") 7405(if (boundp 'define-obsolete-function-alias)
7406 (if (or (featurep 'xemacs) (< emacs-major-version 23))
7407 (define-obsolete-function-alias 'org-get-legal-level
7408 'org-get-valid-level)
7409 (define-obsolete-function-alias 'org-get-legal-level
7410 'org-get-valid-level "23.1")))
7406 7411
7407(defvar org-called-with-limited-levels nil) ;; Dynamically bound in 7412(defvar org-called-with-limited-levels nil) ;; Dynamically bound in
7408;; ̀org-with-limited-levels' 7413;; ̀org-with-limited-levels'
@@ -9684,12 +9689,14 @@ application the system uses for this file type."
9684 "[ \t]:[^ \t\n]+:[ \t]*$"))) 9689 "[ \t]:[^ \t\n]+:[ \t]*$")))
9685 (not (get-text-property (point) 'org-linked-text))) 9690 (not (get-text-property (point) 'org-linked-text)))
9686 (or (let* ((lkall (org-offer-links-in-entry (current-buffer) (point) arg)) 9691 (or (let* ((lkall (org-offer-links-in-entry (current-buffer) (point) arg))
9687 (lk (car lkall)) 9692 (lk0 (car lkall))
9693 (lk (if (stringp lk0) (list lk0) lk0))
9688 (lkend (cdr lkall))) 9694 (lkend (cdr lkall)))
9689 (when lk 9695 (mapcar (lambda(l)
9690 (prog1 (search-forward lk nil lkend) 9696 (search-forward l nil lkend)
9691 (goto-char (match-beginning 0)) 9697 (goto-char (match-beginning 0))
9692 (org-open-at-point)))) 9698 (org-open-at-point))
9699 lk))
9693 (progn (require 'org-attach) (org-attach-reveal 'if-exists)))) 9700 (progn (require 'org-attach) (org-attach-reveal 'if-exists))))
9694 ((run-hook-with-args-until-success 'org-open-at-point-functions)) 9701 ((run-hook-with-args-until-success 'org-open-at-point-functions))
9695 ((and (org-at-timestamp-p t) 9702 ((and (org-at-timestamp-p t)
@@ -13524,7 +13531,10 @@ ignore inherited ones."
13524 (error nil))))) 13531 (error nil)))))
13525 (if local 13532 (if local
13526 tags 13533 tags
13527 (append (org-remove-uninherited-tags org-file-tags) tags)))))) 13534 (reverse (delete-dups
13535 (reverse (append
13536 (org-remove-uninherited-tags
13537 org-file-tags) tags)))))))))
13528 13538
13529(defun org-add-prop-inherited (s) 13539(defun org-add-prop-inherited (s)
13530 (add-text-properties 0 (length s) '(inherited t) s) 13540 (add-text-properties 0 (length s) '(inherited t) s)
@@ -17798,7 +17808,7 @@ BEG and END default to the buffer boundaries."
17798 (list 'org-display-inline-remove-overlay)) 17808 (list 'org-display-inline-remove-overlay))
17799 (push ov org-inline-image-overlays))))))))) 17809 (push ov org-inline-image-overlays)))))))))
17800 17810
17801(org-define-obsolete-function-alias 17811(define-obsolete-function-alias
17802 'org-display-inline-modification-hook 'org-display-inline-remove-overlay "24.3") 17812 'org-display-inline-modification-hook 'org-display-inline-remove-overlay "24.3")
17803 17813
17804(defun org-display-inline-remove-overlay (ov after beg end &optional len) 17814(defun org-display-inline-remove-overlay (ov after beg end &optional len)
@@ -18178,7 +18188,7 @@ If not, return to the original position and throw an error."
18178(defvar org-table-auto-blank-field) ; defined in org-table.el 18188(defvar org-table-auto-blank-field) ; defined in org-table.el
18179(defvar org-speed-command nil) 18189(defvar org-speed-command nil)
18180 18190
18181(org-define-obsolete-function-alias 18191(define-obsolete-function-alias
18182 'org-speed-command-default-hook 'org-speed-command-activate "24.3") 18192 'org-speed-command-default-hook 'org-speed-command-activate "24.3")
18183 18193
18184(defun org-speed-command-activate (keys) 18194(defun org-speed-command-activate (keys)
@@ -18191,7 +18201,7 @@ Use `org-speed-commands-user' for further customization."
18191 (cdr (assoc keys (append org-speed-commands-user 18201 (cdr (assoc keys (append org-speed-commands-user
18192 org-speed-commands-default))))) 18202 org-speed-commands-default)))))
18193 18203
18194(org-define-obsolete-function-alias 18204(define-obsolete-function-alias
18195 'org-babel-speed-command-hook 'org-babel-speed-command-activate "24.3") 18205 'org-babel-speed-command-hook 'org-babel-speed-command-activate "24.3")
18196 18206
18197(defun org-babel-speed-command-activate (keys) 18207(defun org-babel-speed-command-activate (keys)
@@ -19026,14 +19036,13 @@ Otherwise, return a user error."
19026 (beginning-of-line 1) 19036 (beginning-of-line 1)
19027 (looking-at "\\(?:#\\+\\(?:setupfile\\|include\\):?[ \t]+\"?\\|[ \t]*<include\\>.*?file=\"\\)\\([^\"\n>]+\\)")) 19037 (looking-at "\\(?:#\\+\\(?:setupfile\\|include\\):?[ \t]+\"?\\|[ \t]*<include\\>.*?file=\"\\)\\([^\"\n>]+\\)"))
19028 (find-file (org-trim (match-string 1)))) 19038 (find-file (org-trim (match-string 1))))
19039 ((org-at-table.el-p) (org-edit-src-code))
19029 ((or (org-at-table-p) 19040 ((or (org-at-table-p)
19030 (save-excursion 19041 (save-excursion
19031 (beginning-of-line 1) 19042 (beginning-of-line 1)
19032 (let ((case-fold-search )) (looking-at "[ \t]*#\\+tblfm:")))) 19043 (let ((case-fold-search )) (looking-at "[ \t]*#\\+tblfm:"))))
19033 (call-interactively 'org-table-edit-formulas)) 19044 (call-interactively 'org-table-edit-formulas))
19034 ((or (org-in-block-p '("src" "example" "latex" "html")) 19045 ((org-in-block-p '("src" "example" "latex" "html")) (org-edit-src-code))
19035 (org-at-table.el-p))
19036 (org-edit-src-code))
19037 ((org-in-fixed-width-region-p) (org-edit-fixed-width-region)) 19046 ((org-in-fixed-width-region-p) (org-edit-fixed-width-region))
19038 ((org-at-regexp-p org-any-link-re) (call-interactively 'ffap)) 19047 ((org-at-regexp-p org-any-link-re) (call-interactively 'ffap))
19039 (t (user-error "No special environment to edit here")))) 19048 (t (user-error "No special environment to edit here"))))
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 172193266ca..0e5f4c82090 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1198,7 +1198,16 @@ of the statement."
1198 (not (eobp)) 1198 (not (eobp))
1199 (cond ((setq string-start (python-syntax-context 'string)) 1199 (cond ((setq string-start (python-syntax-context 'string))
1200 (goto-char string-start) 1200 (goto-char string-start)
1201 (python-nav-end-of-statement t)) 1201 (if (python-syntax-context 'paren)
1202 ;; Ended up inside a paren, roll again.
1203 (python-nav-end-of-statement t)
1204 ;; This is not inside a paren, move to the
1205 ;; end of this string.
1206 (goto-char (+ (point)
1207 (python-syntax-count-quotes
1208 (char-after (point)) (point))))
1209 (or (re-search-forward (rx (syntax string-delimiter)) nil t)
1210 (goto-char (point-max)))))
1202 ((python-syntax-context 'paren) 1211 ((python-syntax-context 'paren)
1203 ;; The statement won't end before we've escaped 1212 ;; The statement won't end before we've escaped
1204 ;; at least one level of parenthesis. 1213 ;; at least one level of parenthesis.
@@ -1312,7 +1321,7 @@ backward to previous block."
1312 "Safe version of standard `forward-sexp'. 1321 "Safe version of standard `forward-sexp'.
1313When ARG > 0 move forward, else if ARG is < 0." 1322When ARG > 0 move forward, else if ARG is < 0."
1314 (or arg (setq arg 1)) 1323 (or arg (setq arg 1))
1315 (let ((forward-sexp-function nil) 1324 (let ((forward-sexp-function)
1316 (paren-regexp 1325 (paren-regexp
1317 (if (> arg 0) (python-rx close-paren) (python-rx open-paren))) 1326 (if (> arg 0) (python-rx close-paren) (python-rx open-paren)))
1318 (search-fn 1327 (search-fn
diff --git a/lisp/subr.el b/lisp/subr.el
index 11e882d9158..e1ab5298409 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -3367,16 +3367,17 @@ If BODY finishes, `while-no-input' returns whatever value BODY produced."
3367 (progn ,@body))))))) 3367 (progn ,@body)))))))
3368 3368
3369(defmacro condition-case-unless-debug (var bodyform &rest handlers) 3369(defmacro condition-case-unless-debug (var bodyform &rest handlers)
3370 "Like `condition-case' except that it does not catch anything when debugging. 3370 "Like `condition-case' except that it does not prevent debugging.
3371More specifically if `debug-on-error' is set, then it does not catch any signal." 3371More specifically if `debug-on-error' is set then the debugger will be invoked
3372even if this catches the signal."
3372 (declare (debug condition-case) (indent 2)) 3373 (declare (debug condition-case) (indent 2))
3373 (let ((bodysym (make-symbol "body"))) 3374 `(condition-case ,var
3374 `(let ((,bodysym (lambda () ,bodyform))) 3375 ,bodyform
3375 (if debug-on-error 3376 ,@(mapcar (lambda (handler)
3376 (funcall ,bodysym) 3377 `((debug ,@(if (listp (car handler)) (car handler)
3377 (condition-case ,var 3378 (list (car handler))))
3378 (funcall ,bodysym) 3379 ,@(cdr handler)))
3379 ,@handlers))))) 3380 handlers)))
3380 3381
3381(define-obsolete-function-alias 'condition-case-no-debug 3382(define-obsolete-function-alias 'condition-case-no-debug
3382 'condition-case-unless-debug "24.1") 3383 'condition-case-unless-debug "24.1")
diff --git a/make-dist b/make-dist
index 60afb0c618f..788dca3462c 100755
--- a/make-dist
+++ b/make-dist
@@ -87,6 +87,13 @@ while [ $# -gt 0 ]; do
87 "--lzma") 87 "--lzma")
88 default_gzip="lzma" 88 default_gzip="lzma"
89 ;; 89 ;;
90 ## Same with xz.
91 "--xz")
92 default_gzip="xz"
93 ;;
94 "--no-compress")
95 default_gzip="cat"
96 ;;
90 97
91 "--snapshot") 98 "--snapshot")
92 clean_up=yes 99 clean_up=yes
@@ -101,6 +108,8 @@ while [ $# -gt 0 ]; do
101 echo " --bzip2 use bzip2 instead of gzip" 108 echo " --bzip2 use bzip2 instead of gzip"
102 echo " --clean-up delete staging directories when done" 109 echo " --clean-up delete staging directories when done"
103 echo " --lzma use lzma instead of gzip" 110 echo " --lzma use lzma instead of gzip"
111 echo " --xz use xz instead of gzip"
112 echo " --no-compress don't compress"
104 echo " --newer=TIME don't include files older than TIME" 113 echo " --newer=TIME don't include files older than TIME"
105 echo " --no-check don't check for bad file names etc." 114 echo " --no-check don't check for bad file names etc."
106 echo " --no-update don't recompile or do analogous things" 115 echo " --no-update don't recompile or do analogous things"
@@ -510,6 +519,7 @@ if [ "${make_tar}" = yes ]; then
510 case "${default_gzip}" in 519 case "${default_gzip}" in
511 bzip2) gzip_extension=.bz2 ;; 520 bzip2) gzip_extension=.bz2 ;;
512 lzma) gzip_extension=.lzma ;; 521 lzma) gzip_extension=.lzma ;;
522 xz) gzip_extension=.xz ;;
513 gzip) gzip_extension=.gz ; default_gzip="gzip --best";; 523 gzip) gzip_extension=.gz ; default_gzip="gzip --best";;
514 *) gzip_extension= ;; 524 *) gzip_extension= ;;
515 esac 525 esac
diff --git a/src/ChangeLog b/src/ChangeLog
index 13b53e922ed..9096b904171 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,43 @@
12013-01-13 Jan Djärv <jan.h.d@swipnet.se>
2
3 * nsfont.m (LCD_SMOOTHING_MARGIN): New define.
4 (nsfont_draw): Remove disabling of LCD smoothing.
5 (ns_glyph_metrics): Add LCD_SMOOTHING_MARGIN to bearings to fix
6 Bug#11484 with LCD smoothing on.
7
82013-01-13 Paul Eggert <eggert@cs.ucla.edu>
9
10 Fix SIGDANGER handlers, for AIX (Bug#13408).
11 * sysdep.c.c (handle_danger_signal, deliver_danger_signal) [SIGDANGER]:
12 Move handlers here from emacs.c; they were out of place.
13
142013-01-11 Jan Djärv <jan.h.d@swipnet.se>
15
16 * xterm.c (syms_of_xterm): Adjust documentation for
17 scroll-bar-adjust-thumb-portion.
18
192012-12-31 Adam Sjøgren <asjo@koldfront.dk> (tiny change)
20
21 * xterm.c (scroll-bar-adjust-thumb-portion): New variable to
22 determine whether scroll bar thumb size should be adjusted or
23 not. Use variable for MOTIF.
24
25 * gtkutil.c (scroll-bar-adjust-thumb-portion): Use variable for
26 GTK.
27
282013-01-13 Jan Djärv <jan.h.d@swipnet.se>
29
30 * nsterm.m (keyDown:): Set processingCompose to NO if an emacs key
31 event is generated.
32 (doCommandBySelector:): Set processingCompose to NO.
33
34 * nsfont.m (ns_findfonts): Add block/unblock_input calls.
35 Remove check for fkeys count > zero, block/unblock fixes the real bug.
36 (nsfont_list_family): Add block/unblock_input calls.
37 (nsfont_open): Move block_input earlier. Add unblock_input before early
38 return.
39 (nsfont_draw): Add block/unblock_input calls.
40
12013-01-12 Dmitry Antipov <dmantipov@yandex.ru> 412013-01-12 Dmitry Antipov <dmantipov@yandex.ru>
2 42
3 * indent.c (Fvertical_motion): Remove now-incorrect GCPROs 43 * indent.c (Fvertical_motion): Remove now-incorrect GCPROs
@@ -46,7 +86,7 @@
46 (dissociate_if_controlling_tty): If setsid fails, fall back on TIOCNOTTY. 86 (dissociate_if_controlling_tty): If setsid fails, fall back on TIOCNOTTY.
47 This is the main part of the bug fix. 87 This is the main part of the bug fix.
48 88
492013-01-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> (tiny change) 892013-01-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> (tiny change)
50 90
51 * gtkutil.c (xg_initialize): Add ifdef HAVE_FREETYPE around 91 * gtkutil.c (xg_initialize): Add ifdef HAVE_FREETYPE around
52 x_last_font_name (Bug#13403). 92 x_last_font_name (Bug#13403).
@@ -1758,7 +1798,7 @@
1758 * image.c (xpm_make_color_table_h): Fix compiler error because 1798 * image.c (xpm_make_color_table_h): Fix compiler error because
1759 make_hash_table changed. 1799 make_hash_table changed.
1760 1800
17612012-11-08 Thomas Kappler <tkappler@gmail.com> (tiny change) 18012012-11-08 Thomas Kappler <tkappler@gmail.com> (tiny change)
1762 1802
1763 * nsfont.m (ns_findfonts): Handle empty matchingDescs (Bug#11541). 1803 * nsfont.m (ns_findfonts): Handle empty matchingDescs (Bug#11541).
1764 1804
diff --git a/src/emacs.c b/src/emacs.c
index 3dad507f4d3..d1eeb97980a 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -347,25 +347,6 @@ terminate_due_to_signal (int sig, int backtrace_limit)
347 /* This shouldn't be executed, but it prevents a warning. */ 347 /* This shouldn't be executed, but it prevents a warning. */
348 exit (1); 348 exit (1);
349} 349}
350
351#ifdef SIGDANGER
352
353/* Handler for SIGDANGER. */
354static void
355handle_danger_signal (int sig)
356{
357 malloc_warning ("Operating system warns that virtual memory is running low.\n");
358
359 /* It might be unsafe to call do_auto_save now. */
360 force_auto_save_soon ();
361}
362
363static void
364deliver_danger_signal (int sig)
365{
366 deliver_process_signal (sig, handle_danger_signal);
367}
368#endif
369 350
370/* Code for dealing with Lisp access to the Unix command line. */ 351/* Code for dealing with Lisp access to the Unix command line. */
371 352
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 6daf189f74c..af845f69e62 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -3795,13 +3795,17 @@ xg_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar,
3795 3795
3796 adj = gtk_range_get_adjustment (GTK_RANGE (wscroll)); 3796 adj = gtk_range_get_adjustment (GTK_RANGE (wscroll));
3797 3797
3798 /* We do the same as for MOTIF in xterm.c, assume 30 chars per line 3798 if (scroll_bar_adjust_thumb_portion_p)
3799 rather than the real portion value. This makes the thumb less likely 3799 {
3800 to resize and that looks better. */ 3800 /* We do the same as for MOTIF in xterm.c, use 30 chars per
3801 portion = WINDOW_TOTAL_LINES (XWINDOW (bar->window)) * 30; 3801 line rather than the real portion value. This makes the
3802 /* When the thumb is at the bottom, position == whole. 3802 thumb less likely to resize and that looks better. */
3803 So we need to increase `whole' to make space for the thumb. */ 3803 portion = WINDOW_TOTAL_LINES (XWINDOW (bar->window)) * 30;
3804 whole += portion; 3804
3805 /* When the thumb is at the bottom, position == whole.
3806 So we need to increase `whole' to make space for the thumb. */
3807 whole += portion;
3808 }
3805 3809
3806 if (whole <= 0) 3810 if (whole <= 0)
3807 top = 0, shown = 1; 3811 top = 0, shown = 1;
diff --git a/src/nsfont.m b/src/nsfont.m
index c0bea2e225c..5039f0c9013 100644
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -44,6 +44,7 @@ Author: Adrian Robert (arobert@cogsci.ucsd.edu)
44#endif 44#endif
45 45
46#define NSFONT_TRACE 0 46#define NSFONT_TRACE 0
47#define LCD_SMOOTHING_MARGIN 2
47 48
48extern Lisp_Object Qns; 49extern Lisp_Object Qns;
49extern Lisp_Object Qnormal, Qbold, Qitalic; 50extern Lisp_Object Qnormal, Qbold, Qitalic;
@@ -546,6 +547,7 @@ ns_findfonts (Lisp_Object font_spec, BOOL isMatch)
546 NSSet *cFamilies; 547 NSSet *cFamilies;
547 BOOL foundItal = NO; 548 BOOL foundItal = NO;
548 549
550 block_input ();
549 if (NSFONT_TRACE) 551 if (NSFONT_TRACE)
550 { 552 {
551 fprintf (stderr, "nsfont: %s for fontspec:\n ", 553 fprintf (stderr, "nsfont: %s for fontspec:\n ",
@@ -560,10 +562,7 @@ ns_findfonts (Lisp_Object font_spec, BOOL isMatch)
560 if (isMatch) 562 if (isMatch)
561 [fkeys removeObject: NSFontFamilyAttribute]; 563 [fkeys removeObject: NSFontFamilyAttribute];
562 564
563 if ([fkeys count] > 0) 565 matchingDescs = [fdesc matchingFontDescriptorsWithMandatoryKeys: fkeys];
564 matchingDescs = [fdesc matchingFontDescriptorsWithMandatoryKeys: fkeys];
565 else
566 matchingDescs = [NSMutableArray array];
567 566
568 if (NSFONT_TRACE) 567 if (NSFONT_TRACE)
569 NSLog(@"Got desc %@ and found %d matching fonts from it: ", fdesc, 568 NSLog(@"Got desc %@ and found %d matching fonts from it: ", fdesc,
@@ -598,6 +597,8 @@ ns_findfonts (Lisp_Object font_spec, BOOL isMatch)
598 [s1 release]; 597 [s1 release];
599 } 598 }
600 599
600 unblock_input ();
601
601 /* Return something if was a match and nothing found. */ 602 /* Return something if was a match and nothing found. */
602 if (isMatch) 603 if (isMatch)
603 return ns_fallback_entity (); 604 return ns_fallback_entity ();
@@ -701,10 +702,12 @@ static Lisp_Object
701nsfont_list_family (Lisp_Object frame) 702nsfont_list_family (Lisp_Object frame)
702{ 703{
703 Lisp_Object list = Qnil; 704 Lisp_Object list = Qnil;
704 NSEnumerator *families = 705 NSEnumerator *families;
705 [[[NSFontManager sharedFontManager] availableFontFamilies]
706 objectEnumerator];
707 NSString *family; 706 NSString *family;
707
708 block_input ();
709 families = [[[NSFontManager sharedFontManager] availableFontFamilies]
710 objectEnumerator];
708 while ((family = [families nextObject])) 711 while ((family = [families nextObject]))
709 list = Fcons (intern ([family UTF8String]), list); 712 list = Fcons (intern ([family UTF8String]), list);
710 /* FIXME: escape the name? */ 713 /* FIXME: escape the name? */
@@ -713,6 +716,7 @@ nsfont_list_family (Lisp_Object frame)
713 fprintf (stderr, "nsfont: list families returning %"pI"d entries\n", 716 fprintf (stderr, "nsfont: list families returning %"pI"d entries\n",
714 XINT (Flength (list))); 717 XINT (Flength (list)));
715 718
719 unblock_input ();
716 return list; 720 return list;
717} 721}
718 722
@@ -735,6 +739,8 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size)
735 Lisp_Object font_object; 739 Lisp_Object font_object;
736 int fixLeopardBug; 740 int fixLeopardBug;
737 741
742 block_input ();
743
738 if (NSFONT_TRACE) 744 if (NSFONT_TRACE)
739 { 745 {
740 fprintf (stderr, "nsfont: open size %d of fontentity:\n ", pixel_size); 746 fprintf (stderr, "nsfont: open size %d of fontentity:\n ", pixel_size);
@@ -794,13 +800,14 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size)
794 font_info = (struct nsfont_info *) XFONT_OBJECT (font_object); 800 font_info = (struct nsfont_info *) XFONT_OBJECT (font_object);
795 font = (struct font *) font_info; 801 font = (struct font *) font_info;
796 if (!font) 802 if (!font)
797 return Qnil; /* FIXME: other terms do, but return Qnil causes segfault */ 803 {
804 unblock_input ();
805 return Qnil; /* FIXME: other terms do, but return Qnil causes segfault */
806 }
798 807
799 font_info->glyphs = xzalloc (0x100 * sizeof *font_info->glyphs); 808 font_info->glyphs = xzalloc (0x100 * sizeof *font_info->glyphs);
800 font_info->metrics = xzalloc (0x100 * sizeof *font_info->metrics); 809 font_info->metrics = xzalloc (0x100 * sizeof *font_info->metrics);
801 810
802 block_input ();
803
804 /* for metrics */ 811 /* for metrics */
805#ifdef NS_IMPL_COCOA 812#ifdef NS_IMPL_COCOA
806 sfont = [nsfont screenFontWithRenderingMode: 813 sfont = [nsfont screenFontWithRenderingMode:
@@ -1051,6 +1058,7 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y,
1051 char isComposite = s->first_glyph->type == COMPOSITE_GLYPH; 1058 char isComposite = s->first_glyph->type == COMPOSITE_GLYPH;
1052 int end = isComposite ? s->cmp_to : s->nchars; 1059 int end = isComposite ? s->cmp_to : s->nchars;
1053 1060
1061 block_input ();
1054 /* Select face based on input flags */ 1062 /* Select face based on input flags */
1055 switch (ns_tmp_flags) 1063 switch (ns_tmp_flags)
1056 { 1064 {
@@ -1240,7 +1248,6 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y,
1240 else 1248 else
1241 CGContextSetShouldAntialias (gcontext, 1); 1249 CGContextSetShouldAntialias (gcontext, 1);
1242 1250
1243 CGContextSetShouldSmoothFonts (gcontext, NO);
1244 CGContextSetTextMatrix (gcontext, fliptf); 1251 CGContextSetTextMatrix (gcontext, fliptf);
1245 1252
1246 if (bgCol != nil) 1253 if (bgCol != nil)
@@ -1273,6 +1280,7 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y,
1273 /* Draw underline, overline, strike-through. */ 1280 /* Draw underline, overline, strike-through. */
1274 ns_draw_text_decoration (s, face, col, r.size.width, r.origin.x); 1281 ns_draw_text_decoration (s, face, col, r.size.width, r.origin.x);
1275 1282
1283 unblock_input ();
1276 return to-from; 1284 return to-from;
1277} 1285}
1278 1286
@@ -1406,11 +1414,12 @@ ns_glyph_metrics (struct nsfont_info *font_info, unsigned char block)
1406 1414
1407 lb = r.origin.x; 1415 lb = r.origin.x;
1408 rb = r.size.width - w; 1416 rb = r.size.width - w;
1417 // Add to bearing for LCD smoothing. We don't know if it is there.
1409 if (lb < 0) 1418 if (lb < 0)
1410 metrics->lbearing = round (lb); 1419 metrics->lbearing = round (lb - LCD_SMOOTHING_MARGIN);
1411 if (font_info->ital) 1420 if (font_info->ital)
1412 rb += 0.22 * font_info->height; 1421 rb += 0.22 * font_info->height;
1413 metrics->rbearing = lrint (w + rb); 1422 metrics->rbearing = lrint (w + rb + LCD_SMOOTHING_MARGIN);
1414 1423
1415 metrics->descent = r.origin.y < 0 ? -r.origin.y : 0; 1424 metrics->descent = r.origin.y < 0 ? -r.origin.y : 0;
1416 /*lrint (hshrink * [sfont ascender] + expand * hd/2); */ 1425 /*lrint (hshrink * [sfont ascender] + expand * hd/2); */
diff --git a/src/nsterm.m b/src/nsterm.m
index 0fd062b7f17..48efac3f70b 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -4981,6 +4981,7 @@ not_in_argv (NSString *arg)
4981 4981
4982 emacs_event->code = code; 4982 emacs_event->code = code;
4983 EV_TRAILER (theEvent); 4983 EV_TRAILER (theEvent);
4984 processingCompose = NO;
4984 return; 4985 return;
4985 } 4986 }
4986 } 4987 }
@@ -5171,6 +5172,7 @@ not_in_argv (NSString *arg)
5171 if (NS_KEYLOG) 5172 if (NS_KEYLOG)
5172 NSLog (@"doCommandBySelector: %@", NSStringFromSelector (aSelector)); 5173 NSLog (@"doCommandBySelector: %@", NSStringFromSelector (aSelector));
5173 5174
5175 processingCompose = NO;
5174 if (aSelector == @selector (deleteBackward:)) 5176 if (aSelector == @selector (deleteBackward:))
5175 { 5177 {
5176 /* happens when user backspaces over an ongoing composition: 5178 /* happens when user backspaces over an ongoing composition:
diff --git a/src/sysdep.c b/src/sysdep.c
index 158d2f73eec..0e9a6826005 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1678,6 +1678,25 @@ deliver_arith_signal (int sig)
1678 deliver_thread_signal (sig, handle_arith_signal); 1678 deliver_thread_signal (sig, handle_arith_signal);
1679} 1679}
1680 1680
1681#ifdef SIGDANGER
1682
1683/* Handler for SIGDANGER. */
1684static void
1685handle_danger_signal (int sig)
1686{
1687 malloc_warning ("Operating system warns that virtual memory is running low.\n");
1688
1689 /* It might be unsafe to call do_auto_save now. */
1690 force_auto_save_soon ();
1691}
1692
1693static void
1694deliver_danger_signal (int sig)
1695{
1696 deliver_process_signal (sig, handle_danger_signal);
1697}
1698#endif
1699
1681/* Treat SIG as a terminating signal, unless it is already ignored and 1700/* Treat SIG as a terminating signal, unless it is already ignored and
1682 we are in --batch mode. Among other things, this makes nohup work. */ 1701 we are in --batch mode. Among other things, this makes nohup work. */
1683static void 1702static void
diff --git a/src/xterm.c b/src/xterm.c
index e24fbd19f2b..212530e5acf 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -4811,21 +4811,24 @@ x_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar, int portion, int positio
4811 4811
4812#ifdef USE_MOTIF 4812#ifdef USE_MOTIF
4813 4813
4814 /* We use an estimate of 30 chars per line rather than the real 4814 if (scroll_bar_adjust_thumb_portion_p)
4815 `portion' value. This has the disadvantage that the thumb size 4815 {
4816 is not very representative, but it makes our life a lot easier. 4816 /* We use an estimate of 30 chars per line rather than the real
4817 Otherwise, we have to constantly adjust the thumb size, which 4817 `portion' value. This has the disadvantage that the thumb size
4818 we can't always do quickly enough: while dragging, the size of 4818 is not very representative, but it makes our life a lot easier.
4819 the thumb might prevent the user from dragging the thumb all the 4819 Otherwise, we have to constantly adjust the thumb size, which
4820 way to the end. but Motif and some versions of Xaw3d don't allow 4820 we can't always do quickly enough: while dragging, the size of
4821 updating the thumb size while dragging. Also, even if we can update 4821 the thumb might prevent the user from dragging the thumb all the
4822 its size, the update will often happen too late. 4822 way to the end. but Motif and some versions of Xaw3d don't allow
4823 If you don't believe it, check out revision 1.650 of xterm.c to see 4823 updating the thumb size while dragging. Also, even if we can update
4824 what hoops we were going through and the still poor behavior we got. */ 4824 its size, the update will often happen too late.
4825 portion = WINDOW_TOTAL_LINES (XWINDOW (bar->window)) * 30; 4825 If you don't believe it, check out revision 1.650 of xterm.c to see
4826 /* When the thumb is at the bottom, position == whole. 4826 what hoops we were going through and the still poor behavior we got. */
4827 So we need to increase `whole' to make space for the thumb. */ 4827 portion = WINDOW_TOTAL_LINES (XWINDOW (bar->window)) * 30;
4828 whole += portion; 4828 /* When the thumb is at the bottom, position == whole.
4829 So we need to increase `whole' to make space for the thumb. */
4830 whole += portion;
4831 }
4829 4832
4830 if (whole <= 0) 4833 if (whole <= 0)
4831 top = 0, shown = 1; 4834 top = 0, shown = 1;
@@ -10802,6 +10805,16 @@ With MS Windows or Nextstep, the value is t. */);
10802 Vx_toolkit_scroll_bars = Qnil; 10805 Vx_toolkit_scroll_bars = Qnil;
10803#endif 10806#endif
10804 10807
10808 DEFVAR_BOOL ("scroll-bar-adjust-thumb-portion",
10809 scroll_bar_adjust_thumb_portion_p,
10810 doc: /* Adjust thumb for overscrolling for Gtk+ and MOTIF.
10811Non-nil means adjust the thumb in the scroll bar so it can be dragged downwards
10812even if the end of the buffer is shown (i.e. overscrolling).
10813Set to nil if you want the thumb to be at the bottom when the end of the buffer
10814is shown. Also, the thumb fills the whole scroll bar when the entire buffer
10815is visible. In this case you can not overscroll. */);
10816 scroll_bar_adjust_thumb_portion_p = 1;
10817
10805 staticpro (&last_mouse_motion_frame); 10818 staticpro (&last_mouse_motion_frame);
10806 last_mouse_motion_frame = Qnil; 10819 last_mouse_motion_frame = Qnil;
10807 10820