changeset 12887:cbed067bf52d

(sh-newline-and-indent): Don't interpret prefix arg since `newline-and-indent' doesn't either. Don't turn a trailing quoted tab into a space. (sh-mode): Use new `skeleton-newline-indent-rigidly'. (sh-set-shell): Make maximum font-locking also hightlight keywords after ``' and `!'. (The latter is for ksh '93 but should't hurt other shells.)
author Karl Heuer <kwzh@gnu.org>
date Sat, 19 Aug 1995 00:30:56 +0000
parents 4029ded28f9d
children 684378ed4f45
files lisp/progmodes/sh-script.el
diffstat 1 files changed, 15 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/sh-script.el	Sat Aug 19 00:30:38 1995 +0000
+++ b/lisp/progmodes/sh-script.el	Sat Aug 19 00:30:56 1995 +0000
@@ -633,6 +633,7 @@
   (make-local-variable 'comint-prompt-regexp)
   (make-local-variable 'font-lock-keywords-case-fold-search)
   (make-local-variable 'skeleton-filter)
+  (make-local-variable 'skeleton-newline-indent-rigidly)
   (make-local-variable 'process-environment)
   (setq major-mode 'sh-mode
 	mode-name "Shell-script"
@@ -651,7 +652,8 @@
 	skeleton-pair-filter 'sh-quoted-p
 	skeleton-further-elements '((< '(- (min sh-indentation
 						(current-column)))))
-	skeleton-filter 'sh-feature)
+	skeleton-filter 'sh-feature
+	skeleton-newline-indent-rigidly t)
   ;; parse or insert magic number for exec() and set all variables depending
   ;; on the shell thus determined
   (goto-char (point-min))
@@ -688,7 +690,7 @@
 	       (,(sh-feature sh-assignment-regexp)
 		1 font-lock-variable-name-face)
 	       ,@(if font-lock-maximum-decoration
-		     `((,(concat "\\(^\\|[|&;()]\\)[ \t]*\\(\\(\\("
+		     `((,(concat "\\(^\\|[|&;()`!]\\)[ \t]*\\(\\(\\("
 				 (mapconcat 'identity
 					    (sh-feature sh-leading-keywords)
 					    "\\|")
@@ -1291,20 +1293,17 @@
 
 
 
-(defun sh-newline-and-indent (&optional arg)
-  "Strip unquoted whitespace, insert newline, and indent like current line.
-Unquoted whitespace is stripped from the current line's end, unless a
-prefix ARG is given."
-  (interactive "*P")
-  (let ((previous (current-indentation)))
-    (if arg ()
-      (just-one-space)
-      (backward-char)
-      (if (sh-quoted-p)
-	  (forward-char)
-	(delete-char 1)))
-    (newline)
-    (indent-to previous)))
+(defun sh-newline-and-indent ()
+  "Strip unquoted whitespace, insert newline, and indent like current line."
+  (interactive "*")
+  (indent-to (prog1 (current-indentation)
+	       (delete-region (point)
+			      (progn
+				(or (zerop (skip-chars-backward " \t"))
+				    (if (sh-quoted-p)
+					(forward-char)))
+				(point)))
+	       (newline))))