mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-27 07:41:28 -08:00
merge trunk
This commit is contained in:
commit
dcbd9236f7
10 changed files with 125 additions and 51 deletions
11
ChangeLog
11
ChangeLog
|
|
@ -1,3 +1,14 @@
|
|||
2012-09-14 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* configure.ac (--without-sync-input): Fix typo in usage message.
|
||||
|
||||
* configure.ac: Port to hosts lacking gtk.
|
||||
(PKG_CHECK_MODULES): Capture pkg-config diagnostics
|
||||
better, in particular, problems in invoking pkg-config itself.
|
||||
This is useful on hosts that don't have pkg-config.
|
||||
(GTK_MODULES): Do not exit 'configure' simply because gtk3
|
||||
and gtk2 are both missing. Problem found on Solaris 8.
|
||||
|
||||
2012-09-13 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* configure.ac: Reorder Xaw3d messages.
|
||||
|
|
|
|||
17
configure.ac
17
configure.ac
|
|
@ -128,7 +128,7 @@ AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
|
|||
|
||||
OPTION_DEFAULT_ON([sound],[don't compile with sound support])
|
||||
|
||||
OPTION_DEFAULT_ON([sync-input],[process async input synchronously])
|
||||
OPTION_DEFAULT_ON([sync-input],[don't process async input synchronously])
|
||||
if test "$with_sync_input" = yes; then
|
||||
AC_DEFINE(SYNC_INPUT, 1, [Process async input synchronously.])
|
||||
fi
|
||||
|
|
@ -1189,9 +1189,10 @@ AC_DEFUN([PKG_CHECK_MODULES], [
|
|||
$1_CFLAGS=""
|
||||
$1_LIBS=""
|
||||
## If we have a custom action on failure, don't print errors, but
|
||||
## do set a variable so people can do so.
|
||||
$1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
|
||||
ifelse([$4], ,echo $$1_PKG_ERRORS,)
|
||||
## do set a variable so people can do so. Do it in a subshell
|
||||
## to capture any diagnostics in invoking pkg-config.
|
||||
$1_PKG_ERRORS=`($PKG_CONFIG --print-errors "$2") 2>&1`
|
||||
ifelse([$4], ,echo "$$1_PKG_ERRORS",)
|
||||
fi
|
||||
|
||||
AC_SUBST($1_CFLAGS)
|
||||
|
|
@ -1934,10 +1935,10 @@ if test "${with_gtk2}" = "yes" || test "$check_gtk2" = "yes"; then
|
|||
|
||||
dnl Checks for libraries.
|
||||
PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
|
||||
if test "$pkg_check_gtk" = "no"; then
|
||||
if test "$USE_X_TOOLKIT" = "maybe" || test "$with_gtk" = "yes" || test "$with_gtk2" = "yes"; then
|
||||
AC_MSG_ERROR($gtk3_pkg_errors$GTK_PKG_ERRORS)
|
||||
fi
|
||||
if test "$pkg_check_gtk" = "no" &&
|
||||
{ test "$with_gtk" = yes || test "$with_gtk2" = "yes"; }
|
||||
then
|
||||
AC_MSG_ERROR($gtk3_pkg_errors$GTK_PKG_ERRORS)
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,25 @@
|
|||
2012-09-15 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* vc/vc-bzr.el (vc-bzr-working-revision): For lightweight local
|
||||
checkouts, check the parent dirstate matches the branch.
|
||||
Add "--tree" to "bzr revno" arguments. Don't try to shorten the
|
||||
empty string.
|
||||
|
||||
* version.el (emacs-bzr-version): Doc fix.
|
||||
(emacs-bzr-version-dirstate): New function.
|
||||
(emacs-bzr-get-version): For lightweight checkouts, if the parent
|
||||
is local try and check that it matches the branch. If not, just
|
||||
use dirstate information. (Bug#12441)
|
||||
|
||||
2012-09-14 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* dired-aux.el (dired-do-chmod): Use `eq' to detect empty input.
|
||||
(Bug#12399)
|
||||
|
||||
2012-09-14 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* emacs-lisp/advice.el (ad-prognify): Remove, use macroexp-progn.
|
||||
|
||||
* emacs-lisp/edebug.el: Miscellaneous cleanup.
|
||||
Remove obsolete byte-compiler hack that tried to silence some warnings.
|
||||
(edebug-submit-bug-report): Remove.
|
||||
|
|
|
|||
|
|
@ -281,7 +281,10 @@ Symbolic modes like `g+w' are allowed."
|
|||
"Change mode of %s to: "
|
||||
nil 'chmod arg files default))
|
||||
num-modes)
|
||||
(cond ((equal modes "")
|
||||
(cond ((or (equal modes "")
|
||||
;; Use `eq' instead of `equal'
|
||||
;; to detect empty input (bug#12399).
|
||||
(eq modes default))
|
||||
;; We used to treat empty input as DEFAULT, but that is not
|
||||
;; such a good idea (Bug#9361).
|
||||
(error "No file mode specified"))
|
||||
|
|
|
|||
|
|
@ -1746,6 +1746,7 @@
|
|||
(provide 'advice-preload)
|
||||
;; During a normal load this is a noop:
|
||||
(require 'advice-preload "advice.el")
|
||||
(require 'macroexp)
|
||||
(eval-when-compile (require 'cl-lib))
|
||||
|
||||
;; @@ Variable definitions:
|
||||
|
|
@ -2538,11 +2539,6 @@ For that it has to be fbound with a non-autoload definition."
|
|||
(byte-compile symbol)
|
||||
(fset function (symbol-function symbol))))))
|
||||
|
||||
(defun ad-prognify (forms)
|
||||
(cond ((<= (length forms) 1)
|
||||
(car forms))
|
||||
(t (cons 'progn forms))))
|
||||
|
||||
;; @@@ Accessing argument lists:
|
||||
;; =============================
|
||||
|
||||
|
|
@ -2954,7 +2950,7 @@ should be modified. The assembled function will be returned."
|
|||
before-forms)
|
||||
(setq before-forms
|
||||
`((unwind-protect
|
||||
,(ad-prognify before-forms)
|
||||
,(macroexp-progn before-forms)
|
||||
,@(ad-body-forms
|
||||
(ad-advice-definition advice))))))
|
||||
(t (setq before-forms
|
||||
|
|
@ -2971,12 +2967,12 @@ should be modified. The assembled function will be returned."
|
|||
(ad-substitute-tree
|
||||
(function (lambda (form) (eq form 'ad-do-it)))
|
||||
(function (lambda (form) around-form))
|
||||
(ad-prognify (ad-body-forms (ad-advice-definition advice))))))
|
||||
(macroexp-progn (ad-body-forms (ad-advice-definition advice))))))
|
||||
|
||||
(setq after-forms
|
||||
(if (and around-form-protected before-forms)
|
||||
`((unwind-protect
|
||||
,(ad-prognify before-forms)
|
||||
,(macroexp-progn before-forms)
|
||||
,around-form))
|
||||
(append before-forms (list around-form))))
|
||||
(dolist (advice afters)
|
||||
|
|
@ -2984,7 +2980,7 @@ should be modified. The assembled function will be returned."
|
|||
after-forms)
|
||||
(setq after-forms
|
||||
`((unwind-protect
|
||||
,(ad-prognify after-forms)
|
||||
,(macroexp-progn after-forms)
|
||||
,@(ad-body-forms
|
||||
(ad-advice-definition advice))))))
|
||||
(t (setq after-forms
|
||||
|
|
@ -3013,7 +3009,7 @@ should be modified. The assembled function will be returned."
|
|||
(ad-body-forms (ad-advice-definition advice))))
|
||||
(ad-get-enabled-advices function hook-name))))
|
||||
(if hook-forms
|
||||
(ad-prognify (apply 'append hook-forms)))))
|
||||
(macroexp-progn (apply 'append hook-forms)))))
|
||||
|
||||
|
||||
;; @@ Caching:
|
||||
|
|
|
|||
|
|
@ -534,7 +534,9 @@ in the branch repository (or whose status not be determined)."
|
|||
;; FIXME: maybe it's overkill to check if both these
|
||||
;; files exist.
|
||||
(and (file-exists-p branch-format-file)
|
||||
(file-exists-p lastrev-file)))))
|
||||
(file-exists-p lastrev-file)
|
||||
(equal (emacs-bzr-version-dirstate l-c-parent-dir)
|
||||
(emacs-bzr-version-dirstate rootdir))))))
|
||||
t)))
|
||||
(with-temp-buffer
|
||||
(insert-file-contents branch-format-file)
|
||||
|
|
@ -553,13 +555,17 @@ in the branch repository (or whose status not be determined)."
|
|||
(insert-file-contents lastrev-file)
|
||||
(when (re-search-forward "[0-9]+" nil t)
|
||||
(buffer-substring (match-beginning 0) (match-end 0))))))
|
||||
;; fallback to calling "bzr revno"
|
||||
;; Fallback to calling "bzr revno --tree".
|
||||
;; The "--tree" matters for lightweight checkouts not on the same
|
||||
;; revision as the parent.
|
||||
(let* ((result (vc-bzr-command-discarding-stderr
|
||||
vc-bzr-program "revno" (file-relative-name file)))
|
||||
vc-bzr-program "revno" "--tree"
|
||||
(file-relative-name file)))
|
||||
(exitcode (car result))
|
||||
(output (cdr result)))
|
||||
(cond
|
||||
((eq exitcode 0) (substring output 0 -1))
|
||||
((and (eq exitcode 0) (not (zerop (length output))))
|
||||
(substring output 0 -1))
|
||||
(t nil))))))
|
||||
|
||||
(defun vc-bzr-create-repo ()
|
||||
|
|
|
|||
|
|
@ -87,23 +87,36 @@ to the system configuration; look at `system-configuration' instead."
|
|||
;; Set during dumping, this is a defvar so that it can be setq'd.
|
||||
(defvar emacs-bzr-version nil
|
||||
"String giving the bzr revision from which this Emacs was built.
|
||||
Value is the bzr revision number and a revision ID separated by a blank.
|
||||
The format is: [revno] revision_id, where revno may be absent.
|
||||
Value is nil if Emacs was not built from a bzr checkout, or if we could
|
||||
not determine the revision.")
|
||||
|
||||
(defun emacs-bzr-version-dirstate (dir)
|
||||
"Try to return as a string the bzr revision ID of directory DIR.
|
||||
This uses the dirstate file's parent revision entry.
|
||||
Returns nil if unable to find this information."
|
||||
(let ((file (expand-file-name ".bzr/checkout/dirstate" dir)))
|
||||
(when (file-readable-p file)
|
||||
(with-temp-buffer
|
||||
(insert-file-contents file)
|
||||
(and (looking-at "#bazaar dirstate flat format 3")
|
||||
(forward-line 3)
|
||||
(looking-at "[0-9]+\0\\([^\0\n]+\\)\0")
|
||||
(match-string 1))))))
|
||||
|
||||
(defun emacs-bzr-get-version (&optional dir)
|
||||
"Try to return as a string the bzr revision number of the Emacs sources.
|
||||
Value is the bzr revision number and a revision ID separated by a blank.
|
||||
"Try to return as a string the bzr revision of the Emacs sources.
|
||||
The format is: [revno] revision_id, where revno may be absent.
|
||||
Value is nil if the sources do not seem to be under bzr, or if we could
|
||||
not determine the revision. Note that this reports on the current state
|
||||
of the sources, which may not correspond to the running Emacs.
|
||||
|
||||
Optional argument DIR is a directory to use instead of `source-directory'."
|
||||
(or dir (setq dir source-directory))
|
||||
(when (file-directory-p (setq dir (expand-file-name ".bzr/branch" dir)))
|
||||
(let (file loc)
|
||||
(when (file-directory-p (expand-file-name ".bzr/branch" dir))
|
||||
(let (file loc rev)
|
||||
(cond ((file-readable-p
|
||||
(setq file (expand-file-name "last-revision" dir)))
|
||||
(setq file (expand-file-name ".bzr/branch/last-revision" dir)))
|
||||
(with-temp-buffer
|
||||
(insert-file-contents file)
|
||||
(goto-char (point-max))
|
||||
|
|
@ -112,14 +125,26 @@ Optional argument DIR is a directory to use instead of `source-directory'."
|
|||
(buffer-string)))
|
||||
;; OK, no last-revision. Is it a lightweight checkout?
|
||||
((file-readable-p
|
||||
(setq file (expand-file-name "location" dir)))
|
||||
;; If the parent branch is local, try looking there for the revid.
|
||||
(if (setq loc (with-temp-buffer
|
||||
(setq file (expand-file-name ".bzr/branch/location" dir)))
|
||||
(setq rev (emacs-bzr-version-dirstate dir))
|
||||
;; If the parent branch is local, try looking there for the rev.
|
||||
;; Note: there is no guarantee that the parent branch's rev
|
||||
;; corresponds to this branch. This branch could have
|
||||
;; been made with a specific -r revno argument, or the
|
||||
;; parent could have been updated since this branch was created.
|
||||
;; To try and detect this, we check the dirstate revids
|
||||
;; to see if they match.
|
||||
(if (and (setq loc (with-temp-buffer
|
||||
(insert-file-contents file)
|
||||
(if (looking-at "file://\\(.*\\)")
|
||||
(match-string 1))))
|
||||
(emacs-bzr-get-version loc)))
|
||||
;; Could fall back to eg `bzr testament' at this point.
|
||||
(equal rev (emacs-bzr-version-dirstate loc)))
|
||||
(emacs-bzr-get-version loc)
|
||||
;; If parent does not match, the best we can do without
|
||||
;; calling external commands is to use the dirstate rev.
|
||||
rev))
|
||||
;; At this point, could fall back to:
|
||||
;; bzr version-info --custom --template='{revno} {revision_id}\n'
|
||||
))))
|
||||
|
||||
;; We put version info into the executable in the form that `ident' uses.
|
||||
|
|
|
|||
|
|
@ -3,6 +3,19 @@
|
|||
* font.c (Ffont_shape_gstring): Don't adjust grapheme cluster
|
||||
here, but just check the validity of glyphs in the glyph-string.
|
||||
|
||||
2012-09-14 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* alloc.c [!SYSTEM_MALLOC && !SYNC_INPUT && HAVE_PTHREAD]:
|
||||
Include "syssignal.h", for 'main_thread'.
|
||||
|
||||
2012-09-14 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
Avoid out-of-range marker position (Bug#12426).
|
||||
* insdel.c (replace_range, replace_range_2): Adjust
|
||||
markers before overlays, as suggested by comments.
|
||||
(insert_1_both, insert_from_buffer_1, adjust_after_replace):
|
||||
Remove redundant check before calling offset_intervals.
|
||||
|
||||
2012-09-14 Martin Rudalics <rudalics@gmx.at>
|
||||
|
||||
* xdisp.c (Fformat_mode_line): Unconditionally save/restore
|
||||
|
|
|
|||
|
|
@ -100,6 +100,8 @@ extern void _free_internal (void *);
|
|||
#if ! defined SYSTEM_MALLOC && ! defined SYNC_INPUT
|
||||
#ifdef HAVE_PTHREAD
|
||||
|
||||
# include "syssignal.h"
|
||||
|
||||
/* When GTK uses the file chooser dialog, different backends can be loaded
|
||||
dynamically. One such a backend is the Gnome VFS backend that gets loaded
|
||||
if you run Gnome. That backend creates several threads and also allocates
|
||||
|
|
|
|||
31
src/insdel.c
31
src/insdel.c
|
|
@ -840,8 +840,7 @@ insert_1_both (const char *string,
|
|||
PT + nchars, PT_BYTE + nbytes,
|
||||
before_markers);
|
||||
|
||||
if (buffer_intervals (current_buffer))
|
||||
offset_intervals (current_buffer, PT, nchars);
|
||||
offset_intervals (current_buffer, PT, nchars);
|
||||
|
||||
if (!inherit && buffer_intervals (current_buffer))
|
||||
set_text_properties (make_number (PT), make_number (PT + nchars),
|
||||
|
|
@ -1153,8 +1152,7 @@ insert_from_buffer_1 (struct buffer *buf,
|
|||
PT_BYTE + outgoing_nbytes,
|
||||
0);
|
||||
|
||||
if (buffer_intervals (current_buffer))
|
||||
offset_intervals (current_buffer, PT, nchars);
|
||||
offset_intervals (current_buffer, PT, nchars);
|
||||
|
||||
/* Get the intervals for the part of the string we are inserting. */
|
||||
intervals = buffer_intervals (buf);
|
||||
|
|
@ -1222,8 +1220,7 @@ adjust_after_replace (ptrdiff_t from, ptrdiff_t from_byte,
|
|||
else if (len < nchars_del)
|
||||
adjust_overlays_for_delete (from, nchars_del - len);
|
||||
|
||||
if (buffer_intervals (current_buffer))
|
||||
offset_intervals (current_buffer, from, len - nchars_del);
|
||||
offset_intervals (current_buffer, from, len - nchars_del);
|
||||
|
||||
if (from < PT)
|
||||
adjust_point (len - nchars_del, len_byte - nbytes_del);
|
||||
|
|
@ -1394,16 +1391,16 @@ replace_range (ptrdiff_t from, ptrdiff_t to, Lisp_Object new,
|
|||
|
||||
eassert (GPT <= GPT_BYTE);
|
||||
|
||||
/* Adjust the overlay center as needed. This must be done after
|
||||
adjusting the markers that bound the overlays. */
|
||||
adjust_overlays_for_delete (from, nchars_del);
|
||||
adjust_overlays_for_insert (from, inschars);
|
||||
|
||||
/* Adjust markers for the deletion and the insertion. */
|
||||
if (markers)
|
||||
adjust_markers_for_replace (from, from_byte, nchars_del, nbytes_del,
|
||||
inschars, outgoing_insbytes);
|
||||
|
||||
/* Adjust the overlay center as needed. This must be done after
|
||||
adjusting the markers that bound the overlays. */
|
||||
adjust_overlays_for_delete (from, nchars_del);
|
||||
adjust_overlays_for_insert (from, inschars);
|
||||
|
||||
offset_intervals (current_buffer, from, inschars - nchars_del);
|
||||
|
||||
/* Get the intervals for the part of the string we are inserting--
|
||||
|
|
@ -1510,6 +1507,12 @@ replace_range_2 (ptrdiff_t from, ptrdiff_t from_byte,
|
|||
|
||||
eassert (GPT <= GPT_BYTE);
|
||||
|
||||
/* Adjust markers for the deletion and the insertion. */
|
||||
if (markers
|
||||
&& ! (nchars_del == 1 && inschars == 1 && nbytes_del == insbytes))
|
||||
adjust_markers_for_replace (from, from_byte, nchars_del, nbytes_del,
|
||||
inschars, insbytes);
|
||||
|
||||
/* Adjust the overlay center as needed. This must be done after
|
||||
adjusting the markers that bound the overlays. */
|
||||
if (nchars_del != inschars)
|
||||
|
|
@ -1518,12 +1521,6 @@ replace_range_2 (ptrdiff_t from, ptrdiff_t from_byte,
|
|||
adjust_overlays_for_delete (from + inschars, nchars_del);
|
||||
}
|
||||
|
||||
/* Adjust markers for the deletion and the insertion. */
|
||||
if (markers
|
||||
&& ! (nchars_del == 1 && inschars == 1 && nbytes_del == insbytes))
|
||||
adjust_markers_for_replace (from, from_byte, nchars_del, nbytes_del,
|
||||
inschars, insbytes);
|
||||
|
||||
offset_intervals (current_buffer, from, inschars - nchars_del);
|
||||
|
||||
/* Relocate point as if it were a marker. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue