changeset 18024:58afe194f1bd

Update for syntax-table text properties. sh-script.el now directs font-lock.el to add them to instances of # which are not comments.
author Simon Marshall <simon@gnu.org>
date Thu, 29 May 1997 07:04:00 +0000
parents 12fc8bc96c58
children 9f9f522cdc27
files lisp/progmodes/sh-script.el
diffstat 1 files changed, 12 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/sh-script.el	Thu May 29 07:01:36 1997 +0000
+++ b/lisp/progmodes/sh-script.el	Thu May 29 07:04:00 1997 +0000
@@ -224,7 +224,6 @@
 	?\" "\"\""
 	?\' "\"'"
 	?\` "\"`"
-	?$ "\\"			    ; `escape' so $# doesn't start a comment
 	?! "_"
 	?% "_"
 	?: "_"
@@ -605,15 +604,18 @@
 	   '("\\\\[^A-Za-z0-9]" 0 font-lock-string-face)
 	   '("\\${?\\([A-Za-z_][A-Za-z0-9_]*\\|[0-9]+\\|[$*_]\\)" 1
 	     font-lock-variable-name-face)))
-  "*Rules for highlighting shell scripts.  See `sh-feature'.")
+  "Default expressions to highlight in Shell Script modes.  See `sh-feature'.")
 
 (defvar sh-font-lock-keywords-1
   '((sh "[ \t]in\\>"))
-  "*Additional rules for highlighting shell scripts.  See `sh-feature'.")
+  "Subdued level highlighting for Shell Script modes.")
 
 (defvar sh-font-lock-keywords-2 ()
-  "*Yet more rules for highlighting shell scripts.  See `sh-feature'.")
+  "Gaudy level highlighting for Shell Script modes.")
 
+(defconst sh-font-lock-syntactic-keywords
+  ;; Mark a `#' character as having punctuation syntax in a variable reference.
+  '(("\\$[({]?\\(#\\)" 1 (1 . nil))))
 
 ;; mode-command and utility functions
 
@@ -709,12 +711,11 @@
 	;; we can't look if previous line ended with `\'
 	comint-prompt-regexp "^[ \t]*"
 	font-lock-defaults
-	  `((sh-font-lock-keywords
-	     sh-font-lock-keywords-1
-	     sh-font-lock-keywords-2)
-	    nil nil
-	    ((?/ . "w") (?~ . "w") (?. . "w") (?- . "w") (?_ . "w")) nil
-	    (font-lock-comment-start-regexp . "#"))
+	'((sh-font-lock-keywords
+	   sh-font-lock-keywords-1 sh-font-lock-keywords-2)
+	  nil nil
+	  ((?/ . "w") (?~ . "w") (?. . "w") (?- . "w") (?_ . "w")) nil
+	  (font-lock-syntactic-keywords . sh-font-lock-syntactic-keywords))
 	skeleton-pair-alist '((?` _ ?`))
 	skeleton-pair-filter 'sh-quoted-p
 	skeleton-further-elements '((< '(- (min sh-indentation
@@ -727,8 +728,7 @@
 	 (save-excursion
 	   (goto-char (point-min))
 	   (if (looking-at "#![ \t]?\\([^ \t\n]*/bin/env[ \t]\\)?\\([^ \t\n]+\\)")
-	       (buffer-substring (match-beginning 2)
-				 (match-end 2))))))
+	       (match-string 2)))))
     (if interpreter
 	(sh-set-shell interpreter nil nil)
       ;; If we don't know the shell for this file,