emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/progmodes/cc-vars.el [lexbind]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/progmodes/cc-vars.el [lexbind]
Date: Sat, 04 Sep 2004 05:42:26 -0400

Index: emacs/lisp/progmodes/cc-vars.el
diff -c emacs/lisp/progmodes/cc-vars.el:1.21.2.3 
emacs/lisp/progmodes/cc-vars.el:1.21.2.4
*** emacs/lisp/progmodes/cc-vars.el:1.21.2.3    Fri Nov 21 00:35:51 2003
--- emacs/lisp/progmodes/cc-vars.el     Sat Sep  4 09:22:57 2004
***************
*** 271,282 ****
  
  (defcustom c-tab-always-indent t
    "*Controls the operation of the TAB key.
! If t, hitting TAB always just indents the current line.  If nil,
! hitting TAB indents the current line if point is at the left margin or
! in the line's indentation, otherwise it insert a `real' tab character
! \(see note\).  If the symbol `other', then tab is inserted only within
! literals -- defined as comments and strings -- and inside preprocessor
! directives, but the line is always reindented.
  
  Note: The value of `indent-tabs-mode' will determine whether a real
  tab character will be inserted, or the equivalent number of spaces.
--- 271,282 ----
  
  (defcustom c-tab-always-indent t
    "*Controls the operation of the TAB key.
! If t, hitting TAB always just indents the current line.  If nil, hitting
! TAB indents the current line if point is at the left margin or in the
! line's indentation, otherwise it inserts a `real' tab character \(see
! note\).  If some other value (not nil or t), then tab is inserted only
! within literals \(comments and strings), but the line is always
! reindented.
  
  Note: The value of `indent-tabs-mode' will determine whether a real
  tab character will be inserted, or the equivalent number of spaces.
***************
*** 1546,1685 ****
  (make-variable-buffer-local 'c-current-comment-prefix)
  
  
- ;; Figure out what features this Emacs has
- 
- (cc-bytecomp-defvar open-paren-in-column-0-is-defun-start)
- 
- (defconst c-emacs-features
-   (let (list)
- 
-     (if (boundp 'infodock-version)
-       ;; I've no idea what this actually is, but it's legacy. /mast
-       (setq list (cons 'infodock list)))
- 
-     ;; XEmacs 19 and beyond use 8-bit modify-syntax-entry flags.
-     ;; Emacs 19 uses a 1-bit flag.  We will have to set up our
-     ;; syntax tables differently to handle this.
-     (let ((table (copy-syntax-table))
-         entry)
-       (modify-syntax-entry ?a ". 12345678" table)
-       (cond
-        ;; XEmacs 19, and beyond Emacs 19.34
-        ((arrayp table)
-       (setq entry (aref table ?a))
-       ;; In Emacs, table entries are cons cells
-       (if (consp entry) (setq entry (car entry))))
-        ;; XEmacs 20
-        ((fboundp 'get-char-table) (setq entry (get-char-table ?a table)))
-        ;; before and including Emacs 19.34
-        ((and (fboundp 'char-table-p)
-            (char-table-p table))
-       (setq entry (car (char-table-range table [?a]))))
-        ;; incompatible
-        (t (error "CC Mode is incompatible with this version of Emacs")))
-       (setq list (cons (if (= (logand (lsh entry -16) 255) 255)
-                          '8-bit
-                        '1-bit)
-                      list)))
- 
-     (let ((buf (generate-new-buffer " test"))
-         parse-sexp-lookup-properties
-         parse-sexp-ignore-comments
-         lookup-syntax-properties)
-       (save-excursion
-       (set-buffer buf)
-       (set-syntax-table (make-syntax-table))
- 
-       ;; For some reason we have to set some of these after the
-       ;; buffer has been made current.  (Specifically,
-       ;; `parse-sexp-ignore-comments' in Emacs 21.)
-       (setq parse-sexp-lookup-properties t
-             parse-sexp-ignore-comments t
-             lookup-syntax-properties t)
- 
-       ;; Find out if the `syntax-table' text property works.
-       (modify-syntax-entry ?< ".")
-       (modify-syntax-entry ?> ".")
-       (insert "<()>")
-       (c-mark-<-as-paren 1)
-       (c-mark->-as-paren 4)
-       (goto-char 1)
-       (c-forward-sexp)
-       (if (= (point) 5)
-           (setq list (cons 'syntax-properties list)))
- 
-       ;; Find out if generic comment delimiters work.
-       (c-safe
-         (modify-syntax-entry ?x "!")
-         (if (string-match "\\s!" "x")
-             (setq list (cons 'gen-comment-delim list))))
- 
-       ;; Find out if generic string delimiters work.
-       (c-safe
-         (modify-syntax-entry ?x "|")
-         (if (string-match "\\s|" "x")
-             (setq list (cons 'gen-string-delim list))))
- 
-       ;; See if `open-paren-in-column-0-is-defun-start' exists and
-       ;; isn't buggy.
-       (when (boundp 'open-paren-in-column-0-is-defun-start)
-         (let ((open-paren-in-column-0-is-defun-start nil)
-               (parse-sexp-ignore-comments t))
-           (set-syntax-table (make-syntax-table))
-           (modify-syntax-entry ?\' "\"")
-           (cond
-            ;; XEmacs.  Afaik this is currently an Emacs-only
-            ;; feature, but it's good to be prepared.
-            ((memq '8-bit list)
-             (modify-syntax-entry ?/ ". 1456")
-             (modify-syntax-entry ?* ". 23"))
-            ;; Emacs
-            ((memq '1-bit list)
-             (modify-syntax-entry ?/ ". 124b")
-             (modify-syntax-entry ?* ". 23")))
-           (modify-syntax-entry ?\n "> b")
-           (insert "/* '\n   () */")
-           (backward-sexp)
-           (if (bobp)
-               (setq list (cons 'col-0-paren list))))
-         (kill-buffer buf))
- 
-       (set-buffer-modified-p nil))
-       (kill-buffer buf))
- 
-     ;; See if `parse-partial-sexp' returns the eighth element.
-     (when (c-safe (>= (length (save-excursion (parse-partial-sexp 1 1))) 10))
-       (setq list (cons 'pps-extended-state list)))
- 
-     ;; See if POSIX char classes work.
-     (when (string-match "[[:alpha:]]" "a")
-       (setq list (cons 'posix-char-classes list)))
- 
-     list)
-   "A list of certain features in the (X)Emacs you are using.
- There are many flavors of Emacs out there, each with different
- features supporting those needed by CC Mode.  The following values
- might be present:
- 
- '8-bit              8 bit syntax entry flags (XEmacs style).
- '1-bit              1 bit syntax entry flags (Emacs style).
- 'syntax-properties  It works to override the syntax for specific characters
-                   in the buffer with the 'syntax-table property.
- 'gen-comment-delim  Generic comment delimiters work
-                   (i.e. the syntax class `!').
- 'gen-string-delim   Generic string delimiters work
-                   (i.e. the syntax class `|').
- 'pps-extended-state `parse-partial-sexp' returns a list with at least 10
-                   elements, i.e. it contains the position of the
-                   start of the last comment or string.
- 'posix-char-classes The regexp engine understands POSIX character classes.
- 'col-0-paren        It's possible to turn off the ad-hoc rule that a paren
-                   in column zero is the start of a defun.
- 'infodock           This is Infodock (based on XEmacs).
- 
- '8-bit and '1-bit are mutually exclusive.")
- 
- 
  (cc-provide 'cc-vars)
  
  ;;; arch-tag: d62e9a55-c9fe-409b-b5b6-050b6aa202c9
--- 1546,1551 ----




reply via email to

[Prev in Thread] Current Thread [Next in Thread]