aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Verona2013-08-15 19:32:02 +0200
committerJoakim Verona2013-08-15 19:32:02 +0200
commit0139d01ea2cca819089cb0264c0391a72180f556 (patch)
tree3082795783a32ef6a031c30bdbcc6571ea9da457
parentdd2ec20a745d3c3436b5ca842e2c0b5bf8c7e26f (diff)
parent6f94cbbcb5cefde19de8fff03834f3c8cb5f6e6d (diff)
downloademacs-0139d01ea2cca819089cb0264c0391a72180f556.tar.gz
emacs-0139d01ea2cca819089cb0264c0391a72180f556.zip
merge from trunk
-rw-r--r--lisp/ChangeLog11
-rw-r--r--lisp/emacs-lisp/debug.el81
-rw-r--r--src/ChangeLog5
-rw-r--r--src/image.c12
4 files changed, 65 insertions, 44 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index bcab8de10a4..9119b34d52c 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
12013-08-15 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * emacs-lisp/debug.el (debugger-setup-buffer): Put point on the
4 previous line (bug#15101).
5 (debugger-eval-expression, debugger-record-expression):
6 Use read--expression (bug#15102).
7
12013-08-15 Michael Albinus <michael.albinus@gmx.de> 82013-08-15 Michael Albinus <michael.albinus@gmx.de>
2 9
3 Remove byte compiler warnings, visible when compiling with 10 Remove byte compiler warnings, visible when compiling with
@@ -20,8 +27,8 @@
20 (tramp-flush-connection-property, tramp-list-connections) 27 (tramp-flush-connection-property, tramp-list-connections)
21 (tramp-parse-connection-properties): Prefix unused arguments with "_". 28 (tramp-parse-connection-properties): Prefix unused arguments with "_".
22 29
23 * net/tramp-compat.el (tramp-compat-make-temp-file): Rename 30 * net/tramp-compat.el (tramp-compat-make-temp-file):
24 FILENAME to F. 31 Rename FILENAME to F.
25 32
26 * net/tramp-gvfs.el (tramp-gvfs-handle-file-notify-add-watch) 33 * net/tramp-gvfs.el (tramp-gvfs-handle-file-notify-add-watch)
27 (tramp-gvfs-handle-write-region, tramp-bluez-parse-device-names) 34 (tramp-gvfs-handle-write-region, tramp-bluez-parse-device-names)
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index aee48eef668..709a094e73b 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -288,33 +288,41 @@ That buffer should be current already."
288 (insert "Debugger entered") 288 (insert "Debugger entered")
289 ;; lambda is for debug-on-call when a function call is next. 289 ;; lambda is for debug-on-call when a function call is next.
290 ;; debug is for debug-on-entry function called. 290 ;; debug is for debug-on-entry function called.
291 (pcase (car args) 291 (let ((pos (point)))
292 ((or `lambda `debug) 292 (pcase (car args)
293 (insert "--entering a function:\n")) 293 ((or `lambda `debug)
294 ;; Exiting a function. 294 (insert "--entering a function:\n")
295 (`exit 295 (setq pos (1- (point))))
296 (insert "--returning value: ") 296 ;; Exiting a function.
297 (setq debugger-value (nth 1 args)) 297 (`exit
298 (prin1 debugger-value (current-buffer)) 298 (insert "--returning value: ")
299 (insert ?\n) 299 (setq pos (point))
300 (delete-char 1) 300 (setq debugger-value (nth 1 args))
301 (insert ? ) 301 (prin1 debugger-value (current-buffer))
302 (beginning-of-line)) 302 (insert ?\n)
303 ;; Debugger entered for an error. 303 (delete-char 1)
304 (`error 304 (insert ? )
305 (insert "--Lisp error: ") 305 (beginning-of-line))
306 (prin1 (nth 1 args) (current-buffer)) 306 ;; Debugger entered for an error.
307 (insert ?\n)) 307 (`error
308 ;; debug-on-call, when the next thing is an eval. 308 (insert "--Lisp error: ")
309 (`t 309 (setq pos (point))
310 (insert "--beginning evaluation of function call form:\n")) 310 (prin1 (nth 1 args) (current-buffer))
311 ;; User calls debug directly. 311 (insert ?\n))
312 (_ 312 ;; debug-on-call, when the next thing is an eval.
313 (insert ": ") 313 (`t
314 (prin1 (if (eq (car args) 'nil) 314 (insert "--beginning evaluation of function call form:\n")
315 (cdr args) args) 315 (setq pos (1- (point))))
316 (current-buffer)) 316 ;; User calls debug directly.
317 (insert ?\n))) 317 (_
318 (insert ": ")
319 (setq pos (point))
320 (prin1 (if (eq (car args) 'nil)
321 (cdr args) args)
322 (current-buffer))
323 (insert ?\n)))
324 ;; Place point on "stack frame 0" (bug#15101).
325 (goto-char pos))
318 ;; After any frame that uses eval-buffer, 326 ;; After any frame that uses eval-buffer,
319 ;; insert a line that states the buffer position it's reading at. 327 ;; insert a line that states the buffer position it's reading at.
320 (save-excursion 328 (save-excursion
@@ -533,16 +541,15 @@ Applies to the frame whose line point is on in the backtrace."
533 (progn ,@body) 541 (progn ,@body)
534 (setq debugger-outer-match-data (match-data))))) 542 (setq debugger-outer-match-data (match-data)))))
535 543
536(defun debugger-eval-expression (exp) 544(defun debugger-eval-expression (exp &optional nframe)
537 "Eval an expression, in an environment like that outside the debugger. 545 "Eval an expression, in an environment like that outside the debugger.
538The environment used is the one when entering the activation frame at point." 546The environment used is the one when entering the activation frame at point."
539 (interactive 547 (interactive
540 (list (read-from-minibuffer "Eval: " 548 (list (read--expression "Eval in stack frame: ")))
541 nil read-expression-map t 549 (let ((nframe (or nframe
542 'read-expression-history))) 550 (condition-case nil (1+ (debugger-frame-number 'skip-base))
543 (let ((nframe (condition-case nil (1+ (debugger-frame-number 'skip-base)) 551 (error 0)))) ;; If on first line.
544 (error 0))) ;; If on first line. 552 (base (if (eq 'debug--implement-debug-on-entry
545 (base (if (eq 'debug--implement-debug-on-entry
546 (cadr (backtrace-frame 1 'debug))) 553 (cadr (backtrace-frame 1 'debug)))
547 'debug--implement-debug-on-entry 'debug))) 554 'debug--implement-debug-on-entry 'debug)))
548 (debugger-env-macro 555 (debugger-env-macro
@@ -651,11 +658,7 @@ Complete list of commands:
651(defun debugger-record-expression (exp) 658(defun debugger-record-expression (exp)
652 "Display a variable's value and record it in `*Backtrace-record*' buffer." 659 "Display a variable's value and record it in `*Backtrace-record*' buffer."
653 (interactive 660 (interactive
654 (list (read-from-minibuffer 661 (list (read--expression "Record Eval: ")))
655 "Record Eval: "
656 nil
657 read-expression-map t
658 'read-expression-history)))
659 (let* ((buffer (get-buffer-create debugger-record-buffer)) 662 (let* ((buffer (get-buffer-create debugger-record-buffer))
660 (standard-output buffer)) 663 (standard-output buffer))
661 (princ (format "Debugger Eval (%s): " exp)) 664 (princ (format "Debugger Eval (%s): " exp))
diff --git a/src/ChangeLog b/src/ChangeLog
index c12b32ebc71..028c33848a4 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
12013-08-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * image.c (imagemagick_compute_animated_image): Respect the GIF
4 disposal methods.
5
12013-08-15 Ken Brown <kbrown@cornell.edu> 62013-08-15 Ken Brown <kbrown@cornell.edu>
2 7
3 * emacs.c (main): Update comment about G_SLICE_ALWAYS_MALLOC. 8 * emacs.c (main): Update comment about G_SLICE_ALWAYS_MALLOC.
diff --git a/src/image.c b/src/image.c
index 3cab72edf74..bc9f9ab123a 100644
--- a/src/image.c
+++ b/src/image.c
@@ -7887,17 +7887,20 @@ imagemagick_compute_animated_image (MagickWand *super_wand, int ino)
7887 else 7887 else
7888 composite_wand = animation_cache; 7888 composite_wand = animation_cache;
7889 7889
7890 for (i = max (1, animation_index); i <= ino; i++) 7890 for (i = max (1, animation_index + 1); i <= ino; i++)
7891 { 7891 {
7892 MagickWand *sub_wand; 7892 MagickWand *sub_wand;
7893 PixelIterator *source_iterator, *dest_iterator; 7893 PixelIterator *source_iterator, *dest_iterator;
7894 PixelWand **source, **dest; 7894 PixelWand **source, **dest;
7895 size_t source_width, dest_width; 7895 size_t source_width, dest_width;
7896 MagickPixelPacket pixel; 7896 MagickPixelPacket pixel;
7897 DisposeType dispose;
7897 7898
7898 MagickSetIteratorIndex (super_wand, i); 7899 MagickSetIteratorIndex (super_wand, i);
7899 sub_wand = MagickGetImage (super_wand); 7900 sub_wand = MagickGetImage (super_wand);
7900 7901
7902 dispose = MagickGetImageDispose (sub_wand);
7903
7901 source_iterator = NewPixelIterator (sub_wand); 7904 source_iterator = NewPixelIterator (sub_wand);
7902 if (! source_iterator) 7905 if (! source_iterator)
7903 { 7906 {
@@ -7926,8 +7929,11 @@ imagemagick_compute_animated_image (MagickWand *super_wand, int ino)
7926 dest = PixelGetNextIteratorRow (dest_iterator, &dest_width); 7929 dest = PixelGetNextIteratorRow (dest_iterator, &dest_width);
7927 for (x = 0; x < source_width; x++) 7930 for (x = 0; x < source_width; x++)
7928 { 7931 {
7929 /* Copy over non-transparent pixels. */ 7932 /* Normally we only copy over non-transparent pixels,
7930 if (PixelGetAlpha (source[x])) 7933 but if the disposal method is "Background", then we
7934 copy over all pixels. */
7935 if (dispose == BackgroundDispose ||
7936 PixelGetAlpha (source[x]))
7931 { 7937 {
7932 PixelGetMagickColor (source[x], &pixel); 7938 PixelGetMagickColor (source[x], &pixel);
7933 PixelSetMagickColor (dest[x], &pixel); 7939 PixelSetMagickColor (dest[x], &pixel);