]> code.delx.au - gnu-emacs/commitdiff
Merge from emacs-23
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 18 Nov 2010 03:54:14 +0000 (22:54 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 18 Nov 2010 03:54:14 +0000 (22:54 -0500)
38 files changed:
.dir-locals.el
admin/notes/bugtracker
configure
configure.in
doc/lispref/ChangeLog
doc/lispref/customize.texi
doc/lispref/loading.texi
doc/lispref/text.texi
doc/misc/ChangeLog
doc/misc/edt.texi
etc/NEWS.23
lib-src/ChangeLog
lib-src/emacsclient.c
lisp/ChangeLog
lisp/calendar/calendar.el
lisp/comint.el
lisp/emacs-lisp/autoload.el
lisp/emacs-lisp/bytecomp.el
lisp/emacs-lisp/smie.el
lisp/files.el
lisp/ls-lisp.el
lisp/mouse-sel.el
lisp/novice.el
lisp/printing.el
lisp/progmodes/python.el
lisp/server.el
lisp/simple.el
lisp/speedbar.el
lisp/subr.el
lisp/textmodes/picture.el
lisp/vc/vc-hg.el
lisp/wid-edit.el
nt/INSTALL
src/ChangeLog
src/config.in
src/keyboard.c
src/lread.c
src/xsettings.c

index 873f733854d5f176975537c68a8345a31a09f73f..f098f3e74601d6a6fc2c0806b267ce3f9454bd7e 100644 (file)
@@ -2,6 +2,8 @@
          (sentence-end-double-space . t)
          (fill-column . 70)))
  (c-mode . ((c-file-style . "GNU")))
+ ;; You must set bugtracker_debbugs_url in your bazaar.conf for this to work.
+ ;; See admin/notes/bugtracker.
  (log-edit-mode . ((log-edit-rewrite-fixes
                     " (bug#\\([0-9]+\\))" . "debbugs:\\1")))
  (change-log-mode . ((add-log-time-zone-rule . t)
index 9c7631fdfae8728e7df3db75d4f6a597ecbbfdb4..902067011b0253113585b1612481a1c75cfeb5a7 100644 (file)
@@ -474,16 +474,41 @@ http://lists.gnu.org/archive/html/emacs-devel/2009-11/msg00440.html
 
 ** Bazaar stuff
 
-*** You can use `bzr commit --fixes emacs:123' to mark that a commit fixes
-Emacs bug 123.  You will first need to add a line to your bazaar.conf:
+*** You can use `bzr commit --fixes debbugs:123' to mark that a commit fixes
+Emacs bug 123.  You will first need to add a line to your ~/bazaar.conf
+or ~/locations.conf:
 
-bugtracker_emacs_url = http://debbugs.gnu.org/{id}
+bugtracker_debbugs_url = http://debbugs.gnu.org/{id}
+
+Here "{id}" is a literal string, a placeholder that will be replaced
+by the bug number you specify after `--fixes debbugs:' in the bzr
+command line (123 in the example above).
+
+In the bazaar.conf file, this setting should go into the [DEFAULTS]
+section.
+
+In the locations.conf file, it should go into the branch-specific
+configuration section for the branch where you want this to be in
+effect.  For example, if you want this to be in effect for the branch
+located at `/home/projects/emacs/trunk', you need to have this in your
+~/locations.conf file:
+
+[/home/projects/emacs/trunk]
+bugtracker_debbugs_url = http://debbugs.gnu.org/{id}
+
+If you want to use this in all Emacs branches whose common parent is
+`/home/projects/emacs', put the setting in the [/home/projects/emacs]
+section.  See "bzr help configuration" for more information about
+the *.conf files, their location and formats.  See "bzr help bugs" for
+more information about the bugtracker_debbugs_url setting.
+
+See also log-edit-rewrite-fixes in .dir-locals.el.
 
 Note that all this does is add some metadata to the commit, it doesn't
-actually mark the bug as closed in the tracker.  There seems to be no
-way to see this "metadata" with `bzr log', which is rather poor, but
-it will show up as a link in a recent loggerhead installation, or with
-some of the graphical frontends to bzr log.
+actually mark the bug as closed in the tracker.  You can see this
+information with `bzr log', and it will show up as a link in a recent
+loggerhead installation, or with some of the graphical frontends to
+`bzr log'.
 
 ** Gnus-specific voodoo
 
index 6b218b37794f2a94078f18aae2d054184ee4407c..5bcf5e5da97083caf4ee97c96998e206d145e6a8 100755 (executable)
--- a/configure
+++ b/configure
@@ -9364,6 +9364,17 @@ $as_echo "no" >&6; }
 
 $as_echo "#define HAVE_GCONF 1" >>confdefs.h
 
+            for ac_func in g_type_init
+do :
+  ac_fn_c_check_func "$LINENO" "g_type_init" "ac_cv_func_g_type_init"
+if test "x$ac_cv_func_g_type_init" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_G_TYPE_INIT 1
+_ACEOF
+
+fi
+done
+
    fi
 fi
 
index a4ace0aa8fb2a5d01f3253f648ebf8c02e33050d..cbb0298097fac90bfe25389db6827bdbfd547efc 100644 (file)
@@ -1982,6 +1982,8 @@ if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
    PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
    if test "$HAVE_GCONF" = yes; then
       AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
+      dnl Newer GConf doesn't link with g_objects, so this is not defined.
+      AC_CHECK_FUNCS([g_type_init])
    fi
 fi
 
index d6853e0066d60832a5e119b9f0bc2f84088c970b..8f57bc45da57b8e4e789a4d29b13f340878fa005 100644 (file)
@@ -1,3 +1,14 @@
+2010-11-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * customize.texi (Composite Types): Lower-case index entry.
+
+       * loading.texi (How Programs Do Loading): Document
+       load-file-name.  (Bug#7346)
+
+2010-11-17  Glenn Morris  <rgm@gnu.org>
+
+       * text.texi (Kill Functions, Low-Level Kill Ring): Small fixes.
+
 2010-11-13  Eli Zaretskii  <eliz@gnu.org>
 
        * display.texi (Usual Display): Characters with no fonts are not
index 4b620049b04256d83a31d6340f99406a368bf0ad..bfd45518bc89f106a15236b6c5671fd247dc5e4c 100644 (file)
@@ -733,7 +733,7 @@ The value must be a valid color name, and you can do completion with
 
 @node Composite Types
 @subsection Composite Types
-@cindex Composite Types (customization)
+@cindex composite types (customization)
 
   When none of the simple types is appropriate, you can use composite
 types, which build new types from other types or from specified data.
index dee2a0252ebc897314b6396d7de9634fa392513e..05d836140c73eeb59356085afac34144c6254a69 100644 (file)
@@ -107,6 +107,10 @@ in @code{load-path}, where @code{nil} stands for the default directory.
 @code{load-path}, then all three suffixes in the second directory, and
 so on.  @xref{Library Search}.
 
+Whatever the name under which the file is eventually found, and the
+directory where Emacs found it, Emacs sets the value of the variable
+@code{load-file-name} to that file's name.
+
 If you get a warning that @file{foo.elc} is older than @file{foo.el}, it
 means you should consider recompiling @file{foo.el}.  @xref{Byte
 Compilation}.
@@ -157,6 +161,12 @@ This variable is non-@code{nil} if Emacs is in the process of loading a
 file, and it is @code{nil} otherwise.
 @end defvar
 
+@defvar load-file-name
+When Emacs is in the process of loading a file, this variable's value
+is the name of that file, as Emacs found it during the search
+described earlier in this section.
+@end defvar
+
 @defvar load-read-function
 @anchor{Definition of load-read-function}
 @c do not allow page break at anchor; work around Texinfo deficiency.
index 04e1e7141331ffcbf648042498c328876ce9be58..b6723a0bee4d2f15b33f0247ea63d521d1e17234 100644 (file)
@@ -901,10 +901,10 @@ from the buffer.  It returns @code{nil}.
 The command does not set @code{this-command} to @code{kill-region}, so a
 subsequent kill command does not append to the same kill ring entry.
 
-Don't call @code{copy-region-as-kill} in Lisp programs unless you aim to
-support Emacs 18.  For newer Emacs versions, it is better to use
-@code{kill-new} or @code{kill-append} instead.  @xref{Low-Level Kill
-Ring}.
+@c FIXME Why is it better?  Why isn't copy-region-as-kill obsolete then?
+@c Why is it used in many places in Emacs?
+In Lisp programs, it is better to use @code{kill-new} or
+@code{kill-append} instead of this command.  @xref{Low-Level Kill Ring}.
 @end deffn
 
 @node Yanking
@@ -1042,8 +1042,8 @@ text property, if there is one.
 @subsection Low-Level Kill Ring
 
   These functions and variables provide access to the kill ring at a
-lower level, but still convenient for use in Lisp programs, because they
-take care of interaction with window system selections
+lower level, but are still convenient for use in Lisp programs,
+because they take care of interaction with window system selections
 (@pxref{Window System Selections}).
 
 @defun current-kill n &optional do-not-move
@@ -4324,6 +4324,4 @@ code that is itself run from a modification hook, then rebind locally
 @code{inhibit-modification-hooks} to @code{nil}.
 @end defvar
 
-@ignore
-   arch-tag: 3721e738-a1cb-4085-bc1a-6cb8d8e1d32b
-@end ignore
+
index 21835c82f67fd4a08297c9d4997089ff0488a3ed..f9e55ffb5ee669ade049cd999061121d071f7a69 100644 (file)
@@ -2,6 +2,14 @@
 
        * gnus.texi (Misc Article): Document gnus-inhibit-images.
 
+2010-11-17  Glenn Morris  <rgm@gnu.org>
+
+       * edt.texi: Remove information about Emacs 19.
+
+2010-11-17  Michael Albinus  <michael.albinus@gmx.de>
+
+       * trampver.texi: Update release number.
+
 2010-11-12  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * gnus.texi (Article Washing): Fix typo.
index d394137d76b9038db95912edf3878e503761fd2c..f3d0eacc0f3840b08254316aa5a33739bf6b130c 100644 (file)
@@ -63,8 +63,8 @@ of DEC's EDT editor.
 @node Overview
 @chapter Overview of the EDT Package
 
-This manual describes version 4.0 of the EDT Emulation for Emacs 19 and
-above.  It comes with special functions which replicate nearly all of
+This manual describes version 4.0 of the EDT Emulation for Emacs.
+It comes with special functions which replicate nearly all of
 EDT's keypad mode behavior.  It sets up default keypad and function key
 bindings which closely match those found in EDT.  Support is provided so
 that users may reconfigure most keypad and function key bindings to
@@ -152,9 +152,8 @@ You can also invoke @code{edt-set-scroll-margins} interactively while
 EDT Emulation is active to change the settings for that session.
 
 @strong{Please note:} Another way to set the scroll margins is to use
-the Emacs customization feature (not available in Emacs 19) to set the
-following two variables directly: @code{edt-top-scroll-margin} and
-@code{edt-bottom-scroll-margin}.
+the Emacs customization feature to set the following two variables
+directly: @code{edt-top-scroll-margin} and @code{edt-bottom-scroll-margin}.
 
 Enter the Emacs @code{customize} command.  First select the
 @samp{Editing} group and then select the @samp{Emulations} group.
@@ -239,8 +238,7 @@ Provide an easy way to restore @strong{all} original Emacs key bindings,
 just as they existed before the EDT emulation was first invoked.
 
 @item
-Support GNU Emacs 19 and higher.  (GNU Emacs 18 and below is no longer
-supported.)  XEmacs 19, and above, is also supported.
+Support GNU Emacs 19 and higher.  XEmacs 19, and above, is also supported.
 
 @item
 Supports highlighting of marked text within the EDT emulation on all
@@ -933,9 +931,8 @@ You can also invoke @code{edt-set-scroll-margins} interactively while
 EDT Emulation is active to change the settings for that session.
 
 @strong{Please note:} Another way to set the scroll margins is to use
-the Emacs customization feature (not available in Emacs 19) to set the
-following two variables directly: @code{edt-top-scroll-margin} and
-@code{edt-bottom-scroll-margin}.
+the Emacs customization feature to set the following two variables
+directly: @code{edt-top-scroll-margin} and @code{edt-bottom-scroll-margin}.
 
 Enter the Emacs @code{customize} command.  First select the
 @samp{Editing} group and then select the @samp{Emulations} group.
@@ -946,7 +943,3 @@ Finally, select the @samp{Edt} group and follow the directions.
 @include doclicense.texi
 
 @bye
-
-@ignore
-   arch-tag: 1b7ebe01-754b-4834-a12b-f152ef7db9e0
-@end ignore
index aa8f47f2e2b3aa486718ca3f0b6bfbc4d1985e01..0d37746d46061d988525fefd20c577fb0bb57b55 100644 (file)
@@ -48,6 +48,10 @@ indentation, which can be adjusted via ad-hoc indentation rules.
 \f
 * Incompatible Lisp Changes in Emacs 23.3
 
+** posn-col-row now excludes the header line from the row count
+If the frame has a header line, posn-col-row will count row numbers
+starting from the first line of text below the header line.
+
 \f
 * Lisp changes in Emacs 23.3
 
@@ -55,6 +59,7 @@ indentation, which can be adjusted via ad-hoc indentation rules.
   The old names are obsolete.
 ** The use of unintern without an obarray arg is declared obsolete.
 ** The function `princ-list' is declared obsolete.
+** The yank-handler argument to kill-region and friends is declared obsolete.
 ** New function byte-to-string, like char-to-string but for bytes.
 
 \f
index e402fe44f94adf797c3b0d7dcf71450be272e365..d1745a893bfefccbab5554cb61d767b7b6facea0 100644 (file)
@@ -1,3 +1,8 @@
+2010-11-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * emacsclient.c (set_local_socket) [DARWIN_OS]: Add fall-back
+       definition of _CS_DARWIN_USER_TEMP_DIR for Mac OS X 10.4 and older.
+
 2010-11-15  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * test-distrib.c: Remove include guards for config.h and fcntl.h.
index b60b2661805de7e84e08e4dda7b096a69c4a0c25..48ea3d22dc96dfe40f6d6d99f1a964fda88d8182 100644 (file)
@@ -1225,6 +1225,9 @@ set_local_socket (void)
        if (!tmpdir)
           {
 #ifdef DARWIN_OS
+#ifndef _CS_DARWIN_USER_TEMP_DIR
+#define _CS_DARWIN_USER_TEMP_DIR 65537
+#endif
             size_t n = confstr (_CS_DARWIN_USER_TEMP_DIR, NULL, (size_t) 0);
             if (n > 0)
               {
index dc5761109d7379d4861c8b73e2a78e68359a5cd0..9fa66ca8022125509ac73ab4f2f862c0c97f7e2d 100644 (file)
@@ -1,3 +1,84 @@
+2010-11-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * simple.el (kill-new, kill-append, kill-region):
+       * comint.el (comint-kill-region): Make the yank-handler argument obsolete.
+
+2010-11-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/smie.el (smie-bnf-classify): Signal errors for tokens
+       that are both openers (resp. closers) and something else.
+       (smie-grammar): Loosen definition of valid values.
+       (smie-next-sexp, smie-down-list, smie-blink-matching-open)
+       (smie-indent--parent, smie-rule-parent, smie-indent-keyword)
+       (smie-indent-after-keyword): Adjust users.
+       (smie-indent-keyword): Don't indent empty lines.
+
+       * vc-hg.el (vc-hg-program): New var.
+       Suggested by Norman Gray <norman@astro.gla.ac.uk>.
+       (vc-hg-state, vc-hg-working-revision, vc-hg-command): Use it.
+
+2010-11-18  Glenn Morris  <rgm@gnu.org>
+
+       * emacs-lisp/autoload.el (autoload-find-destination): The function
+       coding-system-eol-type may return non-numeric values.  (Bug#7414)
+
+2010-11-18  Ulrich Mueller  <ulm@gentoo.org>
+
+       * server.el (server-force-stop): Ensure the server is stopped (Bug#7409).
+
+2010-11-18  Eli Zaretskii  <eliz@gnu.org>
+
+       * subr.el (posn-col-row): Pay attention to header line.  (Bug#7390)
+
+2010-11-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * textmodes/picture.el (picture-mouse-set-point): Don't use
+       posn-col-row; explicitly compute the motion based on the posn at
+       the window-start (Bug#7390).
+
+2010-11-18  Glenn Morris  <rgm@gnu.org>
+
+       * novice.el (disabled-command-function):
+       Fix 2009-11-15 change.  (Bug#7384)
+
+2010-11-18  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/calendar.el (diary-iso-date-forms): Make elements
+       mutually exclusive.  (Bug#7377)
+
+2010-11-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/smie.el (smie-prec2->grammar): Obey equality constraints
+       when filling the remaining "unconstrained" values.
+
+2010-11-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/bytecomp.el (byte-compile-warnings): Simplify the
+       safety predicate.
+
+       * files.el (safe-local-variable-p): Gracefully handle errors.
+
+       * emacs-lisp/smie.el (smie-rule-parent, smie-indent--rule):
+       Use smie-indent-virtual when indenting relative to an opener.
+       (smie-rule-separator): Use smie-rule-parent.
+       (smie-indent-keyword): Consult rules, even for openers at bol.
+       (smie-indent-comment-close): Try to align closer's content.
+
+2010-11-18  Glenn Morris  <rgm@gnu.org>
+
+       * ls-lisp.el (ls-lisp-dired-ignore-case): Make it an obsolete alias.
+
+2010-11-18  Glenn Morris  <rgm@gnu.org>
+
+       * printing.el (pr-menu-bind): Doc fix.
+
+       * speedbar.el (speedbar-toggle-images): Doc fix.
+
+       * progmodes/python.el (python-shell): Doc fix.
+
+       * wid-edit.el (widget-field-use-before-change)
+       (widget-use-overlay-change): Doc fixes.
+
 2010-11-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        Minor cleanup to improve style.
index 418f740bb83cf449a6eb931943496fd05d3add5c..24ebb19a58b42e33a9c4f9278211d07ccb3b940c 100644 (file)
@@ -736,14 +736,16 @@ calendar package is already loaded).  Rather, use either
 (defcustom diary-iso-date-forms
   '((month "[-/]" day "[^-/0-9]")
     (year "[-/]" month "[-/]" day "[^0-9]")
-    (monthname "-" day "[^-0-9]")
-    (year "-" monthname "-" day "[^0-9]")
+    ;; Cannot allow [-/] as separators here, since it would also match
+    ;; the first element (bug#7377).
+    (monthname " *" day "[^-0-9]")
+    (year " *" monthname " *" day "[^0-9]")
     (dayname "\\W"))
     "List of pseudo-patterns describing the ISO style of dates.
-The defaults are: MONTH[-/]DAY; YEAR[-/]MONTH[-/]DAY; MONTHNAME-DAY;
-YEAR-MONTHNAME-DAY; DAYNAME.  Normally you should not customize this,
+The defaults are: MONTH[-/]DAY; YEAR[-/]MONTH[-/]DAY; MONTHNAME DAY;
+YEAR MONTHNAME DAY; DAYNAME.  Normally you should not customize this,
 but `diary-date-forms' (which see)."
-    :version "23.1"
+    :version "23.3"                     ; bug#7377
     :type '(repeat (choice (cons :tag "Backup"
                                :value (backup . nil)
                                (const backup)
@@ -2570,5 +2572,4 @@ If called by a mouse-event, pops up a menu with the result."
 ;; byte-compile-dynamic: t
 ;; End:
 
-;; arch-tag: 19c61596-c8fb-4c69-bcf1-7dd739919cd8
 ;;; calendar.el ends here
index 0eee4128a2bae4e67e5d6a8786c19222fa0d2760..2d03d1679ae4d12b45b90ae78d215775a116f18d 100644 (file)
@@ -2648,6 +2648,7 @@ updated using `comint-update-fence', if necessary."
        (let ((inhibit-read-only t))
          (kill-region beg end yank-handler)
          (comint-update-fence))))))
+(set-advertised-calling-convention 'comint-kill-region '(beg end) "23.3")
 
 \f
 ;; Support for source-file processing commands.
index 532d68245d87c8dc35e52576727a3f45dbc5ed64..4dd1a118ebdb30c2c27320e920212ab224ffa251 100644 (file)
@@ -575,8 +575,8 @@ removes any prior now out-of-date autoload entries."
            (autoload-ensure-default-file (autoload-generated-file)))
         ;; This is to make generated-autoload-file have Unix EOLs, so
         ;; that it is portable to all platforms.
-        (unless (zerop (coding-system-eol-type buffer-file-coding-system))
-          (set-buffer-file-coding-system 'unix))
+        (or (eq 0 (coding-system-eol-type buffer-file-coding-system))
+           (set-buffer-file-coding-system 'unix))
         (or (> (buffer-size) 0)
             (error "Autoloads file %s lacks boilerplate" buffer-file-name))
         (or (file-writable-p buffer-file-name)
index f1adc5b496cdf6f07d9fadcaeee69b52cd482e57..f04aad994f3e415898ca87b88c05214d4c33084b 100644 (file)
@@ -301,21 +301,12 @@ suppress.  For example, (not mapcar) will suppress warnings about mapcar."
                 (set :menu-tag "Some"
                       ,@(mapcar (lambda (x) `(const ,x))
                                 byte-compile-warning-types))))
-;;;###autoload(put 'byte-compile-warnings 'safe-local-variable 'byte-compile-warnings-safe-p)
 
 ;;;###autoload
-(defun byte-compile-warnings-safe-p (x)
-  "Return non-nil if X is valid as a value of `byte-compile-warnings'."
-  (or (booleanp x)
-      (and (listp x)
-           (if (eq (car x) 'not) (setq x (cdr x))
-             t)
-          (equal (mapcar
-                  (lambda (e)
-                    (when (memq e byte-compile-warning-types)
-                      e))
-                  x)
-                 x))))
+(put 'byte-compile-warnings 'safe-local-variable
+     (lambda (v)
+       (or (symbolp v)
+           (null (delq nil (mapcar (lambda (x) (not (symbolp x))) v))))))
 
 (defun byte-compile-warning-enabled-p (warning)
   "Return non-nil if WARNING is enabled, according to `byte-compile-warnings'."
index 03c03126d2f2aee8a952d51d12a8398ee337e1d9..179e0a9f094dec8388f842672928d48974958800 100644 (file)
 ;; Since then, some of that code has been beaten into submission, but the
 ;; smie-indent-keyword is still pretty obscure.
 
-;;; Code:
+;; Conflict resolution:
+;;
+;; - One source of conflicts is when you have:
+;;     (exp ("IF" exp "ELSE" exp "END") ("CASE" cases "END"))
+;;     (cases (cases "ELSE" insts) ...)
+;;   The IF-rule implies ELSE=END and the CASE-rule implies ELSE>END.
+;;   FIXME: we could try to resolve such conflicts automatically by changing
+;;   the way BNF rules such as the IF-rule is handled.  I.e. rather than
+;;   IF=ELSE and ELSE=END, we could turn them into IF<ELSE and ELSE>END
+;;   and IF=END,
+
+;; TODO & BUGS:
+;;
+;; - FIXME: I think the behavior on empty lines is wrong.  It shouldn't
+;;   look at the next token on subsequent lines.
+;; - Using the structural information SMIE gives us, it should be possible to
+;;   implement a `smie-align' command that would automatically figure out what
+;;   there is to align and how to do it (something like: align the token of
+;;   lowest precedence that appears the same number of times on all lines,
+;;   and then do the same on each side of that token).
+;; - Maybe accept two juxtaposed non-terminals in the BNF under the condition
+;;   that the first always ends with a terminal, or that the second always
+;;   starts with a terminal.
 
-;; FIXME: I think the behavior on empty lines is wrong.  It shouldn't
-;; look at the next token on subsequent lines.
+;;; Code:
 
 (eval-when-compile (require 'cl))
 
@@ -155,6 +176,11 @@ one of those elements share the same precedence level and associativity."
 
 (put 'smie-bnf->prec2 'pure t)
 (defun smie-bnf->prec2 (bnf &rest precs)
+  ;; FIXME: Add repetition operator like (repeat <separator> <elems>).
+  ;; Maybe also add (or <elem1> <elem2>...) for things like
+  ;; (exp (exp (or "+" "*" "=" ..) exp)).
+  ;; Basically, make it EBNF (except for the specification of a separator in
+  ;; the repetition).
   (let ((nts (mapcar 'car bnf))         ;Non-terminals
         (first-ops-table ())
         (last-ops-table ())
@@ -327,6 +353,7 @@ from the table, e.g. the table will not include things like (\"if\" . \"else\").
   "Return a table classifying terminals.
 Each terminal can either be an `opener', a `closer', or neither."
   (let ((table (make-hash-table :test #'equal))
+        (nts (mapcar #'car bnf))
         (alist '()))
     (dolist (category bnf)
       (puthash (car category) 'neither table) ;Remove non-terminals.
@@ -336,14 +363,22 @@ Each terminal can either be an `opener', a `closer', or neither."
           (let ((first (pop rhs)))
             (puthash first
                      (if (memq (gethash first table) '(nil opener))
-                         'opener 'neither)
+                         'opener
+                       (unless (member first nts)
+                         (error "SMIE: token %s is both opener and non-opener"
+                                first))
+                       'neither)
                      table))
           (while (cdr rhs)
             (puthash (pop rhs) 'neither table)) ;Remove internals.
           (let ((last (pop rhs)))
             (puthash last
                      (if (memq (gethash last table) '(nil closer))
-                         'closer 'neither)
+                         'closer
+                       (unless (member last nts)
+                         (error "SMIE: token %s is both closer and non-closer"
+                                last))
+                       'neither)
                      table)))))
     (maphash (lambda (tok v)
                (when (memq v '(closer opener))
@@ -385,6 +420,18 @@ CSTS is a list of pairs representing arcs in a graph."
      (append names (list (car names)))
      " < ")))
 
+;; (defun smie-check-grammar (grammar prec2 &optional dummy)
+;;   (maphash (lambda (k v)
+;;              (when (consp k)
+;;                (let ((left (nth 2 (assoc (car k) grammar)))
+;;                      (right (nth 1 (assoc (cdr k) grammar))))
+;;                  (when (and left right)
+;;                    (cond
+;;                     ((< left right) (assert (eq v '<)))
+;;                     ((> left right) (assert (eq v '>)))
+;;                     (t (assert (eq v '=))))))))
+;;            prec2))
+
 (put 'smie-prec2->grammar 'pure t)
 (defun smie-prec2->grammar (prec2)
   "Take a 2D precedence table and turn it into an alist of precedence levels.
@@ -453,6 +500,7 @@ PREC2 is a table as returned by `smie-precs->prec2' or
               ;; left = right).
               (unless (caar cst)
                 (setcar (car cst) i)
+                ;; (smie-check-grammar table prec2 'step1)
                 (incf i))
               (setq csts (delq cst csts))))
           (unless progress
@@ -462,8 +510,19 @@ PREC2 is a table as returned by `smie-precs->prec2' or
         (incf i 10))
       ;; Propagate equalities back to their source.
       (dolist (eq (nreverse eqs))
-        (assert (or (null (caar eq)) (eq (car eq) (cdr eq))))
-        (setcar (car eq) (cadr eq)))
+        (when (null (cadr eq))
+          ;; There's an equality constraint, but we still haven't given
+          ;; it a value: that means it binds tighter than anything else,
+          ;; and it can't be an opener/closer (those don't have equality
+          ;; constraints).
+          ;; So set it here rather than below since doing it below
+          ;; makes it more difficult to obey the equality constraints.
+          (setcar (cdr eq) i)
+          (incf i))
+        (assert (or (null (caar eq)) (eq (caar eq) (cadr eq))))
+        (setcar (car eq) (cadr eq))
+        ;; (smie-check-grammar table prec2 'step2)
+        )
       ;; Finally, fill in the remaining vars (which only appeared on the
       ;; right side of the < constraints).
       (let ((classification-table (gethash :smie-open/close-alist prec2)))
@@ -484,6 +543,7 @@ PREC2 is a table as returned by `smie-precs->prec2' or
             (incf i)))))                ;See other (incf i) above.
     (let ((ca (gethash :smie-closer-alist prec2)))
       (when ca (push (cons :smie-closer-alist ca) table)))
+    ;; (smie-check-grammar table prec2 'step3)
     table))
 
 ;;; Parsing using a precedence level table.
@@ -493,9 +553,9 @@ PREC2 is a table as returned by `smie-precs->prec2' or
 This list is normally built by `smie-prec2->grammar'.
 Each element is of the form (TOKEN LEFT-LEVEL RIGHT-LEVEL).
 Parsing is done using an operator precedence parser.
-LEFT-LEVEL and RIGHT-LEVEL can be either numbers or nil, where nil
+LEFT-LEVEL and RIGHT-LEVEL can be either numbers or a list, where a list
 means that this operator does not bind on the corresponding side,
-i.e. a LEFT-LEVEL of nil means this is a token that behaves somewhat like
+e.g. a LEFT-LEVEL of nil means this is a token that behaves somewhat like
 an open-paren, whereas a RIGHT-LEVEL of nil would correspond to something
 like a close-paren.")
 
@@ -579,9 +639,10 @@ Possible return values:
                 (if (eq pos (point))
                     ;; We did not move, so let's abort the loop.
                     (throw 'return (list t (point))))))
-             ((null (funcall op-back toklevels))
+             ((not (numberp (funcall op-back toklevels)))
               ;; A token like a paren-close.
-              (assert (funcall op-forw toklevels)) ;Otherwise, why mention it?
+              (assert (numberp     ; Otherwise, why mention it in smie-grammar.
+                       (funcall op-forw toklevels)))
               (push toklevels levels))
              (t
               (while (and levels (< (funcall op-back toklevels)
@@ -589,7 +650,7 @@ Possible return values:
                 (setq levels (cdr levels)))
               (cond
                ((null levels)
-                (if (and halfsexp (funcall op-forw toklevels))
+                (if (and halfsexp (numberp (funcall op-forw toklevels)))
                     (push toklevels levels)
                   (throw 'return
                          (prog1 (list (or (car toklevels) t) (point) token)
@@ -605,15 +666,15 @@ Possible return values:
                    ;; Keep looking as long as we haven't matched the
                    ;; topmost operator.
                    (levels
-                    (if (funcall op-forw toklevels)
+                    (if (numberp (funcall op-forw toklevels))
                         (push toklevels levels)))
                    ;; We matched the topmost operator.  If the new operator
                    ;; is the last in the corresponding BNF rule, we're done.
-                   ((null (funcall op-forw toklevels))
+                   ((not (numberp (funcall op-forw toklevels)))
                     ;; It is the last element, let's stop here.
                     (throw 'return (list nil (point) token)))
                    ;; If the new operator is not the last in the BNF rule,
-                   ;; ans is not associative, it's one of the inner operators
+                   ;; and is not associative, it's one of the inner operators
                    ;; (like the "in" in "let .. in .. end"), so keep looking.
                    ((not (smie--associative-p toklevels))
                     (push toklevels levels))
@@ -714,7 +775,7 @@ Possible return values:
                 ;; intervention, e.g. for Octave's use of `until'
                 ;; as a pseudo-closer of `do'.
                 (closer)
-                ((or (equal levels '(nil)) (nth 1 (car levels)))
+                ((or (equal levels '(nil)) (numberp (nth 1 (car levels))))
                  (error "Doesn't look like a block"))
                 (t
                  ;; Now that smie-setup automatically sets smie-closer-alist
@@ -725,7 +786,7 @@ Possible return values:
                        (when (and (eq (nth 2 level) (nth 1 other))
                                   (not (memq other seen)))
                          (push other seen)
-                         (if (nth 2 other)
+                         (if (numberp (nth 2 other))
                              (push other levels)
                            (push (car other) found))))))
                  (cond
@@ -766,8 +827,8 @@ This command assumes point is not in a string or comment."
                   (progn (goto-char start) (down-list inc) nil)
                 (forward-sexp inc)
                 (/= (point) pos)))
-             ((and levels (null (nth (+ 1 offset) levels))) nil)
-             ((and levels (null (nth (- 2 offset) levels)))
+             ((and levels (not (numberp (nth (+ 1 offset) levels)))) nil)
+             ((and levels (not (numberp (nth (- 2 offset) levels))))
               (let ((end (point)))
                 (goto-char start)
                 (signal 'scan-error
@@ -852,7 +913,7 @@ This uses SMIE's tables and is expected to be placed on `post-self-insert-hook'.
                          (not (memq (char-before)
                                     smie-blink-matching-triggers)))
                      (or smie-blink-matching-inners
-                         (null (nth 2 (assoc token smie-grammar)))))
+                         (not (numberp (nth 2 (assoc token smie-grammar))))))
             ;; The major mode might set blink-matching-check-function
             ;; buffer-locally so that interactive calls to
             ;; blink-matching-open work right, but let's not presume
@@ -928,7 +989,7 @@ the beginning of a line."
       (save-excursion
         (let* ((pos (point))
                (tok (funcall smie-forward-token-function)))
-          (unless (cadr (assoc tok smie-grammar))
+          (unless (numberp (cadr (assoc tok smie-grammar)))
             (goto-char pos))
           (setq smie--parent
                 (smie-backward-sexp 'halfsexp))))))
@@ -969,8 +1030,14 @@ Only meaningful when called from within `smie-rules-function'."
     (goto-char (cadr (smie-indent--parent)))
     (cons 'column
           (+ (or offset 0)
-             (if (smie-indent--hanging-p)
-                 (smie-indent-virtual) (current-column))))))  
+             ;; Use smie-indent-virtual when indenting relative to an opener:
+             ;; this will also by default use current-column unless
+             ;; that opener is hanging, but will additionally consult
+             ;; rules-function, so it gives it a chance to tweak
+             ;; indentation (e.g. by forcing indentation relative to
+             ;; its own parent, as in fn a => fn b => fn c =>).
+             (if (or (listp (car smie--parent)) (smie-indent--hanging-p))
+                 (smie-indent-virtual) (current-column))))))
 
 (defvar smie-rule-separator-outdent 2)
 
@@ -1030,11 +1097,7 @@ Only meaningful when called from within `smie-rules-function'."
     ;; FIXME: Rather than consult the number of spaces, we could *set* the
     ;; number of spaces so as to align the separator with the close-paren
     ;; while aligning the content with the rest.
-    (let ((parent-col
-           (save-excursion
-             (goto-char (cadr smie--parent))
-             (if (smie-indent--hanging-p)
-                 (smie-indent-virtual) (current-column))))
+    (let ((parent-col (cdr (smie-rule-parent)))
           (parent-pos-col     ;FIXME: we knew this when computing smie--parent.
            (save-excursion
              (goto-char (cadr smie--parent))
@@ -1083,7 +1146,16 @@ BASE-POS is the position relative to which offsets should be applied."
         (+ offset
            (if (null base-pos) 0
              (goto-char base-pos)
-             (if (smie-indent--hanging-p)
+             ;; Use smie-indent-virtual when indenting relative to an opener:
+             ;; this will also by default use current-column unless
+             ;; that opener is hanging, but will additionally consult
+             ;; rules-function, so it gives it a chance to tweak indentation
+             ;; (e.g. by forcing indentation relative to its own parent, as in
+             ;; fn a => fn b => fn c =>).
+             ;; When parent==nil it doesn't matter because the only case
+             ;; where it's really used is when the base-pos is hanging anyway.
+             (if (or (and parent (null (car parent)))
+                     (smie-indent--hanging-p))
                  (smie-indent-virtual) (current-column)))))
        (t (error "Unknown indentation offset %s" offset))))))
 
@@ -1160,27 +1232,30 @@ in order to figure out the indentation of some other (further down) point."
     (let* ((pos (point))
            (toklevels (smie-indent-forward-token))
            (token (pop toklevels)))
-      (if (null (car toklevels))
-          (save-excursion
-            (goto-char pos)
-            ;; Different cases:
-            ;; - smie-indent--bolp: "indent according to others".
-            ;; - common hanging: "indent according to others".
-            ;; - SML-let hanging: "indent like parent".
-            ;; - if-after-else: "indent-like parent".
-            ;; - middle-of-line: "trust current position".
-            (cond
-             ((null (cdr toklevels)) nil) ;Not a keyword.
-             ((smie-indent--bolp)
-              ;; For an open-paren-like thingy at BOL, always indent only
-              ;; based on other rules (typically smie-indent-after-keyword).
-              nil)
-             ;; We're only ever here for virtual-indent.
-             ((smie-indent--rule :before token))
-             (t
-              ;; By default use point unless we're hanging.
-              (unless (smie-indent--hanging-p) (current-column)))))
-
+      (cond
+       ((< pos (line-beginning-position))
+        ;; The token we just read is actually not on the line where we started.
+        nil)
+       ((not (numberp (car toklevels)))
+        (save-excursion
+          (goto-char pos)
+          ;; Different cases:
+          ;; - smie-indent--bolp: "indent according to others".
+          ;; - common hanging: "indent according to others".
+          ;; - SML-let hanging: "indent like parent".
+          ;; - if-after-else: "indent-like parent".
+          ;; - middle-of-line: "trust current position".
+          (cond
+           ((null (cdr toklevels)) nil) ;Not a keyword.
+           ((smie-indent--rule :before token))
+           ((smie-indent--bolp)         ;I.e. non-virtual indent.
+            ;; For an open-paren-like thingy at BOL, always indent only
+            ;; based on other rules (typically smie-indent-after-keyword).
+            nil)
+           (t
+            ;; By default use point unless we're hanging.
+            (unless (smie-indent--hanging-p) (current-column))))))
+       (t
         ;; FIXME: This still looks too much like black magic!!
         (let* ((parent (smie-backward-sexp 'halfsexp)))
           ;; Different behaviors:
@@ -1260,7 +1335,7 @@ in order to figure out the indentation of some other (further down) point."
               ;; So we use a heuristic here, which is that we only use virtual
               ;; if the parent is tightly linked to the child token (they're
               ;; part of the same BNF rule).
-              (if (car parent) (current-column) (smie-indent-virtual))))))))))
+              (if (car parent) (current-column) (smie-indent-virtual)))))))))))
 
 (defun smie-indent-comment ()
   "Compute indentation of a comment."
@@ -1298,10 +1373,19 @@ in order to figure out the indentation of some other (further down) point."
        comment-end-skip
        (not (looking-at " \t*$"))       ;Not just a \n comment-closer.
        (looking-at comment-end-skip)
-       (nth 4 (syntax-ppss))
-       (save-excursion
-         (goto-char (nth 8 (syntax-ppss)))
-         (current-column))))
+       (let ((end (match-string 0)))
+         (and (nth 4 (syntax-ppss))
+              (save-excursion
+                (goto-char (nth 8 (syntax-ppss)))
+                (and (looking-at comment-start-skip)
+                     (let ((start (match-string 0)))
+                       ;; Align the common substring between starter
+                       ;; and ender, if possible.
+                       (if (string-match "\\(.+\\).*\n\\(.*?\\)\\1"
+                                         (concat start "\n" end))
+                           (+ (current-column) (match-beginning 0)
+                              (- (match-beginning 2) (match-end 2)))
+                         (current-column)))))))))
 
 (defun smie-indent-comment-inside ()
   (and (nth 4 (syntax-ppss))
@@ -1319,11 +1403,11 @@ in order to figure out the indentation of some other (further down) point."
        ;; The default indentation after a keyword/operator is
        ;; 0 for infix, t for prefix, and use another rule
        ;; for postfix.
-       ((null (nth 2 toklevel)) nil)        ;A closer.
-       ((or (null (nth 1 toklevel))         ;An opener.
-            (rassoc tok smie-closer-alist)) ;An inner.
+       ((not (numberp (nth 2 toklevel))) nil)                   ;A closer.
+       ((or (not (numberp (nth 1 toklevel)))                    ;An opener.
+            (rassoc tok smie-closer-alist))                     ;An inner.
         (+ (smie-indent-virtual) (smie-indent--offset 'basic))) ;
-       (t (smie-indent-virtual))))))    ;An infix.
+       (t (smie-indent-virtual))))))                            ;An infix.
 
 (defun smie-indent-exps ()
   ;; Indentation of sequences of simple expressions without
index ca698cab33dd732730f9443ab0844aac118bf6a9..3b130a20d2bcae76909dde50080f0ec328badd5d 100644 (file)
@@ -3224,7 +3224,10 @@ It is safe if any of these conditions are met:
    evaluates to a non-nil value with VAL as an argument."
   (or (member (cons sym val) safe-local-variable-values)
       (let ((safep (get sym 'safe-local-variable)))
-        (and (functionp safep) (funcall safep val)))))
+        (and (functionp safep)
+             ;; If the function signals an error, that means it
+             ;; can't assure us that the value is safe.
+             (with-demoted-errors (funcall safep val))))))
 
 (defun risky-local-variable-p (sym &optional ignored)
   "Non-nil if SYM could be dangerous as a file-local variable.
index 5f76c1bab7fa1a80baced9a6f6dd521129766d06..58ed6685dc2905ecfa3d58f6bb88d2237eca384b 100644 (file)
@@ -103,10 +103,16 @@ update the dependent variables."
           (ls-lisp-set-options)))
   :group 'ls-lisp)
 
+;; Only made an obsolete alias in 23.3.  Before that, the initial
+;; value was set according to:
+;;  (or (memq ls-lisp-emulation '(MS-Windows MacOS))
+;;      (and (boundp 'ls-lisp-dired-ignore-case) ls-lisp-dired-ignore-case))
+;; Which isn't the right thing to do.
+(define-obsolete-variable-alias 'ls-lisp-dired-ignore-case
+  'ls-lisp-ignore-case "21.1")
+
 (defcustom ls-lisp-ignore-case
-  ;; Name change for consistency with other option names.
-  (or (memq ls-lisp-emulation '(MS-Windows MacOS))
-      (and (boundp 'ls-lisp-dired-ignore-case) ls-lisp-dired-ignore-case))
+  (memq ls-lisp-emulation '(MS-Windows MacOS))
   "Non-nil causes ls-lisp alphabetic sorting to ignore case."
   :set-after '(ls-lisp-emulation)
   :type 'boolean
index b9f0011e96fbc86c3fc163edf4f315233ce8022c..9b4a048131e4c86365d74b0dd267a151ec55ab0a 100644 (file)
@@ -1,4 +1,4 @@
-;;; mouse-sel.el --- multi-click selection support for Emacs 19
+;;; mouse-sel.el --- multi-click selection support
 
 ;; Copyright (C) 1993, 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006,
 ;;   2007, 2008, 2009, 2010  Free Software Foundation, Inc.
index c7cbccfa02c6a5c946a635e108d8d876e8c8105f..47b32fcde8ae4354608e7e7f5b2694ac75b99a64 100644 (file)
@@ -1,7 +1,7 @@
 ;;; novice.el --- handling of disabled commands ("novice mode") for Emacs
 
-;; Copyright (C) 1985, 1986, 1987, 1994, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1987, 1994, 2001, 2002, 2003, 2004, 2005,
+;;   2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: internal, help
@@ -110,9 +110,9 @@ SPC to try the command just this once, but leave it disabled.
                 (not (string= "" user-init-file))
                 (y-or-n-p "Enable command for future editing sessions also? "))
          (enable-command cmd)
-       (put cmd 'disabled nil)))
-     (?n nil)
-     (t (call-interactively cmd)))))
+       (put cmd 'disabled nil))))
+    (or (char-equal char ?n)
+        (call-interactively cmd))))
 
 (defun en/disable-command (command disable)
   (unless (commandp command)
@@ -169,5 +169,4 @@ to future sessions."
 
 (provide 'novice)
 
-;; arch-tag: f83c0f96-497e-4db6-a430-8703716c6dd9
 ;;; novice.el ends here
index aacd8d42ae431d26987900c2b38d976c33d840d4..ecbc82e01445a9b172cac4ecd8a58fe6fda8923d 100644 (file)
@@ -3438,12 +3438,7 @@ See `pr-ps-printer-alist'.")
 
 (defun pr-menu-bind ()
   "Install `printing' menu in the menubar.
-
-On Emacs 20, it replaces the Tools/Print menu by Tools/Printing menu.
-
-On Emacs 21 and 22, it replaces the File/Print* menu entries by File/Print
-menu.
-
+This replaces the File/Print* menu entries with a File/Print sub-menu.
 Calls `pr-update-menus' to adjust menus."
   (interactive)
   (pr-global-menubar pr-menu-spec)
@@ -6670,5 +6665,4 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order."
 (provide 'printing)
 
 
-;; arch-tag: 9ce9ac3f-0f60-4370-900b-1943215d9d18
 ;;; printing.el ends here
index a19445f47f5d00409940a3b5726058b67ff1142a..7754dc6c87cdf0ea18277b27761b04d2bf7f7da9 100644 (file)
@@ -2807,7 +2807,7 @@ command is used to switch to an existing process, only when a new
 process is started.  If you use this, you will probably want to ensure
 that the current arguments are retained (they will be included in the
 prompt).  This argument is ignored when this function is called
-programmatically, or when running in Emacs 19.34 or older.
+programmatically.
 
 Note: You can toggle between using the CPython interpreter and the
 JPython interpreter by hitting \\[python-toggle-shells].  This toggles
index ecc9b16cce7e001d3b9a4c86da5ba7cf6fdebf76..e3af82231aeb5711b67bff8987b87f1dc4245ab6 100644 (file)
@@ -609,7 +609,7 @@ server or call `M-x server-force-delete' to forcibly disconnect it.")
 (defun server-force-stop ()
   "Kill all connections to the current server.
 This function is meant to be called from `kill-emacs-hook'."
-  (server-start nil t))
+  (server-start t t))
 
 ;;;###autoload
 (defun server-force-delete (&optional name)
index 55118553fbf21333b8e4f846a3b263cdaaec3428..aa4b9a97182895a13174fc1dcad237fdd72002d7 100644 (file)
@@ -2990,11 +2990,6 @@ If `interprogram-cut-function' is non-nil, apply it to STRING.
 Optional second argument REPLACE non-nil means that STRING will replace
 the front of the kill ring, rather than being added to the list.
 
-Optional third arguments YANK-HANDLER controls how the STRING is later
-inserted into a buffer; see `insert-for-yank' for details.
-When a yank handler is specified, STRING must be non-empty (the yank
-handler, if non-nil, is stored as a `yank-handler' text property on STRING).
-
 When `save-interprogram-paste-before-kill' and `interprogram-paste-function'
 are non-nil, saves the interprogram paste string(s) into `kill-ring' before
 STRING.
@@ -3034,22 +3029,19 @@ argument should still be a \"useful\" string for such uses."
   (setq kill-ring-yank-pointer kill-ring)
   (if interprogram-cut-function
       (funcall interprogram-cut-function string)))
+(set-advertised-calling-convention
+ 'kill-new '(string &optional replace) "23.3")
 
 (defun kill-append (string before-p &optional yank-handler)
   "Append STRING to the end of the latest kill in the kill ring.
 If BEFORE-P is non-nil, prepend STRING to the kill.
-Optional third argument YANK-HANDLER, if non-nil, specifies the
-yank-handler text property to be set on the combined kill ring
-string.  If the specified yank-handler arg differs from the
-yank-handler property of the latest kill string, this function
-adds the combined string to the kill ring as a new element,
-instead of replacing the last kill with it.
 If `interprogram-cut-function' is set, pass the resulting kill to it."
   (let* ((cur (car kill-ring)))
     (kill-new (if before-p (concat string cur) (concat cur string))
              (or (= (length cur) 0)
                  (equal yank-handler (get-text-property 0 'yank-handler cur)))
              yank-handler)))
+(set-advertised-calling-convention 'kill-append '(string before-p) "23.3")
 
 (defcustom yank-pop-change-selection nil
   "If non-nil, rotating the kill ring changes the window system selection."
@@ -3130,11 +3122,7 @@ Supply two arguments, character positions indicating the stretch of text
 Any command that calls this function is a \"kill command\".
 If the previous command was also a kill command,
 the text killed this time appends to the text killed last time
-to make one entry in the kill ring.
-
-In Lisp code, optional third arg YANK-HANDLER, if non-nil,
-specifies the yank-handler text property to be set on the killed
-text.  See `insert-for-yank'."
+to make one entry in the kill ring."
   ;; Pass point first, then mark, because the order matters
   ;; when calling kill-append.
   (interactive (list (point) (mark)))
@@ -3166,6 +3154,7 @@ text.  See `insert-for-yank'."
        (barf-if-buffer-read-only)
        ;; If the buffer isn't read-only, the text is.
        (signal 'text-read-only (list (current-buffer)))))))
+(set-advertised-calling-convention 'kill-region '(beg end) "23.3")
 
 ;; copy-region-as-kill no longer sets this-command, because it's confusing
 ;; to get two copies of the text when the user accidentally types M-w and
index f3b7531ba2414a37d8607ef9a428e66d6ba929dc..7413f73ee5077cfe53b5e3692afd7996b00d7f04 100644 (file)
@@ -1692,8 +1692,7 @@ variable `speedbar-obj-alist'."
     (speedbar-enable-update)))
 
 (defun speedbar-toggle-images ()
-  "Toggle use of images in the speedbar frame.
-Images are not available in Emacs 20 or earlier."
+  "Toggle use of images in the speedbar frame."
   (interactive)
   (setq speedbar-use-images (not speedbar-use-images))
   (speedbar-refresh))
index c9300ad9711b3776f071fc78e8a907d1e7ea49f5..70d8b76faa510b9f56768a297afdacb3e30e5457 100644 (file)
@@ -954,7 +954,8 @@ and `event-end' functions."
              ((null spacing)
               (setq spacing 0)))
        (cons (/ (car pair) (frame-char-width frame))
-             (/ (cdr pair) (+ (frame-char-height frame) spacing))))))))
+             (- (/ (cdr pair) (+ (frame-char-height frame) spacing))
+                (if (null header-line-format) 0 1))))))))
 
 (defun posn-actual-col-row (position)
   "Return the actual column and row in POSITION, measured in characters.
index 961be29cc86ffe9c79327efa20cf619f1709c1ad..98add4cfd28181e1c39cd4dd531bda6723d34ea3 100644 (file)
@@ -226,16 +226,30 @@ Do \\[command-apropos]  picture-movement  to see commands which control motion."
   (picture-motion (- arg)))
 
 (defun picture-mouse-set-point (event)
-  "Move point to the position clicked on, making whitespace if necessary."
+  "Move point to the position of EVENT, making whitespace if necessary."
   (interactive "e")
-  (let* ((pos (posn-col-row (event-start event)))
-        (x (car pos))
-        (y (cdr pos))
-        (current-row (count-lines (window-start) (line-beginning-position))))
-    (unless (equal x (current-column))
-      (picture-forward-column (- x (current-column))))
-    (unless (equal y current-row)
-      (picture-move-down (- y current-row)))))
+  (let ((position (event-start event)))
+    (unless (posn-area position) ; Ignore EVENT unless in text area
+      (let* ((window (posn-window position))
+            (frame  (if (framep window) window (window-frame window)))
+            (pair   (posn-x-y position))
+            (start-pos (window-start window))
+            (start-pair (posn-x-y (posn-at-point start-pos)))
+            (dx (- (car pair) (car start-pair)))
+            (dy (- (cdr pair) (cdr start-pair)))
+            (char-ht (frame-char-height frame))
+            (spacing (when (display-graphic-p frame)
+                       (or (with-current-buffer (window-buffer window)
+                             line-spacing)
+                           (frame-parameter frame 'line-spacing))))
+            rows cols)
+       (cond ((floatp spacing)
+              (setq spacing (truncate (* spacing char-ht))))
+             ((null spacing)
+              (setq spacing 0)))
+       (goto-char start-pos)
+       (picture-move-down      (/ dy (+ char-ht spacing)))
+       (picture-forward-column (/ dx (frame-char-width frame)))))))
 
 \f
 ;; Picture insertion and deletion.
index 689cd4d12bd35efd84c49ef4ef6dbaa0273d9e45..2a2879aadb875da990837b43c985ee1c65c011dc 100644 (file)
@@ -134,6 +134,10 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
   :version "23.1"
   :group 'vc)
 
+(defcustom vc-hg-program "hg"
+  "Name of the Mercurial executable (excluding any arguments)."
+  :type 'string
+  :group 'vc)
 \f
 ;;; Properties of the backend
 
@@ -174,7 +178,7 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
                             (append (list "TERM=dumb" "LANGUAGE=C")
                                     process-environment)))
                        (process-file
-                        "hg" nil t nil
+                        vc-hg-program nil t nil
                         "--config" "alias.status=status"
                         "--config" "defaults.status="
                         "status" "-A" (file-relative-name file)))
@@ -212,7 +216,7 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
                      (let ((process-environment avoid-local-env))
                        ;; Ignore all errors.
                        (process-file
-                        "hg" nil t nil
+                        vc-hg-program nil t nil
                         "--config" "alias.parents=parents"
                         "--config" "defaults.parents="
                         "parents" "--template" "{rev}" (file-relative-name file)))
@@ -227,7 +231,7 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
            (condition-case nil
                (let ((process-environment avoid-local-env))
                  (process-file
-                  "hg" nil nil nil
+                  vc-hg-program nil nil nil
                   ;; We use "log" here, if there's a faster command
                   ;; that returns true for an 'added file and false
                   ;; for an 'unregistered one, we could use that.
@@ -620,7 +624,7 @@ REV is the revision to check out into WORKFILE."
   "A wrapper around `vc-do-command' for use in vc-hg.el.
 The difference to vc-do-command is that this function always invokes `hg',
 and that it passes `vc-hg-global-switches' to it before FLAGS."
-  (apply 'vc-do-command (or buffer "*vc*") okstatus "hg" file-or-list
+  (apply 'vc-do-command (or buffer "*vc*") okstatus vc-hg-program file-or-list
          (if (stringp vc-hg-global-switches)
              (cons vc-hg-global-switches flags)
            (append vc-hg-global-switches
index e905e8f2a87fa68b0ffdbd4b349d0add9be2101c..9c7de61d7cdc39bd80792755a2bcf39d838a0d9a 100644 (file)
@@ -316,9 +316,8 @@ size field.")
 
 (defvar widget-field-use-before-change t
   "Non-nil means use `before-change-functions' to track editable fields.
-This enables the use of undo, but doesn't work on Emacs 19.34 and earlier.
-Using before hooks also means that the :notify function can't know the
-new value.")
+This enables the use of undo.  Using before hooks also means that
+the :notify function can't know the new value.")
 
 (defun widget-specify-field (widget from to)
   "Specify editable button for WIDGET between FROM and TO."
@@ -1053,7 +1052,7 @@ POS defaults to the value of (point)."
 
 (defvar widget-use-overlay-change t
   "If non-nil, use overlay change functions to tab around in the buffer.
-This is much faster, but doesn't work reliably on Emacs 19.34.")
+This is much faster.")
 
 (defun widget-move (arg)
   "Move point to the ARG next field or button.
@@ -3782,5 +3781,4 @@ example:
 
 (provide 'wid-edit)
 
-;; arch-tag: a076e75e-18a1-4b46-8be5-3f317bcbc707
 ;;; wid-edit.el ends here
index 357cc8d0a8ed45ca81dd484447d287f2b90a1671..a000b21ade45ee368499da092b9089a7a08e825a 100644 (file)
   since v1.3.3, include the MinGW headers and libraries as an integral
   part).
 
-  Note that building Emacs with Visual Studio 2005 (VC++ 8.0) is not
-  supported at this time, due to changes introduced by Microsoft into
-  the libraries shipped with the compiler.
+  Note that building Emacs with Visual Studio 2005 (VC++ 8.0) and
+  later is not supported at this time, due to changes introduced by
+  Microsoft into the libraries shipped with the compiler.
 
   The rest of this file assumes you have a working development
   environment.  If you just installed  such an environment, try
index 43a38c6a7280a458bdc6e587bde8f9c822d2938b..70e646e343d529bd5c4f23b4ecf6833c31a0ed16 100644 (file)
@@ -1,3 +1,24 @@
+2010-11-18  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xsettings.c (init_gconf): Check HAVE_G_TYPE_INIT.
+
+       * config.in (HAVE_G_TYPE_INIT): New symbol.
+
+2010-11-18  Eli Zaretskii  <eliz@gnu.org>
+
+       * lread.c (Fload): Mention `load-in-progress' and
+       `load-file-name'.  (Bug#7346)
+
+       * keyboard.c (kbd_buffer_nr_stored): Define only ifdef subprocesses.
+       (kbd_buffer_store_event_hold, kbd_buffer_get_event)
+       (tty_read_avail_input): Call kbd_buffer_nr_stored only ifdef
+       subprocesses.  Use buffer_free only ifdef subprocesses.
+
+       * process.c (init_process) [subprocesses]: Init kbd_is_on_hold in
+       the subprocesses version, not in the non-subprocesses one.
+
+       * Makefile.in: Don't use ## comment, it breaks the MSDOS build.
+
 2010-11-17  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (set_cursor_from_row): Fix cursor positioning in empty
index 8ccda9723952278d98662bd15575e12a19b055bf..8d254cefff5b4941cd871e3e9a4b4a43daf5ebc5 100644 (file)
@@ -294,6 +294,9 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if you have the `gtk_widget_set_has_window' function. */
 #undef HAVE_GTK_WIDGET_SET_HAS_WINDOW
 
+/* Define to 1 if you have the `g_type_init' function. */
+#undef HAVE_G_TYPE_INIT
+
 /* Define to 1 if netdb.h declares h_errno. */
 #undef HAVE_H_ERRNO
 
index d048404e856abd03866ec1b21ed929725d317528..0a6831750de6f2e09e66995cf7e3a39a6e0d4f63 100644 (file)
@@ -3601,6 +3601,7 @@ event_to_kboard (struct input_event *event)
     return FRAME_KBOARD (XFRAME (frame));
 }
 
+#ifdef subprocesses
 /* Return the number of slots occupied in kbd_buffer.  */
 
 static int
@@ -3613,6 +3614,7 @@ kbd_buffer_nr_stored (void)
        : ((kbd_buffer + KBD_BUFFER_SIZE) - kbd_fetch_ptr
           + (kbd_store_ptr - kbd_buffer)));
 }
+#endif /* subprocesses */
 
 Lisp_Object Vthrow_on_input;
 
@@ -3734,6 +3736,7 @@ kbd_buffer_store_event_hold (register struct input_event *event,
     {
       *kbd_store_ptr = *event;
       ++kbd_store_ptr;
+#ifdef subprocesses
       if (kbd_buffer_nr_stored () > KBD_BUFFER_SIZE/2 && ! kbd_on_hold_p ())
         {
           /* Don't read keyboard input until we have processed kbd_buffer.
@@ -3745,6 +3748,7 @@ kbd_buffer_store_event_hold (register struct input_event *event,
 #endif
           stop_polling ();
         }
+#endif /* subprocesses */
     }
 
   /* If we're inside while-no-input, and this event qualifies
@@ -3905,6 +3909,7 @@ kbd_buffer_get_event (KBOARD **kbp,
   register int c;
   Lisp_Object obj;
 
+#ifdef subprocesses
   if (kbd_on_hold_p () && kbd_buffer_nr_stored () < KBD_BUFFER_SIZE/4)
     {
       /* Start reading input again, we have processed enough so we can
@@ -3916,6 +3921,7 @@ kbd_buffer_get_event (KBOARD **kbp,
 #endif /* SIGIO */
       start_polling ();
     }
+#endif /* subprocesses */
 
   if (noninteractive
       /* In case we are running as a daemon, only do this before
@@ -7058,10 +7064,12 @@ tty_read_avail_input (struct terminal *terminal,
   int n_to_read, i;
   struct tty_display_info *tty = terminal->display_info.tty;
   int nread = 0;
+#ifdef subprocesses
   int buffer_free = KBD_BUFFER_SIZE - kbd_buffer_nr_stored () - 1;
 
   if (kbd_on_hold_p () || buffer_free <= 0)
     return 0;
+#endif /* subprocesses */
 
   if (!terminal->name)         /* Don't read from a dead terminal. */
     return 0;
@@ -7143,9 +7151,11 @@ tty_read_avail_input (struct terminal *terminal,
 #endif
 #endif
 
+#ifdef subprocesses
   /* Don't read more than we can store.  */
   if (n_to_read > buffer_free)
     n_to_read = buffer_free;
+#endif /* subprocesses */
 
   /* Now read; for one reason or another, this will not block.
      NREAD is set to the number of chars read.  */
index f1c1bcd44c0630a3b50295a0f47b9a95084e9b5d..945808c6e5aa1250f9ecae4c689af99d41ab97db 100644 (file)
@@ -966,6 +966,10 @@ Loading a file records its definitions, and its `provide' and
 `require' calls, in an element of `load-history' whose
 car is the file name loaded.  See `load-history'.
 
+While the file is in the process of being loaded, the variable
+`load-in-progress' is non-nil and the variable `load-file-name'
+is bound to the file's name.
+
 Return t if the file exists and loads successfully.  */)
   (Lisp_Object file, Lisp_Object noerror, Lisp_Object nomessage, Lisp_Object nosuffix, Lisp_Object must_suffix)
 {
index b3f3cb61541f1d4ff0713ad0572e16f57ba05876..83ca87ed0bd3df00d847a72c4433a3a4f1696b13 100644 (file)
@@ -627,7 +627,9 @@ init_gconf (void)
 #if defined (HAVE_GCONF) && defined (HAVE_XFT)
   char *s;
 
+#ifdef HAVE_G_TYPE_INIT
   g_type_init ();
+#endif
   gconf_client = gconf_client_get_default ();
   s = gconf_client_get_string (gconf_client, SYSTEM_MONO_FONT, NULL);
   if (s)