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 Chong Yidong <cyd@stupidchicken.com>
+
+ * 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 <aaron.s.hawley@gmail.com>
* textmodes/sgml-mode.el (sgml-tag-help): Prompt user for tag.
(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)
(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.
(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.