diff lisp/progmodes/cc-langs.el @ 24282:5b0864259a4b Release_5_25

Installed CC Mode 5.25.
author Barry A. Warsaw <barry@zope.org>
date Mon, 08 Feb 1999 16:53:18 +0000
parents 76aa8f3934bf
children 03befb219d03
line wrap: on
line diff
--- a/lisp/progmodes/cc-langs.el	Mon Feb 08 16:52:35 1999 +0000
+++ b/lisp/progmodes/cc-langs.el	Mon Feb 08 16:53:18 1999 +0000
@@ -2,10 +2,11 @@
 
 ;; Copyright (C) 1985,87,92,93,94,95,96,97,98 Free Software Foundation, Inc.
 
-;; Authors:    1992-1997 Barry A. Warsaw
+;; Authors:    1998 Barry A. Warsaw and Martin Stjernholm
+;;             1992-1997 Barry A. Warsaw
 ;;             1987 Dave Detlefs and Stewart Clamen
 ;;             1985 Richard M. Stallman
-;; Maintainer: cc-mode-help@python.org
+;; Maintainer: bug-cc-mode@gnu.org
 ;; Created:    22-Apr-1997 (split from cc-mode.el)
 ;; Version:    See cc-mode.el
 ;; Keywords:   c languages oop
@@ -29,7 +30,8 @@
 
 
 
-(require 'cc-defs)
+(eval-when-compile
+  (require 'cc-defs))
 
 ;; Regular expressions and other values which must be parameterized on
 ;; a per-language basis.
@@ -54,8 +56,10 @@
 ;; keywords introducing class definitions.  language specific
 (defconst c-C-class-key "\\(struct\\|union\\)")
 (defconst c-C++-class-key "\\(class\\|struct\\|union\\)")
-(defconst c-C-extra-toplevel-key "\\(extern\\)[^_]")
-(defconst c-C++-extra-toplevel-key "\\(extern\\|namespace\\)[^_]")
+(defconst c-IDL-class-key "\\(class\\|struct\\|union\\|interface\\)")
+(defconst c-C-extra-toplevel-key "\\(extern\\)")
+(defconst c-C++-extra-toplevel-key "\\(extern\\|namespace\\)")
+(defconst c-IDL-extra-toplevel-key "\\(module\\)")
 
 (defconst c-ObjC-class-key
   (concat
@@ -70,10 +74,12 @@
    "\\(" c-protection-key "\\s +\\)?"
    "\\(interface\\|class\\)\\s +"
    c-symbol-key				      ;name of the class
-   "\\(\\s *extends\\s *" c-symbol-key "\\)?" ;maybe followed by superclass 
+   "\\(\\s *extends\\s *" c-symbol-key "\\)?" ;maybe followed by superclass
    ;;"\\(\\s *implements *[^{]+{\\)?"	      ;maybe the adopted protocols list
    ))
 
+(defconst c-Pike-class-key "class")
+
 (defvar c-class-key c-C-class-key)
 (make-variable-buffer-local 'c-class-key)
 
@@ -87,12 +93,14 @@
 (defconst c-C++-access-key (concat c-protection-key "[ \t]*:"))
 (defconst c-ObjC-access-key (concat "@" c-protection-key))
 (defconst c-Java-access-key nil)
+(defconst c-Pike-access-key nil)
 
 
 ;; keywords introducing conditional blocks
 (defconst c-C-conditional-key nil)
 (defconst c-C++-conditional-key nil)
 (defconst c-Java-conditional-key nil)
+(defconst c-Pike-conditional-key nil)
 
 (let ((all-kws "for\\|if\\|do\\|else\\|while\\|switch")
       (exc-kws "\\|try\\|catch")
@@ -101,7 +109,8 @@
       (back    "\\)\\b[^_]"))
   (setq c-C-conditional-key (concat front all-kws back)
 	c-C++-conditional-key (concat front all-kws exc-kws back)
-	c-Java-conditional-key (concat front all-kws exc-kws thr-kws back)))
+	c-Java-conditional-key (concat front all-kws exc-kws thr-kws back)
+	c-Pike-conditional-key (concat front all-kws "\\|foreach" back)))
 
 (defvar c-conditional-key c-C-conditional-key)
 (make-variable-buffer-local 'c-conditional-key)
@@ -166,6 +175,30 @@
 (defconst c-Java-javadoc-paragraph-start
   "@\\(author\\|exception\\|param\\|return\\|see\\|version\\)")
 
+;; Regexp that starts lambda constructs.
+(defvar c-lambda-key nil)
+(make-variable-buffer-local 'c-lambda-key)
+(defconst c-Pike-lambda-key "\\<lambda\\>")
+
+;; Regexp that are followed by a statement block in expressions.
+(defvar c-inexpr-block-key nil)
+(make-variable-buffer-local 'c-inexpr-block-key)
+(defconst c-Pike-inexpr-block-key "\\<\\(catch\\|gauge\\)\\>")
+
+;; Regexp that may be followed by an anonymous class in expressions.
+(defvar c-inexpr-class-key nil)
+(make-variable-buffer-local 'c-inexpr-class-key)
+(defconst c-Java-inexpr-class-key "\\<new\\>")
+
+;; List of open- and close-chars that makes up a pike-style brace
+;; list, ie for a `([ ])' list there should be a cons (?\[ . ?\]) in
+;; this list.
+(defvar c-special-brace-lists nil)
+(make-variable-buffer-local 'c-special-brace-lists)
+(defconst c-Pike-special-brace-lists '((?{ . ?})
+				       (?\[ . ?\])
+				       (?< . ?>)))
+
 
 
 ;; internal state variables
@@ -188,11 +221,6 @@
 
 
 
-(defun c-use-java-style ()
-  "Institutes `java' indentation style.
-For use with the variable `java-mode-hook'."
-  (c-set-style "java"))
-
 (defun c-common-init ()
   ;; Common initializations for all modes.
   ;; these variables should always be buffer local; they do not affect
@@ -212,6 +240,7 @@
   (make-local-variable 'outline-regexp)
   (make-local-variable 'outline-level)
   (make-local-variable 'adaptive-fill-regexp)
+  (make-local-variable 'adaptive-fill-mode)
   (make-local-variable 'imenu-generic-expression) ;set in the mode functions
   ;; X/Emacs 20 only
   (and (boundp 'comment-line-break-function)
@@ -235,7 +264,8 @@
 	comment-start-skip "/\\*+ *\\|// *"
 	comment-multi-line nil
 	comment-line-break-function 'c-comment-line-break-function
-	adaptive-fill-regexp nil)
+	adaptive-fill-regexp nil
+	adaptive-fill-mode nil)
   ;; we have to do something special for c-offsets-alist so that the
   ;; buffer local value has its own alist structure.
   (setq c-offsets-alist (copy-alist c-offsets-alist))
@@ -249,7 +279,17 @@
   (or (assq 'c-auto-hungry-string minor-mode-alist)
       (setq minor-mode-alist
 	    (cons '(c-auto-hungry-string c-auto-hungry-string)
-		  minor-mode-alist))))
+		  minor-mode-alist)))
+  ;; now set the mode style based on c-default-style
+  (c-set-style (if (stringp c-default-style)
+		   (if (c-major-mode-is 'java-mode)
+		       "java"
+		     c-default-style)
+		 (or (cdr (assq major-mode c-default-style))
+		     (cdr (assq 'other c-default-style))
+		     "gnu")))
+  )
+
 
 (defun c-postprocess-file-styles ()
   "Function that post processes relevant file local variables.
@@ -277,6 +317,9 @@
 (add-hook 'hack-local-variables-hook 'c-postprocess-file-styles)
 
 
+(defvar c-mode-base-map ()
+  "Keymap shared by all CC Mode related modes.")
+
 ;; Common routines
 (defun c-make-inherited-keymap ()
   (let ((map (make-sparse-keymap)))
@@ -325,9 +368,6 @@
   (modify-syntax-entry ?\^m "> b" table))
 
 
-(defvar c-mode-base-map ()
-  "Keymap shared by all CC Mode related modes.")
-
 (if c-mode-base-map
     nil
   ;; TBD: should we even worry about naming this keymap. My vote: no,
@@ -340,6 +380,8 @@
   (define-key c-mode-base-map ";"         'c-electric-semi&comma)
   (define-key c-mode-base-map "#"         'c-electric-pound)
   (define-key c-mode-base-map ":"         'c-electric-colon)
+  (define-key c-mode-base-map "("         'c-electric-paren)
+  (define-key c-mode-base-map ")"         'c-electric-paren)
   ;; Separate M-BS from C-M-h.  The former should remain
   ;; backward-kill-word.
   (define-key c-mode-base-map [(control meta h)] 'c-mark-function)
@@ -396,26 +438,27 @@
 (defvar c-c++-menu nil)
 (defvar c-objc-menu nil)
 (defvar c-java-menu nil)
+(defvar c-pike-menu nil)
 
 (defun c-mode-menu (modestr)
   (let ((m
-	 '(["Comment Out Region"     comment-region (mark t)]
+	 '(["Comment Out Region"     comment-region (c-region-is-active-p)]
 	   ["Uncomment Region"
 	    (comment-region (region-beginning) (region-end) '(4))
-	    (mark t)]
+	    (c-region-is-active-p)]
 	   ["Fill Comment Paragraph" c-fill-paragraph t]
 	   "---"
 	   ["Indent Expression"      c-indent-exp
 	    (memq (char-after) '(?\( ?\[ ?\{))]
-	   ["Indent Line"            c-indent-command t]
+	   ["Indent Line or Region"  c-indent-line-or-region t]
 	   ["Up Conditional"         c-up-conditional t]
 	   ["Backward Conditional"   c-backward-conditional t]
 	   ["Forward Conditional"    c-forward-conditional t]
 	   ["Backward Statement"     c-beginning-of-statement t]
 	   ["Forward Statement"      c-end-of-statement t]
 	   "---"
-	   ["Macro Expand Region"    c-macro-expand (mark t)]
-	   ["Backslashify"           c-backslash-region (mark t)]
+	   ["Macro Expand Region"    c-macro-expand (c-region-is-active-p)]
+	   ["Backslashify"           c-backslash-region (c-region-is-active-p)]
 	   )))
     (cons modestr m)))
 
@@ -564,6 +607,33 @@
 (easy-menu-define c-idl-menu idl-mode-map "IDL Mode Commands"
 		  (c-mode-menu "IDL"))
 
+
+;; Support for Pike
+
+(defvar pike-mode-abbrev-table nil
+  "Abbreviation table used in pike-mode buffers.")
+(define-abbrev-table 'pike-mode-abbrev-table ())
+
+(defvar pike-mode-map ()
+  "Keymap used in pike-mode buffers.")
+(if pike-mode-map
+    nil
+  (setq pike-mode-map (c-make-inherited-keymap))
+  ;; additional bindings
+  (define-key pike-mode-map "\C-c\C-e" 'c-macro-expand))
+
+;;;###autoload
+(defvar pike-mode-syntax-table nil
+  "Syntax table used in pike-mode buffers.")
+(if pike-mode-syntax-table
+    ()
+  (setq pike-mode-syntax-table (make-syntax-table))
+  (c-populate-syntax-table pike-mode-syntax-table)
+  (modify-syntax-entry ?@ "." pike-mode-syntax-table))
+
+(easy-menu-define c-pike-menu pike-mode-map "Pike Mode Commands"
+		  (c-mode-menu "Pike"))
+
 
 
 (provide 'cc-langs)