;;; cc-defs.el --- compile time definitions for CC Mode
;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
;; Free Software Foundation, Inc.
;; Authors: 2003- Alan Mackenzie
;; 1998- Martin Stjernholm
;; 1992-1999 Barry A. Warsaw
-;; 1987 Dave Detlefs and Stewart Clamen
+;; 1987 Dave Detlefs
+;; 1987 Stewart Clamen
;; 1985 Richard M. Stallman
;; Maintainer: bug-cc-mode@gnu.org
;; Created: 22-Apr-1997 (split from cc-mode.el)
\f
;;; Variables also used at compile time.
-(defconst c-version "5.31.5"
+(defconst c-version "5.31.7"
"CC Mode version number.")
(defconst c-version-sym (intern c-version))
This macro should be placed around all calculations which set
\"insignificant\" text properties in a buffer, even when the buffer is
-known to be writeable. That way, these text properties remain set
+known to be writable. That way, these text properties remain set
even if the user undoes the command which set them.
This macro should ALWAYS be placed around \"temporary\" internal buffer
(or (memq property prop)
(put-text-property pos (1+ pos)
'rear-nonsticky
- (cons property prop))))))))))
+ (cons property prop)))))))
+ ;; This won't be used for anything.
+ (t 'ignore))))
(cc-bytecomp-defun c-put-char-property-fun) ; Make it known below.
(defmacro c-put-char-property (pos property value)
'1-bit)
list)))
+ ;; Check whether beginning/end-of-defun call
+ ;; beginning/end-of-defun-function nicely, passing through the
+ ;; argument and respecting the return code.
+ (let* (mark-ring
+ (bod-param 'foo) (eod-param 'foo)
+ (beginning-of-defun-function
+ (lambda (&optional arg)
+ (or (eq bod-param 'foo) (setq bod-param 'bar))
+ (and (eq bod-param 'foo)
+ (setq bod-param arg)
+ (eq arg 3))))
+ (end-of-defun-function
+ (lambda (&optional arg)
+ (and (eq eod-param 'foo)
+ (setq eod-param arg)
+ (eq arg 3)))))
+ (if (save-excursion (and (beginning-of-defun 3) (eq bod-param 3)
+ (not (beginning-of-defun))
+ (end-of-defun 3) (eq eod-param 3)
+ (not (end-of-defun))))
+ (setq list (cons 'argumentative-bod-function list))))
+
(let ((buf (generate-new-buffer " test"))
parse-sexp-lookup-properties
parse-sexp-ignore-comments
lookup-syntax-properties)
- (save-excursion
- (set-buffer buf)
+ (with-current-buffer buf
(set-syntax-table (make-syntax-table))
;; For some reason we have to set some of these after the
'8-bit 8 bit syntax entry flags (XEmacs style).
'1-bit 1 bit syntax entry flags (Emacs style).
+'argumentative-bod-function beginning-of-defun passes ARG through
+ to a non-null beginning-of-defun-function. It is assumed
+ the end-of-defun does the same thing.
'syntax-properties It works to override the syntax for specific characters
in the buffer with the 'syntax-table property. It's
always set - CC Mode no longer works in emacsen without
;; `cl-macroexpand-all' inside `c-lang-defconst'.
(eval form))
+;; Only used at compile time - suppress "might not be defined at runtime".
+(declare-function cl-macroexpand-all "cl-extra" (form &optional env))
+
(defmacro c-lang-defconst (name &rest args)
"Set the language specific values of the language constant NAME.
The second argument can optionally be a docstring. The rest of the