;;; 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 Free Software
-;; Foundation, Inc.
+;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+;; Free Software Foundation, Inc.
-;; Authors: 1998- Martin Stjernholm
+;; Authors: 2003- Alan Mackenzie
+;; 1998- Martin Stjernholm
;; 1992-1999 Barry A. Warsaw
;; 1987 Dave Detlefs and Stewart Clamen
;; 1985 Richard M. Stallman
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
; (eval-after-load "font-lock" ; 2006-07-09. font-lock is now preloaded
; '
(if (and (not (featurep 'cc-fix)) ; only load the file once.
- (featurep 'xemacs) ; There is now (2005/12) code in GNU Emacs CVS
- ; to make the call to f-l-c-k throw an error.
- (let (font-lock-keywords)
- (font-lock-compile-keywords '("\\<\\>"))
- font-lock-keywords)) ; did the previous call foul this up?
- (load "cc-fix")) ;)
+ (featurep 'xemacs) ; There is now (2005/12) code in GNU Emacs CVS
+ ; to make the call to f-l-c-k throw an error.
+ (let (font-lock-keywords)
+ (font-lock-compile-keywords '("\\<\\>"))
+ font-lock-keywords)) ; did the previous call foul this up?
+ (load "cc-fix")) ;)
;; The above takes care of the delayed loading, but this is necessary
;; to ensure correct byte compilation.
;; Wrappers for common scan-lists cases, mainly because it's almost
;; impossible to get a feel for how that function works.
+(defmacro c-go-list-forward ()
+ "Move backward across one balanced group of parentheses.
+
+Return POINT when we succeed, NIL when we fail. In the latter case, leave
+point unmoved."
+ `(c-safe (let ((endpos (scan-lists (point) 1 0)))
+ (goto-char endpos)
+ endpos)))
+
+(defmacro c-go-list-backward ()
+ "Move backward across one balanced group of parentheses.
+
+Return POINT when we succeed, NIL when we fail. In the latter case, leave
+point unmoved."
+ `(c-safe (let ((endpos (scan-lists (point) -1 0)))
+ (goto-char endpos)
+ endpos)))
+
(defmacro c-up-list-forward (&optional pos limit)
"Return the first position after the list sexp containing POS,
or nil if no such position exists. The point is used if POS is left out.
;; c-parse-state to between 3 and 60 times faster when
;; braces are hung. It can also degrade performance by
;; about as much when braces are not hung.
- '(let (pos)
+ '(let (beginning-of-defun-function end-of-defun-function
+ pos)
(while (not pos)
(save-restriction
(widen)
))
(goto-char pos)))
;; Emacs, which doesn't have buffer-syntactic-context-depth
- (beginning-of-defun))
+ (let (beginning-of-defun-function end-of-defun-function)
+ (beginning-of-defun)))
;; if defun-prompt-regexp is non-nil, b-o-d won't leave us at the
;; open brace.
(and defun-prompt-regexp
\f
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; V i r t u a l S e m i c o l o n s
+;; V i r t u a l S e m i c o l o n s
;;
;; In most CC Mode languages, statements are terminated explicitly by
;; semicolons or closing braces. In some of the CC modes (currently only AWK
;;
;; The macro `c-vsemi-status-unknown-p' will typically check the cacheing
;; scheme used by the `c-at-vsemi-p-fn', hence the name - the status is
-;; "unknown" if there is no cache entry current for the line.
+;; "unknown" if there is no cache entry current for the line.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defmacro c-at-vsemi-p (&optional pos)
(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. It's always set - CC Mode no
- longer works in emacsen without this feature.
+ the last comment or string. It's always set - CC Mode
+ no longer works in emacsen without this feature.
'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.