summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/pp.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp/pp.el')
-rw-r--r--lisp/emacs-lisp/pp.el9
1 files changed, 8 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el
index 3e75807f757..c183f442d8d 100644
--- a/lisp/emacs-lisp/pp.el
+++ b/lisp/emacs-lisp/pp.el
@@ -208,7 +208,14 @@ it inserts and pretty-prints that arg at point."
(while
(progn
(funcall avoid-unbreakable)
- (not (zerop (skip-chars-backward " \t({[',.")))))
+ (let ((pos (point)))
+ (skip-chars-backward " \t({[',.")
+ (while (and (memq (char-after) '(?\. ?\{))
+ (not (memq (char-before)
+ '(nil ?\n ?\) \" ?\]))))
+ ;; `.' and `{' within symbols? (Bug#76715)
+ (forward-char 1))
+ (not (eql pos (point))))))
(if (bolp)
;; The sexp already starts on its own line.
(progn (goto-char beg) nil)