From: Richard M. Stallman Date: Sun, 8 Mar 1998 06:45:26 +0000 (+0000) Subject: (c-enable-xemacs-performance-kludge-p): New variable. X-Git-Tag: emacs-20.3~1969 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=419277c5b89ada601ed0de4e142df0fa18c9c107;p=emacs.git (c-enable-xemacs-performance-kludge-p): New variable. --- diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el index 06dc8432eb6..9982337a57a 100644 --- a/lisp/progmodes/cc-vars.el +++ b/lisp/progmodes/cc-vars.el @@ -425,6 +425,51 @@ as designated in the variable `c-file-style'.") "Name of style installed in the current buffer.") + +;; Figure out what features this Emacs has +;;;###autoload +(defconst c-emacs-features + (let ((infodock-p (boundp 'infodock-version)) + (comments + ;; 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"))) + (if (= (logand (lsh entry -16) 255) 255) + '8-bit + '1-bit)))) + (if infodock-p + (list comments 'infodock) + (list comments))) + "A list of features extant in the Emacs you are using. +There are many flavors of Emacs out there, each with different +features supporting those needed by CC Mode. Here's the current +supported list, along with the values for this variable: + + XEmacs 19: (8-bit) + XEmacs 20: (8-bit) + Emacs 19: (1-bit) + +Infodock (based on XEmacs) has an additional symbol on this list: +'infodock.") + + (provide 'cc-vars) ;;; cc-vars.el ends here