From 7346a407f45d7eaff6ef8742bc054b7e3a9c17c0 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 18 Oct 2009 22:25:36 +0000 Subject: [PATCH] * minibuffer.el (read-file-name): Check for repeat before putting a default argument in file-name-history (Bug#4657). * emacs-lisp/lisp-mode.el (preceding-sexp): Recognize hash table read syntax (Bug#4737). * textmodes/sgml-mode.el (sgml-delete-tag): Use sgml-looking-back-at. --- lisp/ChangeLog | 11 +++++++++++ lisp/emacs-lisp/lisp-mode.el | 5 +++++ lisp/minibuffer.el | 8 ++++++-- lisp/textmodes/sgml-mode.el | 2 +- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 39829c2c3d..e689b83cf0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,14 @@ +2009-10-18 Chong Yidong + + * minibuffer.el (read-file-name): Check for repeat before putting + a default argument in file-name-history (Bug#4657). + + * emacs-lisp/lisp-mode.el (preceding-sexp): Recognize hash table + read syntax (Bug#4737). + + * textmodes/sgml-mode.el (sgml-delete-tag): Use + sgml-looking-back-at. + 2009-10-18 Aaron S. Hawley * textmodes/sgml-mode.el (sgml-tag-help): Prompt user for tag. diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index b9b7c6ad8f..362c75a8ca 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -673,6 +673,11 @@ If CHAR is not a character, return nil." (when (eq (preceding-char) ??) (forward-char -1))) + ;; Skip over hash table read syntax. + (and (> (point) (1+ (point-min))) + (looking-back "#s" (- (point) 2)) + (forward-char -2)) + ;; Skip over `#N='s. (when (eq (preceding-char) ?=) (let (labeled-p) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index ca2a5fc6b6..c8bb26002a 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1289,12 +1289,16 @@ and `read-file-name-function'." (if replace-in-history ;; Replace what Fcompleting_read added to the history - ;; with what we will actually return. + ;; with what we will actually return. As an exception, + ;; if that's the same as the second item in + ;; file-name-history, it's really a repeat (Bug#4657). (let ((val1 (minibuffer--double-dollars val))) (if history-delete-duplicates (setcdr file-name-history (delete val1 (cdr file-name-history)))) - (setcar file-name-history val1)) + (if (string= val1 (cadr file-name-history)) + (pop file-name-history) + (setcar file-name-history val1))) (if add-to-history ;; Add the value to the history--but not if it matches ;; the last value already there. diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index d009e77adb..ff3054423b 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -909,7 +909,7 @@ With prefix argument ARG, repeat this ARG times." (kill-sexp 1)) (setq open (point)) (when (and (sgml-skip-tag-forward 1) - (not (looking-back "/>"))) + (not (sgml-looking-back-at "/>"))) (kill-sexp -1))) ;; Delete any resulting empty line. If we didn't kill-sexp, ;; this *should* do nothing, because we're right after the tag. -- 2.20.1