;ELC ;;; compiled by kwzh@hal.gnu.ai.mit.edu on Tue May 2 20:19:43 1995 ;;; from file /gd/gnu/emacs/19.0/lisp/cplus-md.el ;;; emacs version 19.28.90.69. ;;; bytecomp version FSF 2.10 ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19"))) (error "`/gd/gnu/emacs/19.0/lisp/cplus-md.el' was compiled for Emacs 19")) #@32 Abbrev table used in C++ mode. (defvar c++-mode-abbrev-table nil (#$ . 485)) (define-abbrev-table (quote c++-mode-abbrev-table) nil) #@26 Keymap used in C++ mode. (defvar c++-mode-map nil (#$ . 624)) (byte-code "= #########" [c++-mode-map make-sparse-keymap define-key "\n" reindent-then-newline-and-indent "{" electric-c++-brace "}" ";" electric-c++-semi "" mark-c-function "" indent-c++-exp "" backward-delete-char-untabify " " c++-indent-command "" c-backslash-region] 4) #@32 Syntax table used in C++ mode. (defvar c++-mode-syntax-table nil (#$ . 1026)) (byte-code " \n!####" [c++-mode-syntax-table copy-syntax-table c-mode-syntax-table modify-syntax-entry 42 ". 23b" 47 ". 124" 10 ">" 13] 4) #@150 *Extra indent for continuation lines of member inits; nil means to align with previous initializations rather than with the colon on the first line. (defvar c++-continued-member-init-offset nil (#$ . -1277)) #@72 *Indentation level of member initializations in function declarations. (defvar c++-member-init-indent 0 (#$ . -1491)) #@69 *Offset of C++ friend declarations relative to member declarations. (defvar c++-friend-offset -4 (#$ . -1615)) #@41 *If t, colon is an electric terminator. (defvar c++-electric-colon t (#$ . -1732)) #@112 *Indicates how far to indent an line following an empty argument list. Nil indicates to just after the paren. (defvar c++-empty-arglist-indent nil (#$ . -1822)) #@2926 Major mode for editing C++ code. Very much like editing C code. Expression and list commands understand all C++ brackets. Tab at left margin indents for C++ code Comments are delimited with /* ... */ {or with // ... } Paragraphs are separated by blank lines only. Delete converts tabs to spaces as it moves back. \{c++-mode-map} Variables controlling indentation style: c-tab-always-indent Non-nil means TAB in C mode should always reindent the current line, regardless of where in the line point is when the TAB command is used. Default is t. c-auto-newline Non-nil means automatically newline before and after braces, and after colons and semicolons, inserted in C code. c-indent-level Indentation of C statements within surrounding block. The surrounding block's indentation is the indentation of the line on which the open-brace appears. c-continued-statement-offset Extra indentation given to a substatement, such as the then-clause of an if or body of a while. c-continued-brace-offset Extra indentation given to a brace that starts a substatement. This is in addition to c-continued-statement-offset. c-brace-offset Extra indentation for line if it starts with an open brace. c-brace-imaginary-offset An open brace following other text is treated as if it were this far to the right of the start of its line. c-argdecl-indent Indentation level of declarations of C function arguments. c-label-offset Extra indentation for line that is a label, or case or ``default:'', or ``public:'' or ``private:'', or ``protected:''. c++-electric-colon If non-nil at invocation of c++-mode (t is the default) colon electricly indents. c++-empty-arglist-indent If non-nil, a function declaration or invocation which ends a line with a left paren is indented this many extra spaces, instead of flush with the left paren. c++-friend-offset Offset of C++ friend declarations relative to member declarations. c++-member-init-indent Indentation level of member initializations in function declarations, if they are on a separate line beginning with a colon. c++-continued-member-init-offset Extra indentation for continuation lines of member initializations; NIL means to align with previous initializations rather than with the colon. Settings for K&R, BSD, and Stroustrup indentation styles are c-indent-level 5 8 4 c-continued-statement-offset 5 8 4 c-continued-brace-offset 0 c-brace-offset -5 -8 0 c-brace-imaginary-offset 0 c-argdecl-indent 0 8 4 c-label-offset -5 -8 -4 c++-empty-arglist-indent 4 c++-friend-offset 0 Turning on C++ mode calls the value of the variable `c++-mode-hook' with no args if that value is non-nil. (defalias 'c++-mode #[nil " \n!\f!\n \f!L!L!L!L!L!PL!L!L!L!L!\"f\n#" [kill-all-local-variables use-local-map c++-mode-map set-syntax-table c++-mode-syntax-table c++-mode major-mode "C++" mode-name 32 comment-column c++-mode-abbrev-table local-abbrev-table make-local-variable indent-line-function c++-indent-line comment-start "// " comment-end "" comment-start-skip "/\\*+ *\\|// *" comment-indent-function c++-comment-indent paragraph-start "$\\|" page-delimiter paragraph-separate paragraph-ignore-fill-prefix t require-final-newline parse-sexp-ignore-comments run-hooks c++-mode-hook c++-electric-colon define-key ":" electric-c++-terminator] 4 (#$ . 1992) nil]) (defalias 'c++-comment-indent #[nil "!‡xiU‚iT`y #/”bi1\n)])" [looking-at "^\\(/\\*\\|//\\)" 0 " " nil cur-pt -1 re-search-forward comment-start-skip t comment-column] 5]) #@50 Insert character and correct line's indentation. (defalias 'electric-c++-brace #[(arg) "\nAlAxn)\fA c \f3 `Z < Tb!) R b\n!!)W\n!!)" [nil insertpos arg " " c-auto-newline c++-indent-line newline last-command-char 2 delete-char -1 self-insert-command prefix-numeric-value] 3 (#$ . 5863) "P"]) #@50 Insert character and correct line's indentation. (defalias 'electric-c++-semi #[(arg) "\n!\n!!" [c-auto-newline electric-c++-terminator arg self-insert-command prefix-numeric-value] 3 (#$ . 6213) "P"]) #@50 Insert character and correct line's indentation. (defalias 'electric-c++-terminator #[(arg) "` lywgU]=A!Avw` W)A!)] ` \"8\\8\\8))c  `S \n\nTb!)\n\nb !!) !!*" [nil end insertpos arg 0 " " 35 last-command-char 58 looking-at "case[ ]" 1 ":" beginning-of-defun parse-partial-sexp pps 3 4 5 c++-indent-line c-auto-newline c-inside-parens-p make-marker newline c-indent-line delete-char -1 self-insert-command prefix-numeric-value] 4 (#$ . 6430) "P"]) #@545 Indent current line as C++ code, or in some cases insert a tab character. If `c-tab-always-indent' is non-nil (the default), always indent current line. Otherwise, indent the current line only if point is at the left margin or in the line's indentation; otherwise insert a tab. A numeric argument, regardless of its value, means indent rigidly all means indent rigidly all the lines of the expression starting after point so that this line becomes properly indented. The relative indentation among the lines of the expression are preserved. (defalias 'c++-indent-command #[(&optional whole-exp) "3 ‰y`!`\fby`) \fV1\f $+Exn)E " [whole-exp c++-indent-line nil end beg shift-amt c-tab-always-indent 0 forward-sexp 1 indent-code-rigidly "#" " " insert-tab] 5 (#$ . 6996) "P"]) #@80 Indent current line as C++ code. Return the amount the indentation changed by. (defalias 'c++-indent-line #[nil "!d`Zy`=\" =0 !<w'\n!i bwg)=!\"\\\\\nbu wR!ugUKy1!Z#1!fy1` )!1` W `V -ZigU.Z*n/U.\\/xn0h=! \\\\-" [0 nil containing-sexp state case-fold-search indent-point parse-start beginning-of-defun parse-partial-sexp 3 4 " " 123 c++-backward-to-noncomment 41 58 c++-member-init-indent c-argdecl-indent 59 backward-char 1 125 c++-continued-member-init-offset current-indentation c++-empty-arglist-indent 2 looking-at "\\( \\| \\)*[^/\n]" (nil 44 59 125 58 123) c-backward-to-start-of-continued-exp c-continued-statement-offset c-continued-brace-offset colon-line-end " \n" "#\\|/\\*\\|//" "\\|case[ ]" "\\|[a-zA-Z0-9_$]*:[^:]" "\\|friend[ ]" 35 "/\\*" search-forward "*/" move "//\\|friend[ ]" ":" c-label-offset c-brace-offset c-indent-level c-brace-imaginary-offset forward-sexp -1] 6 (#$ . 8599)]) (defalias 'c++-backward-to-noncomment #[(lim) " ?`\fx``\f\\Y+u!)+\f# \f]#=`\n\"yw!X`\nWX`\fX\nb*" [nil stop opoint " \n \f" lim 2 -2 looking-at "\\*/" search-backward "/*" move "//" c++-point-bol c++-within-string-p 0 " " "#" t] 5]) #@55 Indent each line of the C++ grouping following point. (defalias 'indent-c++-exp #[nil "C`C` \n \f !)\fm?5\f?5\n  mVӉ\f\n ``\n%\n@\nAA@\nAA@Y\nAA@ 8 \n8yFӉ K\nX\f\f5\n8VAAS\nU\nWBBT@\n\nA@!`)ywl5@#@YT@fU?@bi\\)M@J@[!)@fUe@!gU !h>@!$i\f%\\\\  ! @)!Z!!!!),\\]!.\\gUZgU0\\iUgU`y`|j2!52`)#5 y5." [nil 0 next-depth opoint at-brace at-else last-depth last-sexp this-indent ostate state inner-loop-done outer-loop-done restart case-fold-search contain-stack indent-stack forward-sexp 1 t parse-partial-sexp 4 c++-indent-line 3 6 -1 " " val 123 c-indent-level calculate-c++-indent looking-at "else\\W" c++-backward-to-noncomment (nil 44 59 125 58 123) c-backward-to-start-of-continued-exp c-continued-statement-offset c-continued-brace-offset c-backward-to-start-of-if current-indentation "\\(public\\|private\\|protected\\):" "case[ ]" "[A-Za-z]" ":[^:]" c-label-offset "friend[ ]" c++-friend-offset 125 c-brace-offset 35 comment-start-skip re-search-forward indent-for-comment] 16 (#$ . 10320) nil]) #@98 Fill a comment contained in consecutive lines containing point. The fill lines remain a comment. (defalias 'fill-c++-comment #[nil "y\f`)#•b )!'!!!!! *" [fill-prefix save 0 re-search-forward comment-start-skip nil t set-fill-prefix looking-at previous-line 1 next-line insert-string "\n" fill-paragraph delete-char -1] 4 (#$ . 11716) nil]) #@70 Returns the value of the point at the beginning of the current line. (defalias 'c++-point-bol #[nil "y`)" [0] 1 (#$ . 12104)]) #@68 Returns true if number of double quotes between two points is odd. (defalias 'c++-within-string-p #[(point1 point2) " {\n\"ŦU)?" [point1 point2 s c++-count-char-in-string 34 2 0] 3 (#$ . 12241)]) (defalias 'c++-count-char-in-string #[(c s) " GW\"\n H\fUł\\ T\n*" [0 pos count s c 1] 4])