diff options
| author | Joakim Verona | 2013-02-17 00:04:23 +0100 |
|---|---|---|
| committer | Joakim Verona | 2013-02-17 00:04:23 +0100 |
| commit | bcd8c34aabe11e72a0ce35f654515e2bb9c2964b (patch) | |
| tree | a294d312b78bc7db718819f498df3a3bbf07258f /lisp | |
| parent | 613fda6799a504feff2d5a930ef7998125498d10 (diff) | |
| parent | ed8d7fcaa2965216d44388fd00a757c8d55e7395 (diff) | |
| download | emacs-bcd8c34aabe11e72a0ce35f654515e2bb9c2964b.tar.gz emacs-bcd8c34aabe11e72a0ce35f654515e2bb9c2964b.zip | |
auto upstream
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/ChangeLog | 89 | ||||
| -rw-r--r-- | lisp/autorevert.el | 9 | ||||
| -rw-r--r-- | lisp/emacs-lisp/tabulated-list.el | 4 | ||||
| -rw-r--r-- | lisp/font-lock.el | 2 | ||||
| -rw-r--r-- | lisp/gnus/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/gnus/shr.el | 3 | ||||
| -rw-r--r-- | lisp/image-mode.el | 99 | ||||
| -rw-r--r-- | lisp/image.el | 71 | ||||
| -rw-r--r-- | lisp/info-look.el | 15 | ||||
| -rw-r--r-- | lisp/net/tramp-cache.el | 37 | ||||
| -rw-r--r-- | lisp/net/tramp-compat.el | 1 | ||||
| -rw-r--r-- | lisp/net/tramp-sh.el | 1 | ||||
| -rw-r--r-- | lisp/replace.el | 23 | ||||
| -rw-r--r-- | lisp/simple.el | 16 | ||||
| -rw-r--r-- | lisp/url/ChangeLog | 6 | ||||
| -rw-r--r-- | lisp/url/url-http.el | 4 |
16 files changed, 315 insertions, 70 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 99704a0b532..66c18a25803 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,25 +1,96 @@ | |||
| 1 | 2013-02-16 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * image.el (image-animated-types): Remove. | ||
| 4 | (image-multi-frame-p): Rename from image-animated-p, and generalize. | ||
| 5 | (image-animated-p): Make obsolete alias. | ||
| 6 | (image-animate, image-nth-frame, image-animate-timeout): | ||
| 7 | Use image-multi-frame-p. | ||
| 8 | (image-animate-timeout): If no delay, use image-default-frame-delay. | ||
| 9 | * image-mode.el (image-mode, image-toggle-animation): | ||
| 10 | Use image-multi-frame-p. (Bug#763, bug#10739) | ||
| 11 | (image-mode): Adjust startup message for a multi-frame image. | ||
| 12 | |||
| 13 | * image-mode.el (image-mode-map): Give it a menu. | ||
| 14 | |||
| 15 | 2013-02-16 Michael Albinus <michael.albinus@gmx.de> | ||
| 16 | |||
| 17 | * net/tramp-cache.el (tramp-connection-properties): New customer | ||
| 18 | option. | ||
| 19 | (tramp-get-connection-property): Use it. | ||
| 20 | |||
| 21 | * net/tramp-compat.el (top): Require 'trampver. | ||
| 22 | |||
| 23 | * net/tramp-sh.el (tramp-remote-process-environment): Set | ||
| 24 | tramp-autoload cookie. | ||
| 25 | |||
| 26 | 2013-02-16 Kevin Ryde <user42@zip.com.au> | ||
| 27 | |||
| 28 | * info-look.el (info-lookup-select-mode): If major-mode has no | ||
| 29 | info-lookup-alist entry then search up derived-mode-parent (bug#8660). | ||
| 30 | |||
| 31 | 2013-02-16 Jambunathan K <kjambunathan@gmail.com> | ||
| 32 | |||
| 33 | * replace.el (read-regexp): Tighten the regexp that matches tag. | ||
| 34 | When tag is retrieved with `find-tag-default', use regexp that | ||
| 35 | matches tag at point. Also update docstring (Bug#13687). | ||
| 36 | |||
| 37 | 2013-02-16 Eli Zaretskii <eliz@gnu.org> | ||
| 38 | |||
| 39 | * autorevert.el (auto-revert-notify-add-watch): With 'w32notify', | ||
| 40 | add watch for the file, not its parent directory, since w32notify | ||
| 41 | sets up the watch for the directory internally. (Bug#13725) | ||
| 42 | |||
| 43 | 2013-02-16 Glenn Morris <rgm@gnu.org> | ||
| 44 | |||
| 45 | * image.el (image-default-frame-delay): New variable. | ||
| 46 | (image-animated-p): Use image-default-frame-delay. | ||
| 47 | (image-minimum-frame-delay): New constant. | ||
| 48 | (image-animate-timeout): Use image-minimum-frame-delay. | ||
| 49 | |||
| 50 | * image.el (image-nth-frame): New, split from image-animate-timeout. | ||
| 51 | (image-animate-timeout): Use image-nth-frame. | ||
| 52 | * image-mode.el (image-goto-frame, image-next-frame) | ||
| 53 | (image-previous-frame): New commands. | ||
| 54 | (image-mode-map): Add new frame commands. | ||
| 55 | |||
| 56 | 2013-02-16 Jonas Bernoulli <jonas@bernoul.li> | ||
| 57 | |||
| 58 | * emacs-lisp/tabulated-list.el (tabulated-list-print-col): | ||
| 59 | If col-desc already has help-echo, use it. (Bug#13563) | ||
| 60 | |||
| 61 | 2013-02-16 Glenn Morris <rgm@gnu.org> | ||
| 62 | |||
| 63 | * image.el (image-current-frame): New variable. | ||
| 64 | (image-animate-timeout): Set image-current-frame. | ||
| 65 | * image-mode.el (image-mode): For animated images, | ||
| 66 | display a frame counter via mode-line-process. | ||
| 67 | |||
| 68 | * font-lock.el (lisp-font-lock-keywords-1): Add defvar-local. | ||
| 69 | |||
| 70 | 2013-02-15 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 71 | |||
| 72 | * simple.el (eval-expression): Let `exp' set the mark (bug#13724). | ||
| 73 | |||
| 1 | 2013-02-15 Alan Mackenzie <acm@muc.de> | 74 | 2013-02-15 Alan Mackenzie <acm@muc.de> |
| 2 | 75 | ||
| 3 | * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): When a | 76 | * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): When a |
| 4 | global minor mode has been enabled, call the minor mode function | 77 | global minor mode has been enabled, call the minor mode function |
| 5 | for a new buffer once only, after the major mode hook, whilst | 78 | for a new buffer once only, after the major mode hook, whilst |
| 6 | allowing that hook explicitly to disable the minor mode. | 79 | allowing that hook explicitly to disable the minor mode. |
| 7 | (MODE-disable-in-buffer): new (generated) function. | 80 | (MODE-disable-in-buffer): New (generated) function. |
| 8 | (disable-MODE): new (generated) buffer local variable. | 81 | (disable-MODE): New (generated) buffer local variable. |
| 9 | 82 | ||
| 10 | 2013-02-15 Jambunathan K <kjambunathan@gmail.com> | 83 | 2013-02-15 Jambunathan K <kjambunathan@gmail.com> |
| 11 | 84 | ||
| 12 | * iswitchb.el (iswitchb-read-buffer): Bind `C-.' and `C-,' to | 85 | * iswitchb.el (iswitchb-read-buffer): Bind `C-.' and `C-,' to |
| 13 | `iswitchb-next-match' and `iswitchb-prev-match' resply. | 86 | `iswitchb-next-match' and `iswitchb-prev-match' resply. |
| 14 | |||
| 15 | * ido.el (ido-init-completion-maps): Bind `C-.' and `C-,' to | 87 | * ido.el (ido-init-completion-maps): Bind `C-.' and `C-,' to |
| 16 | `ido-next-match' and `ido-prev-match' resply. | 88 | `ido-next-match' and `ido-prev-match' resply. |
| 17 | |||
| 18 | * icomplete.el (icomplete-minibuffer-map): Unbind `C-s' and `C-r'. | 89 | * icomplete.el (icomplete-minibuffer-map): Unbind `C-s' and `C-r'. |
| 19 | Bind `C-.' and `C-,' to `icomplete-forward-completions' and | 90 | Bind `C-.' and `C-,' to `icomplete-forward-completions' and |
| 20 | `icomplete-backward-completions' (Bug#13708). | 91 | `icomplete-backward-completions' (Bug#13708). |
| 21 | 92 | ||
| 22 | 2013-02-15 Michael Albinus <michael.albinus@gmx.de> | 93 | 2013-02-15 Glenn Morris <rgm@gnu.org> |
| 23 | 94 | ||
| 24 | * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix. | 95 | * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix. |
| 25 | 96 | ||
| @@ -52,8 +123,8 @@ | |||
| 52 | 123 | ||
| 53 | 2013-02-14 Michael Albinus <michael.albinus@gmx.de> | 124 | 2013-02-14 Michael Albinus <michael.albinus@gmx.de> |
| 54 | 125 | ||
| 55 | * net/tramp.el (tramp-debug-message): Add | 126 | * net/tramp.el (tramp-debug-message): |
| 56 | `tramp-condition-case-unless-debug'. | 127 | Add `tramp-condition-case-unless-debug'. |
| 57 | (tramp-debug-on-error): New defvar. | 128 | (tramp-debug-on-error): New defvar. |
| 58 | (tramp-condition-case-unless-debug): New defun. | 129 | (tramp-condition-case-unless-debug): New defun. |
| 59 | (tramp-file-name-handler): Use it. | 130 | (tramp-file-name-handler): Use it. |
| @@ -207,8 +278,8 @@ | |||
| 207 | * net/tramp-compat.el (top): Declare `remote-file-name-inhibit-cache' | 278 | * net/tramp-compat.el (top): Declare `remote-file-name-inhibit-cache' |
| 208 | only if it doesn't exist. | 279 | only if it doesn't exist. |
| 209 | 280 | ||
| 210 | * net/tramp-sh.el (tramp-sh-handle-start-file-process): Set | 281 | * net/tramp-sh.el (tramp-sh-handle-start-file-process): |
| 211 | process marker. | 282 | Set process marker. |
| 212 | 283 | ||
| 213 | 2013-02-12 Tassilo Horn <tsdh@gnu.org> | 284 | 2013-02-12 Tassilo Horn <tsdh@gnu.org> |
| 214 | 285 | ||
diff --git a/lisp/autorevert.el b/lisp/autorevert.el index fe6cf216363..a2d70c37762 100644 --- a/lisp/autorevert.el +++ b/lisp/autorevert.el | |||
| @@ -519,12 +519,13 @@ will use an up-to-date value of `auto-revert-interval'" | |||
| 519 | (let ((func (if (fboundp 'inotify-add-watch) | 519 | (let ((func (if (fboundp 'inotify-add-watch) |
| 520 | 'inotify-add-watch 'w32notify-add-watch)) | 520 | 'inotify-add-watch 'w32notify-add-watch)) |
| 521 | (aspect (if (fboundp 'inotify-add-watch) | 521 | (aspect (if (fboundp 'inotify-add-watch) |
| 522 | '(create modify moved-to) '(size last-write-time)))) | 522 | '(create modify moved-to) '(size last-write-time))) |
| 523 | (file (if (fboundp 'inotify-add-watch) | ||
| 524 | (directory-file-name (expand-file-name default-directory)) | ||
| 525 | (buffer-file-name)))) | ||
| 523 | (setq auto-revert-notify-watch-descriptor | 526 | (setq auto-revert-notify-watch-descriptor |
| 524 | (ignore-errors | 527 | (ignore-errors |
| 525 | (funcall | 528 | (funcall func file aspect 'auto-revert-notify-handler))) |
| 526 | func (directory-file-name (expand-file-name default-directory)) | ||
| 527 | aspect 'auto-revert-notify-handler))) | ||
| 528 | (if auto-revert-notify-watch-descriptor | 529 | (if auto-revert-notify-watch-descriptor |
| 529 | (progn | 530 | (progn |
| 530 | (puthash | 531 | (puthash |
diff --git a/lisp/emacs-lisp/tabulated-list.el b/lisp/emacs-lisp/tabulated-list.el index 94b3c1553e5..da487e463e2 100644 --- a/lisp/emacs-lisp/tabulated-list.el +++ b/lisp/emacs-lisp/tabulated-list.el | |||
| @@ -379,7 +379,9 @@ Return the column number after insertion." | |||
| 379 | (setq width (- width shift)) | 379 | (setq width (- width shift)) |
| 380 | (setq x (+ x shift)))) | 380 | (setq x (+ x shift)))) |
| 381 | (if (stringp col-desc) | 381 | (if (stringp col-desc) |
| 382 | (insert (propertize label 'help-echo help-echo)) | 382 | (insert (if (get-text-property 0 'help-echo label) |
| 383 | label | ||
| 384 | (propertize label 'help-echo help-echo))) | ||
| 383 | (apply 'insert-text-button label (cdr col-desc))) | 385 | (apply 'insert-text-button label (cdr col-desc))) |
| 384 | (let ((next-x (+ x pad-right width))) | 386 | (let ((next-x (+ x pad-right width))) |
| 385 | ;; No need to append any spaces if this is the last column. | 387 | ;; No need to append any spaces if this is the last column. |
diff --git a/lisp/font-lock.el b/lisp/font-lock.el index f714eaab233..6e3476ac9a5 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el | |||
| @@ -2256,7 +2256,7 @@ in which C preprocessor directives are used. e.g. `asm-mode' and | |||
| 2256 | "method-combination\\|setf-expander\\|skeleton\\|widget\\|" | 2256 | "method-combination\\|setf-expander\\|skeleton\\|widget\\|" |
| 2257 | "function\\|\\(compiler\\|modify\\|symbol\\)-macro\\)\\)\\|" | 2257 | "function\\|\\(compiler\\|modify\\|symbol\\)-macro\\)\\)\\|" |
| 2258 | ;; Variable declarations. | 2258 | ;; Variable declarations. |
| 2259 | "\\(const\\(ant\\)?\\|custom\\|varalias\\|face\\|parameter\\|var\\)\\|" | 2259 | "\\(const\\(ant\\)?\\|custom\\|varalias\\|face\\|parameter\\|var\\(?:-local\\)?\\)\\|" |
| 2260 | ;; Structure declarations. | 2260 | ;; Structure declarations. |
| 2261 | "\\(class\\|group\\|theme\\|package\\|struct\\|type\\)" | 2261 | "\\(class\\|group\\|theme\\|package\\|struct\\|type\\)" |
| 2262 | "\\)\\)\\>" | 2262 | "\\)\\)\\>" |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index b6e8fd976d3..5030da87672 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2013-02-16 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * shr.el (shr-put-image): Only animate images that specify a delay. | ||
| 4 | This is consistent with the old image-animated-p behavior. | ||
| 5 | |||
| 1 | 2013-02-14 Katsumi Yamaoka <yamaoka@jpl.org> | 6 | 2013-02-14 Katsumi Yamaoka <yamaoka@jpl.org> |
| 2 | 7 | ||
| 3 | * gnus-util.el (gnus-define-keys): Convert [?\S-\ ] to [(shift space)] | 8 | * gnus-util.el (gnus-define-keys): Convert [?\S-\ ] to [(shift space)] |
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el index c9bf324b4fa..1294ca7cd69 100644 --- a/lisp/gnus/shr.el +++ b/lisp/gnus/shr.el | |||
| @@ -615,7 +615,8 @@ size, and full-buffer size." | |||
| 615 | (overlay-put overlay 'face 'default))) | 615 | (overlay-put overlay 'face 'default))) |
| 616 | (insert-image image (or alt "*"))) | 616 | (insert-image image (or alt "*"))) |
| 617 | (put-text-property start (point) 'image-size size) | 617 | (put-text-property start (point) 'image-size size) |
| 618 | (when (image-animated-p image) | 618 | ;; Only animate multi-frame things that specify a delay. FIXME? |
| 619 | (when (cdr (image-animated-p image)) | ||
| 619 | (image-animate image nil 60))) | 620 | (image-animate image nil 60))) |
| 620 | image) | 621 | image) |
| 621 | (insert alt))) | 622 | (insert alt))) |
diff --git a/lisp/image-mode.el b/lisp/image-mode.el index 196336717db..52367811341 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el | |||
| @@ -340,6 +340,9 @@ call." | |||
| 340 | (define-key map (kbd "S-SPC") 'image-scroll-down) | 340 | (define-key map (kbd "S-SPC") 'image-scroll-down) |
| 341 | (define-key map (kbd "DEL") 'image-scroll-down) | 341 | (define-key map (kbd "DEL") 'image-scroll-down) |
| 342 | (define-key map (kbd "RET") 'image-toggle-animation) | 342 | (define-key map (kbd "RET") 'image-toggle-animation) |
| 343 | (define-key map "F" 'image-goto-frame) | ||
| 344 | (define-key map "f" 'image-next-frame) | ||
| 345 | (define-key map "b" 'image-previous-frame) | ||
| 343 | (define-key map "n" 'image-next-file) | 346 | (define-key map "n" 'image-next-file) |
| 344 | (define-key map "p" 'image-previous-file) | 347 | (define-key map "p" 'image-previous-file) |
| 345 | (define-key map [remap forward-char] 'image-forward-hscroll) | 348 | (define-key map [remap forward-char] 'image-forward-hscroll) |
| @@ -356,6 +359,53 @@ call." | |||
| 356 | (define-key map [remap move-end-of-line] 'image-eol) | 359 | (define-key map [remap move-end-of-line] 'image-eol) |
| 357 | (define-key map [remap beginning-of-buffer] 'image-bob) | 360 | (define-key map [remap beginning-of-buffer] 'image-bob) |
| 358 | (define-key map [remap end-of-buffer] 'image-eob) | 361 | (define-key map [remap end-of-buffer] 'image-eob) |
| 362 | (easy-menu-define image-mode-menu map "Menu for Image mode." | ||
| 363 | '("Image" | ||
| 364 | ["Show as Text" image-toggle-display :active t | ||
| 365 | :help "Show image as text"] | ||
| 366 | "--" | ||
| 367 | ["Fit Frame to Image" image-mode-fit-frame :active t | ||
| 368 | :help "Resize frame to match image"] | ||
| 369 | ["Fit to Window Height" image-transform-fit-to-height | ||
| 370 | :visible (eq image-type 'imagemagick) | ||
| 371 | :help "Resize image to match the window height"] | ||
| 372 | ["Fit to Window Width" image-transform-fit-to-width | ||
| 373 | :visible (eq image-type 'imagemagick) | ||
| 374 | :help "Resize image to match the window width"] | ||
| 375 | ["Rotate Image..." image-transform-set-rotation | ||
| 376 | :visible (eq image-type 'imagemagick) | ||
| 377 | :help "Rotate the image"] | ||
| 378 | "--" | ||
| 379 | ["Next Image" image-next-file :active t | ||
| 380 | :help "Move to next image in this directory"] | ||
| 381 | ["Previous Image" image-previous-file :active t | ||
| 382 | :help "Move to previous image in this directory"] | ||
| 383 | "--" | ||
| 384 | ["Animate Image" image-toggle-animation :style toggle | ||
| 385 | :selected (let ((image (image-get-display-property))) | ||
| 386 | (and image (image-animate-timer image))) | ||
| 387 | :active image-current-frame | ||
| 388 | :help "Toggle image animation"] | ||
| 389 | ["Loop Animation" | ||
| 390 | (lambda () (interactive) | ||
| 391 | ;;; (make-variable-buffer-local 'image-animate-loop) | ||
| 392 | (setq image-animate-loop (not image-animate-loop)) | ||
| 393 | ;; FIXME this is a hacky way to make it affect a currently | ||
| 394 | ;; animating image. | ||
| 395 | (when (let ((image (image-get-display-property))) | ||
| 396 | (and image (image-animate-timer image))) | ||
| 397 | (image-toggle-animation) | ||
| 398 | (image-toggle-animation))) | ||
| 399 | :style toggle :selected image-animate-loop | ||
| 400 | :active image-current-frame | ||
| 401 | :help "Animate images once, or forever?"] | ||
| 402 | ["Next Frame" image-next-frame :active image-current-frame | ||
| 403 | :help "Show the next frame of this image"] | ||
| 404 | ["Previous Frame" image-previous-frame :active image-current-frame | ||
| 405 | :help "Show the previous frame of this image"] | ||
| 406 | ["Goto Frame..." image-goto-frame :active image-current-frame | ||
| 407 | :help "Show a specific frame of this image"] | ||
| 408 | )) | ||
| 359 | map) | 409 | map) |
| 360 | "Mode keymap for `image-mode'.") | 410 | "Mode keymap for `image-mode'.") |
| 361 | 411 | ||
| @@ -409,15 +459,22 @@ to toggle between display as an image and display as text." | |||
| 409 | (run-mode-hooks 'image-mode-hook) | 459 | (run-mode-hooks 'image-mode-hook) |
| 410 | (let ((image (image-get-display-property)) | 460 | (let ((image (image-get-display-property)) |
| 411 | (msg1 (substitute-command-keys | 461 | (msg1 (substitute-command-keys |
| 412 | "Type \\[image-toggle-display] to view the image as "))) | 462 | "Type \\[image-toggle-display] to view the image as ")) |
| 463 | animated) | ||
| 413 | (cond | 464 | (cond |
| 414 | ((null image) | 465 | ((null image) |
| 415 | (message "%s" (concat msg1 "an image."))) | 466 | (message "%s" (concat msg1 "an image."))) |
| 416 | ((image-animated-p image) | 467 | ((setq animated (image-multi-frame-p image)) |
| 468 | (setq image-current-frame (or (plist-get (cdr image) :index) 0) | ||
| 469 | mode-line-process | ||
| 470 | `(:eval (propertize (format " [%s/%s]" | ||
| 471 | (1+ image-current-frame) | ||
| 472 | ,(car animated)) | ||
| 473 | 'help-echo "Frame number"))) | ||
| 417 | (message "%s" | 474 | (message "%s" |
| 418 | (concat msg1 "text, or " | 475 | (concat msg1 "text. This image has multiple frames."))) |
| 419 | (substitute-command-keys | 476 | ;;; (substitute-command-keys |
| 420 | "\\[image-toggle-animation] to animate.")))) | 477 | ;;; "\\[image-toggle-animation] to animate.")))) |
| 421 | (t | 478 | (t |
| 422 | (message "%s" (concat msg1 "text.")))))) | 479 | (message "%s" (concat msg1 "text.")))))) |
| 423 | 480 | ||
| @@ -606,7 +663,7 @@ Otherwise it plays once, then stops." | |||
| 606 | (cond | 663 | (cond |
| 607 | ((null image) | 664 | ((null image) |
| 608 | (error "No image is present")) | 665 | (error "No image is present")) |
| 609 | ((null (setq animation (image-animated-p image))) | 666 | ((null (setq animation (image-multi-frame-p image))) |
| 610 | (message "No image animation.")) | 667 | (message "No image animation.")) |
| 611 | (t | 668 | (t |
| 612 | (let ((timer (image-animate-timer image))) | 669 | (let ((timer (image-animate-timer image))) |
| @@ -620,6 +677,36 @@ Otherwise it plays once, then stops." | |||
| 620 | (image-animate image index | 677 | (image-animate image index |
| 621 | (if image-animate-loop t))))))))) | 678 | (if image-animate-loop t))))))))) |
| 622 | 679 | ||
| 680 | (defun image-goto-frame (n &optional relative) | ||
| 681 | "Show frame N of a multi-frame image. | ||
| 682 | Optional argument OFFSET non-nil means interpret N as relative to the | ||
| 683 | current frame. Frames are indexed from 1." | ||
| 684 | (interactive | ||
| 685 | (list (or current-prefix-arg | ||
| 686 | (read-number "Show frame number: ")))) | ||
| 687 | (let ((image (image-get-display-property))) | ||
| 688 | (cond | ||
| 689 | ((null image) | ||
| 690 | (error "No image is present")) | ||
| 691 | ((null image-current-frame) | ||
| 692 | (message "No image animation.")) | ||
| 693 | (t | ||
| 694 | (image-nth-frame image (if relative (+ n image-current-frame) (1- n))))))) | ||
| 695 | |||
| 696 | (defun image-next-frame (&optional n) | ||
| 697 | "Switch to the next frame of a multi-frame image. | ||
| 698 | With optional argument N, switch to the Nth frame after the current one. | ||
| 699 | If N is negative, switch to the Nth frame before the current one." | ||
| 700 | (interactive "p") | ||
| 701 | (image-goto-frame n t)) | ||
| 702 | |||
| 703 | (defun image-previous-frame (&optional n) | ||
| 704 | "Switch to the previous frame of a multi-frame image. | ||
| 705 | With optional argument N, switch to the Nth frame before the current one. | ||
| 706 | If N is negative, switch to the Nth frame after the current one." | ||
| 707 | (interactive "p") | ||
| 708 | (image-next-frame (- n))) | ||
| 709 | |||
| 623 | 710 | ||
| 624 | ;;; Switching to the next/previous image | 711 | ;;; Switching to the next/previous image |
| 625 | 712 | ||
diff --git a/lisp/image.el b/lisp/image.el index 73b25f6da67..b91d136443d 100644 --- a/lisp/image.el +++ b/lisp/image.el | |||
| @@ -606,25 +606,25 @@ Example: | |||
| 606 | 606 | ||
| 607 | ;;; Animated image API | 607 | ;;; Animated image API |
| 608 | 608 | ||
| 609 | (defconst image-animated-types '(gif) | 609 | (defvar image-default-frame-delay 0.1 |
| 610 | "List of supported animated image types.") | 610 | "Default interval in seconds between frames of a multi-frame image. |
| 611 | 611 | Only used if the image does not specify a value.") | |
| 612 | (defun image-animated-p (image) | 612 | |
| 613 | "Return non-nil if IMAGE can be animated. | 613 | (defun image-multi-frame-p (image) |
| 614 | To be capable of being animated, an image must be of a type | 614 | "Return non-nil if IMAGE contains more than one frame. |
| 615 | listed in `image-animated-types', and contain more than one | 615 | The actual return value is a cons (NIMAGES . DELAY), where NIMAGES is |
| 616 | sub-image, with a specified animation delay. The actual return | 616 | the number of frames (or sub-images) in the image and DELAY is the delay |
| 617 | value is a cons (NIMAGES . DELAY), where NIMAGES is the number | 617 | in seconds that the image specifies between each frame. DELAY may be nil, |
| 618 | of sub-images in the animated image and DELAY is the delay in | 618 | in which case you might want to use `image-default-frame-delay'." |
| 619 | seconds until the next sub-image should be displayed." | 619 | (let* ((metadata (image-metadata image)) |
| 620 | (cond | 620 | (images (plist-get metadata 'count)) |
| 621 | ((memq (plist-get (cdr image) :type) image-animated-types) | 621 | (delay (plist-get metadata 'delay))) |
| 622 | (let* ((metadata (image-metadata image)) | 622 | (when (and images (> images 1)) |
| 623 | (images (plist-get metadata 'count)) | 623 | (if (or (not (numberp delay)) (< delay 0)) |
| 624 | (delay (plist-get metadata 'delay))) | 624 | (setq delay image-default-frame-delay)) |
| 625 | (when (and images (> images 1) (numberp delay)) | 625 | (cons images delay)))) |
| 626 | (if (< delay 0) (setq delay 0.1)) | 626 | |
| 627 | (cons images delay)))))) | 627 | (define-obsolete-function-alias 'image-animated-p 'image-multi-frame-p "24.4") |
| 628 | 628 | ||
| 629 | ;; "Destructively"? | 629 | ;; "Destructively"? |
| 630 | (defun image-animate (image &optional index limit) | 630 | (defun image-animate (image &optional index limit) |
| @@ -635,7 +635,7 @@ With optional INDEX, begin animating from that animation frame. | |||
| 635 | LIMIT specifies how long to animate the image. If omitted or | 635 | LIMIT specifies how long to animate the image. If omitted or |
| 636 | nil, play the animation until the end. If t, loop forever. If a | 636 | nil, play the animation until the end. If t, loop forever. If a |
| 637 | number, play until that number of seconds has elapsed." | 637 | number, play until that number of seconds has elapsed." |
| 638 | (let ((animation (image-animated-p image)) | 638 | (let ((animation (image-multi-frame-p image)) |
| 639 | timer) | 639 | timer) |
| 640 | (when animation | 640 | (when animation |
| 641 | (if (setq timer (image-animate-timer image)) | 641 | (if (setq timer (image-animate-timer image)) |
| @@ -657,8 +657,25 @@ number, play until that number of seconds has elapsed." | |||
| 657 | (setq timer nil))) | 657 | (setq timer nil))) |
| 658 | timer)) | 658 | timer)) |
| 659 | 659 | ||
| 660 | (defconst image-minimum-frame-delay 0.01 | ||
| 661 | "Minimum interval in seconds between frames of an animated image.") | ||
| 662 | |||
| 663 | (defvar-local image-current-frame nil | ||
| 664 | "The frame index of the current animated image.") | ||
| 665 | |||
| 666 | (defun image-nth-frame (image n &optional nocheck) | ||
| 667 | "Show frame N of IMAGE. | ||
| 668 | Frames are indexed from 0. Optional argument NOCHECK non-nil means | ||
| 669 | do not check N is within the range of frames present in the image." | ||
| 670 | (unless nocheck | ||
| 671 | (if (< n 0) (setq n 0) | ||
| 672 | (setq n (min n (1- (car (image-multi-frame-p image))))))) | ||
| 673 | (plist-put (cdr image) :index n) | ||
| 674 | (setq image-current-frame n) | ||
| 675 | (force-window-update)) | ||
| 676 | |||
| 660 | ;; FIXME? The delay may not be the same for different sub-images, | 677 | ;; FIXME? The delay may not be the same for different sub-images, |
| 661 | ;; hence we need to call image-animated-p to return it. | 678 | ;; hence we need to call image-multi-frame-p to return it. |
| 662 | ;; But it also returns count, so why do we bother passing that as an | 679 | ;; But it also returns count, so why do we bother passing that as an |
| 663 | ;; argument? | 680 | ;; argument? |
| 664 | (defun image-animate-timeout (image n count time-elapsed limit) | 681 | (defun image-animate-timeout (image n count time-elapsed limit) |
| @@ -670,16 +687,16 @@ TIME-ELAPSED is the total time that has elapsed since | |||
| 670 | LIMIT determines when to stop. If t, loop forever. If nil, stop | 687 | LIMIT determines when to stop. If t, loop forever. If nil, stop |
| 671 | after displaying the last animation frame. Otherwise, stop | 688 | after displaying the last animation frame. Otherwise, stop |
| 672 | after LIMIT seconds have elapsed. | 689 | after LIMIT seconds have elapsed. |
| 673 | The minimum delay between successive frames is 0.01s." | 690 | The minimum delay between successive frames is `image-minimum-frame-delay'." |
| 674 | (plist-put (cdr image) :index n) | 691 | (image-nth-frame image n t) |
| 675 | (force-window-update) | ||
| 676 | (setq n (1+ n)) | 692 | (setq n (1+ n)) |
| 677 | (let* ((time (float-time)) | 693 | (let* ((time (float-time)) |
| 678 | (animation (image-animated-p image)) | 694 | (animation (image-multi-frame-p image)) |
| 679 | ;; Subtract off the time we took to load the image from the | 695 | ;; Subtract off the time we took to load the image from the |
| 680 | ;; stated delay time. | 696 | ;; stated delay time. |
| 681 | (delay (max (+ (cdr animation) time (- (float-time))) | 697 | (delay (max (+ (or (cdr animation) image-default-frame-delay) |
| 682 | 0.01)) | 698 | time (- (float-time))) |
| 699 | image-minimum-frame-delay)) | ||
| 683 | done) | 700 | done) |
| 684 | (if (>= n count) | 701 | (if (>= n count) |
| 685 | (if limit | 702 | (if limit |
diff --git a/lisp/info-look.el b/lisp/info-look.el index a67fabc5a88..0b33dd51faf 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el | |||
| @@ -298,6 +298,21 @@ If optional argument QUERY is non-nil, query for the help mode." | |||
| 298 | (when (string-match (caar file-name-alist) file-name) | 298 | (when (string-match (caar file-name-alist) file-name) |
| 299 | (setq info-lookup-mode (cdar file-name-alist))) | 299 | (setq info-lookup-mode (cdar file-name-alist))) |
| 300 | (setq file-name-alist (cdr file-name-alist))))) | 300 | (setq file-name-alist (cdr file-name-alist))))) |
| 301 | |||
| 302 | ;; If major-mode has no setups in info-lookup-alist, under any topic, then | ||
| 303 | ;; search up through derived-mode-parent to find a parent mode which does | ||
| 304 | ;; have some setups. This means that a `define-derived-mode' with no | ||
| 305 | ;; setups of its own will select its parent mode for lookups, if one of | ||
| 306 | ;; its parents has some setups. Good for example on `makefile-gmake-mode' | ||
| 307 | ;; and similar derivatives of `makefile-mode'. | ||
| 308 | ;; | ||
| 309 | (let ((mode major-mode)) ;; Look for `mode' with some setups. | ||
| 310 | (while (and mode (not info-lookup-mode)) | ||
| 311 | (dolist (topic-cell info-lookup-alist) ;; Usually only two topics here. | ||
| 312 | (if (info-lookup->mode-value (car topic-cell) mode) | ||
| 313 | (setq info-lookup-mode mode))) | ||
| 314 | (setq mode (get mode 'derived-mode-parent)))) | ||
| 315 | |||
| 301 | (or info-lookup-mode (setq info-lookup-mode major-mode))) | 316 | (or info-lookup-mode (setq info-lookup-mode major-mode))) |
| 302 | 317 | ||
| 303 | (defun info-lookup-change-mode (topic) | 318 | (defun info-lookup-change-mode (topic) |
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el index d1ef1739bf7..dc45a57b7c6 100644 --- a/lisp/net/tramp-cache.el +++ b/lisp/net/tramp-cache.el | |||
| @@ -58,6 +58,19 @@ | |||
| 58 | (defvar tramp-cache-data (make-hash-table :test 'equal) | 58 | (defvar tramp-cache-data (make-hash-table :test 'equal) |
| 59 | "Hash table for remote files properties.") | 59 | "Hash table for remote files properties.") |
| 60 | 60 | ||
| 61 | ;;;###tramp-autoload | ||
| 62 | (defcustom tramp-connection-properties nil | ||
| 63 | "List of static connection properties. | ||
| 64 | Every entry has the form (REGEXP PROPERTY VALUE). The regexp | ||
| 65 | matches remote file names. It can be nil. PROPERTY is a string, | ||
| 66 | and VALUE the corresponding value. They are used, if there is no | ||
| 67 | matching entry in for PROPERTY in `tramp-cache-data'." | ||
| 68 | :group 'tramp | ||
| 69 | :version "24.4" | ||
| 70 | :type '(repeat (list (choice :tag "File Name regexp" regexp (const nil)) | ||
| 71 | (choice :tag " Property" string) | ||
| 72 | (choice :tag " Value" sexp)))) | ||
| 73 | |||
| 61 | (defcustom tramp-persistency-file-name | 74 | (defcustom tramp-persistency-file-name |
| 62 | (cond | 75 | (cond |
| 63 | ;; GNU Emacs. | 76 | ;; GNU Emacs. |
| @@ -204,9 +217,27 @@ If the value is not set for the connection, returns DEFAULT." | |||
| 204 | (setq key (copy-sequence key)) | 217 | (setq key (copy-sequence key)) |
| 205 | (aset key 3 nil)) | 218 | (aset key 3 nil)) |
| 206 | (let* ((hash (gethash key tramp-cache-data)) | 219 | (let* ((hash (gethash key tramp-cache-data)) |
| 207 | (value (if (hash-table-p hash) | 220 | (value |
| 208 | (gethash property hash default) | 221 | (catch 'result |
| 209 | default))) | 222 | (or |
| 223 | ;; Check for dynamic properties. | ||
| 224 | (and | ||
| 225 | (hash-table-p hash) | ||
| 226 | (maphash | ||
| 227 | (lambda (x y) (when (equal x property) (throw 'result y))) | ||
| 228 | hash)) | ||
| 229 | ;; Check for static properties. | ||
| 230 | (and | ||
| 231 | (vectorp key) | ||
| 232 | (dolist (elt tramp-connection-properties) | ||
| 233 | (when (and (string-match | ||
| 234 | (or (nth 0 elt) "") | ||
| 235 | (tramp-make-tramp-file-name | ||
| 236 | (aref key 0) (aref key 1) (aref key 2) nil)) | ||
| 237 | (string-equal (or (nth 1 elt) "") (or property ""))) | ||
| 238 | (throw 'result (nth 2 elt))))) | ||
| 239 | ;; The default value. | ||
| 240 | default)))) | ||
| 210 | (tramp-message key 7 "%s %s" property value) | 241 | (tramp-message key 7 "%s %s" property value) |
| 211 | value)) | 242 | value)) |
| 212 | 243 | ||
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index 12510bf7fab..81c4d5ccced 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el | |||
| @@ -52,6 +52,7 @@ | |||
| 52 | (require 'format-spec) | 52 | (require 'format-spec) |
| 53 | (require 'shell) | 53 | (require 'shell) |
| 54 | 54 | ||
| 55 | (require 'trampver) | ||
| 55 | (require 'tramp-loaddefs) | 56 | (require 'tramp-loaddefs) |
| 56 | 57 | ||
| 57 | ;; As long as password.el is not part of (X)Emacs, it shouldn't be | 58 | ;; As long as password.el is not part of (X)Emacs, it shouldn't be |
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 001a27f3b2e..9be22352b23 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el | |||
| @@ -512,6 +512,7 @@ as given in your `~/.profile'." | |||
| 512 | (const :tag "Private Directories" tramp-own-remote-path) | 512 | (const :tag "Private Directories" tramp-own-remote-path) |
| 513 | (string :tag "Directory")))) | 513 | (string :tag "Directory")))) |
| 514 | 514 | ||
| 515 | ;;;###tramp-autoload | ||
| 515 | (defcustom tramp-remote-process-environment | 516 | (defcustom tramp-remote-process-environment |
| 516 | `("HISTFILE=$HOME/.tramp_history" "HISTSIZE=1" "LC_ALL=C" | 517 | `("HISTFILE=$HOME/.tramp_history" "HISTSIZE=1" "LC_ALL=C" |
| 517 | ,(format "TERM=%s" tramp-terminal-type) | 518 | ,(format "TERM=%s" tramp-terminal-type) |
diff --git a/lisp/replace.el b/lisp/replace.el index 7757426cf95..0b8aaa7d349 100644 --- a/lisp/replace.el +++ b/lisp/replace.el | |||
| @@ -585,27 +585,32 @@ of `history-length', which see.") | |||
| 585 | When PROMPT doesn't end with a colon and space, it adds a final \": \". | 585 | When PROMPT doesn't end with a colon and space, it adds a final \": \". |
| 586 | If DEFAULTS is non-nil, it displays the first default in the prompt. | 586 | If DEFAULTS is non-nil, it displays the first default in the prompt. |
| 587 | 587 | ||
| 588 | Non-nil optional arg DEFAULTS is a string or a list of strings that | 588 | Optional arg DEFAULTS is a string or a list of strings that are |
| 589 | are prepended to a list of standard default values, which include the | 589 | prepended to a list of standard default values, which include the |
| 590 | string at point, the last isearch regexp, the last isearch string, and | 590 | tag at point, the last isearch regexp, the last isearch string, |
| 591 | the last replacement regexp. | 591 | and the last replacement regexp. |
| 592 | 592 | ||
| 593 | Non-nil HISTORY is a symbol to use for the history list. | 593 | Non-nil HISTORY is a symbol to use for the history list. |
| 594 | If HISTORY is nil, `regexp-history' is used." | 594 | If HISTORY is nil, `regexp-history' is used." |
| 595 | (let* ((default (if (consp defaults) (car defaults) defaults)) | 595 | (let* ((defaults |
| 596 | (defaults | ||
| 597 | (append | 596 | (append |
| 598 | (if (listp defaults) defaults (list defaults)) | 597 | (if (listp defaults) defaults (list defaults)) |
| 599 | (list (regexp-quote | 598 | (list |
| 600 | (or (funcall (or find-tag-default-function | 599 | ;; Regexp for tag at point. |
| 600 | (let* ((tagf (or find-tag-default-function | ||
| 601 | (get major-mode 'find-tag-default-function) | 601 | (get major-mode 'find-tag-default-function) |
| 602 | 'find-tag-default)) | 602 | 'find-tag-default)) |
| 603 | "")) | 603 | (tag (funcall tagf))) |
| 604 | (cond ((not tag) "") | ||
| 605 | ((eq tagf 'find-tag-default) | ||
| 606 | (format "\\_<%s\\_>" (regexp-quote tag))) | ||
| 607 | (t (regexp-quote tag)))) | ||
| 604 | (car regexp-search-ring) | 608 | (car regexp-search-ring) |
| 605 | (regexp-quote (or (car search-ring) "")) | 609 | (regexp-quote (or (car search-ring) "")) |
| 606 | (car (symbol-value | 610 | (car (symbol-value |
| 607 | query-replace-from-history-variable))))) | 611 | query-replace-from-history-variable))))) |
| 608 | (defaults (delete-dups (delq nil (delete "" defaults)))) | 612 | (defaults (delete-dups (delq nil (delete "" defaults)))) |
| 613 | (default (car defaults)) | ||
| 609 | ;; Do not automatically add default to the history for empty input. | 614 | ;; Do not automatically add default to the history for empty input. |
| 610 | (history-add-new-input nil) | 615 | (history-add-new-input nil) |
| 611 | (input (read-from-minibuffer | 616 | (input (read-from-minibuffer |
diff --git a/lisp/simple.el b/lisp/simple.el index 849f7dac55c..138c2420309 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -1293,13 +1293,12 @@ display the result of expression evaluation." | |||
| 1293 | 1293 | ||
| 1294 | ;; We define this, rather than making `eval' interactive, | 1294 | ;; We define this, rather than making `eval' interactive, |
| 1295 | ;; for the sake of completion of names like eval-region, eval-buffer. | 1295 | ;; for the sake of completion of names like eval-region, eval-buffer. |
| 1296 | (defun eval-expression (eval-expression-arg | 1296 | (defun eval-expression (exp &optional insert-value) |
| 1297 | &optional eval-expression-insert-value) | 1297 | "Evaluate EXP and print value in the echo area. |
| 1298 | "Evaluate EVAL-EXPRESSION-ARG and print value in the echo area. | ||
| 1299 | When called interactively, read an Emacs Lisp expression and | 1298 | When called interactively, read an Emacs Lisp expression and |
| 1300 | evaluate it. | 1299 | evaluate it. |
| 1301 | Value is also consed on to front of the variable `values'. | 1300 | Value is also consed on to front of the variable `values'. |
| 1302 | Optional argument EVAL-EXPRESSION-INSERT-VALUE non-nil (interactively, | 1301 | Optional argument INSERT-VALUE non-nil (interactively, |
| 1303 | with prefix argument) means insert the result into the current buffer | 1302 | with prefix argument) means insert the result into the current buffer |
| 1304 | instead of printing it in the echo area. Truncates long output | 1303 | instead of printing it in the echo area. Truncates long output |
| 1305 | according to the value of the variables `eval-expression-print-length' | 1304 | according to the value of the variables `eval-expression-print-length' |
| @@ -1315,12 +1314,12 @@ this command arranges for all errors to enter the debugger." | |||
| 1315 | current-prefix-arg)) | 1314 | current-prefix-arg)) |
| 1316 | 1315 | ||
| 1317 | (if (null eval-expression-debug-on-error) | 1316 | (if (null eval-expression-debug-on-error) |
| 1318 | (push (eval eval-expression-arg lexical-binding) values) | 1317 | (push (eval exp lexical-binding) values) |
| 1319 | (let ((old-value (make-symbol "t")) new-value) | 1318 | (let ((old-value (make-symbol "t")) new-value) |
| 1320 | ;; Bind debug-on-error to something unique so that we can | 1319 | ;; Bind debug-on-error to something unique so that we can |
| 1321 | ;; detect when evalled code changes it. | 1320 | ;; detect when evalled code changes it. |
| 1322 | (let ((debug-on-error old-value)) | 1321 | (let ((debug-on-error old-value)) |
| 1323 | (push (eval eval-expression-arg lexical-binding) values) | 1322 | (push (eval exp lexical-binding) values) |
| 1324 | (setq new-value debug-on-error)) | 1323 | (setq new-value debug-on-error)) |
| 1325 | ;; If evalled code has changed the value of debug-on-error, | 1324 | ;; If evalled code has changed the value of debug-on-error, |
| 1326 | ;; propagate that change to the global binding. | 1325 | ;; propagate that change to the global binding. |
| @@ -1328,8 +1327,9 @@ this command arranges for all errors to enter the debugger." | |||
| 1328 | (setq debug-on-error new-value)))) | 1327 | (setq debug-on-error new-value)))) |
| 1329 | 1328 | ||
| 1330 | (let ((print-length eval-expression-print-length) | 1329 | (let ((print-length eval-expression-print-length) |
| 1331 | (print-level eval-expression-print-level)) | 1330 | (print-level eval-expression-print-level) |
| 1332 | (if eval-expression-insert-value | 1331 | (deactivate-mark)) |
| 1332 | (if insert-value | ||
| 1333 | (with-no-warnings | 1333 | (with-no-warnings |
| 1334 | (let ((standard-output (current-buffer))) | 1334 | (let ((standard-output (current-buffer))) |
| 1335 | (prin1 (car values)))) | 1335 | (prin1 (car values)))) |
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog index 72842ad188d..f8f24de6b68 100644 --- a/lisp/url/ChangeLog +++ b/lisp/url/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2013-02-16 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * url-http.el (url-http-wait-for-headers-change-function): | ||
| 4 | Avoid prematurely finding the end of headers when they arrive | ||
| 5 | line-by-line. (Bug#13598) | ||
| 6 | |||
| 1 | 2013-02-03 Stefan Monnier <monnier@iro.umontreal.ca> | 7 | 2013-02-03 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 8 | ||
| 3 | * url-cache.el (url-cache-create-filename-using-md5): Don't waste your | 9 | * url-cache.el (url-cache-create-filename-using-md5): Don't waste your |
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el index 5dd3a751702..33fc5722759 100644 --- a/lisp/url/url-http.el +++ b/lisp/url/url-http.el | |||
| @@ -1040,7 +1040,9 @@ the end of the document." | |||
| 1040 | (setq end-of-headers t | 1040 | (setq end-of-headers t |
| 1041 | url-http-end-of-headers 0 | 1041 | url-http-end-of-headers 0 |
| 1042 | old-http t) | 1042 | old-http t) |
| 1043 | (when (re-search-forward "^\r*$" nil t) | 1043 | ;; Blank line at end of headers. |
| 1044 | (when (re-search-forward "^\r?\n" nil t) | ||
| 1045 | (backward-char 1) | ||
| 1044 | ;; Saw the end of the headers | 1046 | ;; Saw the end of the headers |
| 1045 | (url-http-debug "Saw end of headers... (%s)" (buffer-name)) | 1047 | (url-http-debug "Saw end of headers... (%s)" (buffer-name)) |
| 1046 | (setq url-http-end-of-headers (set-marker (make-marker) | 1048 | (setq url-http-end-of-headers (set-marker (make-marker) |