aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/progmodes
diff options
context:
space:
mode:
authorStefan Monnier <[email protected]>2005-07-13 04:55:42 +0000
committerStefan Monnier <[email protected]>2005-07-13 04:55:42 +0000
commit090475f391ceb175048e0610bcfabffd8d5a0241 (patch)
treef7c51aea13e58c37040df5a11e8eaf5c2b3f37c8 /lisp/progmodes
parent8a08764f7a72eb062a85733b045fb50291d6aee9 (diff)
(sh-get-indent-info): Only indent a continuation line if SPC or TAB precedes \.
(sh-get-indent-info): Simplify. (sh-mark-init, sh-learn-buffer-indent, sh-add-completer): with-current-buffer.
Diffstat (limited to 'lisp/progmodes')
-rw-r--r--lisp/progmodes/sh-script.el38
1 files changed, 21 insertions, 17 deletions
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 3261f7bcc9..99e367a863 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -2033,11 +2033,20 @@ STRING This is ignored for the purposes of calculating
;; Continuation lines are handled specially
(if (sh-this-is-a-continuation)
(progn
- ;; We assume the line being continued is already
- ;; properly indented...
- ;; (setq prev-line-end (sh-prev-line))
- (setq align-point (sh-prev-line nil))
- (setq result (list '(+ sh-indent-for-continuation)))
+ (setq result
+ (if (save-excursion
+ (beginning-of-line)
+ (not (memq (char-before (- (point) 2)) '(?\s ?\t))))
+ ;; By convention, if the continuation \ is not
+ ;; preceded by a SPC or a TAB it means that the line
+ ;; is cut at a place where spaces cannot be freely
+ ;; added/removed. I.e. do not indent the line.
+ (list '(= nil))
+ ;; We assume the line being continued is already
+ ;; properly indented...
+ ;; (setq prev-line-end (sh-prev-line))
+ (setq align-point (sh-prev-line nil))
+ (list '(+ sh-indent-for-continuation))))
(setq have-result t))
(beginning-of-line)
(skip-chars-forward " \t")
@@ -2130,10 +2139,9 @@ STRING This is ignored for the purposes of calculating
(sh-debug "result is now: %s" result)
(or result
- (if prev-line-end
- (setq result (list (list t prev-line-end)))
- (setq result (list (list '= 'sh-first-lines-indent)))
- ))
+ (setq result (list (if prev-line-end
+ (list t prev-line-end)
+ (list '= 'sh-first-lines-indent)))))
(if (eq result t)
(setq result nil))
@@ -2695,11 +2703,9 @@ unless optional argument ARG (the prefix when interactive) is non-nil."
(defun sh-mark-init (buffer)
"Initialize a BUFFER to be used by `sh-mark-line'."
- (save-excursion
- (set-buffer (get-buffer-create buffer))
+ (with-current-buffer (get-buffer-create buffer)
(erase-buffer)
- (occur-mode)
- ))
+ (occur-mode)))
(defun sh-mark-line (message point buffer &optional add-linenum occur-point)
@@ -2972,8 +2978,7 @@ This command can often take a long time to run."
(let ((var (car learned-var)))
(sh-mark-line (format " %s %s" var (symbol-value var))
(nth 2 learned-var) out-buffer)))
- (save-excursion
- (set-buffer out-buffer)
+ (with-current-buffer out-buffer
(goto-char (point-min))
(insert
(format "Indentation values for buffer %s.\n" name)
@@ -3244,8 +3249,7 @@ nil means to return the best completion of STRING, or nil if there is none.
t means to return a list of all possible completions of STRING.
`lambda' means to return t if STRING is a valid completion as it stands."
(let ((sh-shell-variables
- (save-excursion
- (set-buffer sh-add-buffer)
+ (with-current-buffer sh-add-buffer
(or sh-shell-variables-initialized
(sh-shell-initialize-variables))
(nconc (mapcar (lambda (var)