;ELC ;;; compiled by rms@mole.gnu.ai.mit.edu on Sat Aug 6 17:25:20 1994 ;;; from file /home/fsf/rms/e19/lisp/c-mode.el ;;; emacs version 19.25.92.3. ;;; 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 "`/home/fsf/rms/e19/lisp/c-mode.el' was compiled for Emacs 19")) (defvar c-mode-abbrev-table nil "\ Abbrev table in use in C mode.") (define-abbrev-table (quote c-mode-abbrev-table) nil) (defvar c-mode-map (make-sparse-keymap) "\ Keymap used in C mode.") (byte-code "タ ツテ#安 トテ#安 ナニ#安 ヌネ#安 ノハ#安 ヒフ#安 ヘホ#安 マミ#安 ムメ#安 モヤ#安 ユヨ#安 ラリ#安 ルレ#安 ロワ#安 ン゙#安 ゚ #安 矮珞!B#安 聿#安 褂#安 鉅#安 鳰#安 #安 #安 #安 #安 #安 #安 #" [define-key c-mode-map "{" electric-c-brace "}" ";" electric-c-semi "#" electric-c-sharp-sign ":" electric-c-terminator "" mark-c-function "" indent-c-exp "a" c-beginning-of-statement "e" c-end-of-statement "q" c-fill-paragraph "" c-forward-conditional "" c-backward-conditional "" c-up-conditional "" backward-delete-char-untabify " " c-indent-command [menu-bar] make-sparse-keymap [menu-bar c] "C" [menu-bar c comment-region] ("Comment Out Region" . comment-region) [menu-bar c c-macro-expand] ("Macro Expand Region" . c-macro-expand) [menu-bar c c-backslash-region] ("Backslashify" . c-backslash-region) [menu-bar c indent-exp] ("Indent Expression" . indent-c-exp) [menu-bar c indent-line] ("Indent Line" . c-indent-command) [menu-bar c fill] ("Fill Comment Paragraph" . c-fill-paragraph) [menu-bar c up] ("Up Conditional" . c-up-conditional) [menu-bar c backward] ("Backward Conditional" . c-backward-conditional) [menu-bar c forward] ("Forward Conditional" . c-forward-conditional) [menu-bar c backward-stmt] ("Backward Statement" . c-beginning-of-statement) [menu-bar c forward-stmt] ("Forward Statement" . c-end-of-statement)] 6) (autoload (quote c-macro-expand) "cmacexp" "\ Display the result of expanding all C macros occurring in the region. The expansion is entirely correct because it uses the C preprocessor." t) (defvar c-mode-syntax-table nil "\ Syntax table in use in C-mode buffers.") (byte-code "Оチ ツテト#按ナニ#按ヌネ#按ノハ#按ヒハ#按フハ#按ヘハ#按ホハ#按マハ#按ミハ#按ムハ#按メモ#庵" [c-mode-syntax-table make-syntax-table modify-syntax-entry 92 "\\" 47 ". 14" 42 ". 23" 43 "." 45 61 37 60 62 38 124 39 "\""] 4) (defconst c-indent-level 2 "\ *Indentation of C statements with respect to containing block.") (defconst c-brace-imaginary-offset 0 "\ *Imagined indentation of a C open brace that actually follows a statement.") (defconst c-brace-offset 0 "\ *Extra indentation for braces, compared with other text in same context.") (defconst c-argdecl-indent 5 "\ *Indentation level of declarations of C function arguments.") (defconst c-label-offset -2 "\ *Offset of C label lines and case statements relative to usual indentation.") (defconst c-continued-statement-offset 2 "\ *Extra indent for lines not starting new statements.") (defconst c-continued-brace-offset 0 "\ *Extra indent for substatements that start with open-braces. This is in addition to c-continued-statement-offset.") (byte-code "タツ" [(("GNU" (c-indent-level . 2) (c-argdecl-indent . 5) (c-brace-offset . 0) (c-label-offset . -2) (c-continued-statement-offset . 2)) ("K&R" (c-indent-level . 5) (c-argdecl-indent . 0) (c-brace-offset . -5) (c-label-offset . -5) (c-continued-statement-offset . 5)) ("BSD" (c-indent-level . 4) (c-argdecl-indent . 4) (c-brace-offset . -4) (c-label-offset . -4) (c-continued-statement-offset . 4)) ("C++" (c-indent-level . 4) (c-continued-statement-offset . 4) (c-brace-offset . -4) (c-argdecl-indent . 0) (c-label-offset . -4) (c-auto-newline . t)) ("Whitesmith" (c-indent-level . 4) (c-argdecl-indent . 4) (c-brace-offset . 0) (c-label-offset . -4) (c-continued-statement-offset . 4))) c-style-alist nil] 1) (defconst c-auto-newline nil "\ *Non-nil means automatically newline before and after braces, and after colons and semicolons, inserted in C code. If you do not want a leading newline before braces then use: (define-key c-mode-map \"{\" 'electric-c-semi)") (defconst c-tab-always-indent t "\ *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.") (byte-code "タツ" ["case[ '/(]\\|default\\(\\S_\\|'\\)" c-switch-label-regexp nil] 1) (defalias 'c-mode #[nil "タ 庵\n!暗ナノ\n!依フ!囲P\fヒマ!\fヒミ!尉ヒメ!意ヒヤ!易ヒヨ!尉ヒラ!畏ヒル!移ヒロ!緯ヒン!萎ピ!謂ヒ!遺!ヒ!井#ヒ!尉%跚!" [kill-all-local-variables use-local-map c-mode-map c-mode major-mode "C" mode-name c-mode-abbrev-table local-abbrev-table set-syntax-table c-mode-syntax-table make-local-variable paragraph-start "^$\\|" page-delimiter paragraph-separate paragraph-ignore-fill-prefix t indent-line-function c-indent-line indent-region-function c-indent-region require-final-newline outline-regexp "[^#\n ]" outline-level c-outline-level comment-start "/* " comment-end " */" comment-column 32 comment-start-skip "/\\*+ *" comment-indent-function c-comment-indent parse-sexp-ignore-comments run-hooks c-mode-hook] 2 "\ Major mode for editing C code. Expression and list commands understand all C brackets. Tab indents for C code. Comments are delimited 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. 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. Settings for K&R and BSD indentation styles are c-indent-level 5 8 c-continued-statement-offset 5 8 c-brace-offset -5 -8 c-argdecl-indent 0 8 c-label-offset -5 -8 Turning on C mode calls the value of the variable c-mode-hook with no args, if that value is non-nil." nil]) (byte-code "タチツ\"安テト\"" [defalias c-outline-level #[nil "澗チwi)" [" " nil] 2] c-comment-indent #[nil "タチ!ツ`環y安ト!ナニ!iTHタヌ!)タネ!-ノH b位ヒx\fツUイnイツHiT\f]*" [looking-at "^/\\*" 0 opoint "[ ]*}[ ]*\\($\\|/\\*\\)" search-forward "}" "^#[ ]*endif[ ]*" "^#[ ]*else[ ]*" 7 " " nil comment-column] 2]] 3) (defalias 'c-fill-paragraph #[(&optional arg) "タ環y暗タw案 !`)ネ=環y案ノ!)タ\nヒP\fヒP\f\n 環yoКトホ!ガマy;トノ!Уミy尉メ!iヤタx易iヨZラ\"リユiZラ\"Q )形諌y案ホ!ャミyX`)} c異!ee G\\|-い╂ロ ワ=╂環y尉 澗`)ワ#`)環y案ン!φム !易iラ\"ロミy安iツy`゚玳!ワ\"`!ツy遺!wg=h=衵!`){゚!`タ`|))\nヒP\fヒPツ&\f\n 穴 5 b9鉅!i)`)&ラ)\"* コ ヨ\\b壱タ#威y`)}異!各b&ツVプ``&\\|db委y壱タ#按y案!/\\/マy鰯`d\").いル!*" [nil comment-start-place 0 " \n" looking-at comment-start-skip first-line major-mode c++-mode ".*//" paragraph-start "\\|^[ ]*/\\*[ ]*$\\|^[ ]*\\*/[ ]*$\\|^[ /*]*$" paragraph-separate fill-prefix "[ ]*//" -1 1 re-search-forward "[ ]*//[ ]*" endcol " " make-string 2 32 "//" fill-paragraph arg calculate-c-indent t "[ ]*/\\*.*\\*/" line-width move-to-column calculate-c-indent-within-comment max-prefix-end " *" 47 42 backward-char chars-to-delete search-backward "/*" column insert-char search-forward "*/" move "[ ]*\\*/" fill-column 9999 fill-region-as-paragraph] 5 "\ Like \\[fill-paragraph] but handle C comments. If any of the current line is a comment or within a comment, fill the comment or the paragraph of it that point is in, preserving the comment indentation or line-starting decorations." "P"]) (defalias 'electric-c-brace #[(arg) "タ\nБlア甘タxn)\fアナ 鞍 c闇 \f3ニ `ネZナ < Tb伊ハ!) コ b依フ\n!!)8ヒフ\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 "\ Insert character and correct line's indentation." "P"]) (defalias 'electric-c-sharp-sign #[(arg) "澗チxn)チテ\f!)ナニ\f!!" [" " nil c-auto-newline electric-c-terminator arg self-insert-command prefix-numeric-value] 3 "\ Insert character and correct line's indentation." "P"]) (defalias 'electric-c-semi #[(arg) "チ\n!テト\n!!" [c-auto-newline electric-c-terminator arg self-insert-command prefix-numeric-value] 3 "\ Insert character and correct line's indentation." "P"]) (defalias 'electric-c-terminator #[(arg) "タ` пlメ監y闇タwgニUTネ=8ノ\n!8翰タw闇タw` W)Tフ 囲` \"マ8Sミ8Sム8))пc惟 ピヤ гユ `ヨZメ 浬nポ\nTb為リ!)\nヲ浬nb異レ !!)wルレ !!*" [nil end insertpos arg 0 " " 35 last-command-char 58 looking-at c-switch-label-regexp "a-zA-Z0-9_$" beginning-of-defun parse-partial-sexp pps 3 4 5 c-indent-line c-auto-newline c-inside-parens-p newline 2 delete-char -1 self-insert-command prefix-numeric-value] 3 "\ Insert character and correct line's indentation." "P"]) (defalias (quote c-inside-parens-p) #[nil "タチツ順" [nil (byte-code "褐`タ `}db庵`ツテ#efトU*" [beginning-of-defun scan-lists -1 1 40] 4) ((error))] 3]) (defalias 'c-indent-command #[(&optional whole-exp) "=チ ツヌy簡y`)`\fW.ノネ!`ハツw) \fV;ヒ\f フ$+О艦ツxn)Оホ チ " [whole-exp c-indent-line nil end beg shift-amt c-tab-always-indent 0 1 forward-sexp " \n" indent-code-rigidly "#" " " insert-tab] 5 "\ 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 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." "P"]) (defalias 'c-indent-line #[nil "タチ!チ演d`Zヌy`チ=ソ"ネ へノ=0ハ へヒフ!<ヌへヘチw<ガ@ヒ!dヒマ!パ諌ム!依メ!)パム\\]へヒヤ!ヨヒユ!ц関 以 )へヒラ!Β潅u畏 椅 以 )へヒル!ケ舘 )ケ舘 以 )へgロUλZへgンUω\\ヘチwiZヌUd\nZ`Vソnd\nZb\n `|jd\nZ`Vソnd\nZb\f-" [calculate-c-indent nil pos case-fold-search shift-amt beg indent 0 current-indentation t calculate-c-indent-within-comment looking-at "[ ]*#" " " c-switch-label-regexp "[A-Za-z]" forward-sexp 1 ":" c-label-offset "else\\b" "else\\s_" c-backward-to-start-of-if "}[ ]*else" backward-sexp "while\\b" c-backward-to-start-of-do 125 c-indent-level 123 c-brace-offset] 7 "\ Indent current line as C code. Return the amount the indentation changed by."]) (defalias 'calculate-c-indent #[(&optional parse-start) "澗y`チ演bヌ ` W1`ネ` タ#A@ノ 8=ハ 8イハ 81\n b依チwgフUスタ1ヘ_e!莞マチミ#庵確モヤ!ユyPチヨラ処タy意リ!)ンるモレ!モロ!タ百b`チワン処゙チw` Wg゚>b安y゙珮#゙璢#?κるタ+1\nfフU\nTbi1 b囲\n!h=Ы"h=9`觧f=Ы"`觧fz>9h=/騏一\n!安y囲\n!`チ+,+лタyoザ`,竕+A企uhU)デ騏?gUブ騏`,?竕+ゥ,b*h>┨ b依チwgU)┨鷭n!1i b依チwg)フ=Τ2ごタ\\\\1\nb閑u安3チw意!gUラユyっgU誦謂翆ミ#っ潅`3)璞!っ` W3`V  9ZigフU:タZ*Pn2;タU2:1\\4;ヒチxnァタB肝y囲タw杏ホ!)?フy*" [nil stop opoint " \n\f" lim 2 -2 looking-at "\\*/" search-backward "/*" move 0 " " "#"] 5] c-backward-to-start-of-continued-exp #[(lim) "hタ>ソnチツ!暗y`\fX\fTb闇ニw" [(41 34) forward-sexp -1 0 lim " " nil] 2]] 3) (defalias 'c-backward-to-start-of-if #[(&optional limit) " 潅 `)ツテo?E ニU?Eヌツ!以ノ!+ Tネハ!7 S`Wニb*" [limit beginning-of-defun 1 nil case-fold-search if-level 0 backward-sexp looking-at "else\\b" "if\\b"] 2 "\ Move to the start of the last \"unbalanced\" `if'."]) (defalias 'c-backward-to-start-of-do #[(&optional limit) " 潅 `)ツ`テ\fk`テネノ処\fgハヒ!-フH艦ホ!=hマUSミムツゲhマUРメ3ホ$)ソ\モHテ`Wトモ)\fフ=ブツZ b暗+" [limit beginning-of-defun t nil done startpos first next-start (backward-sexp 1) ((error (byte-code "タタ" [fail done] 1))) looking-at "do\\b" succeed forward-sexp 1 125 search-forward ";" 2 fail] 6 "\ If point follows a `do' statement, move to beginning of it and return t. Otherwise return nil and don't move point."]) (defalias 'c-beginning-of-statement #[(count) "`タ甘 案`\nタ$)ナ 86ニ 86ヌネ P!6缶タx`ヒZb杏フ!)>ヘ[!EマVゲミ S@マWdム T4*" [nil state here beginning-of-defun parse-partial-sexp 3 4 looking-at "[ ]*" comment-start-skip " " 2 "\\*/" forward-sentence count 0 c-beginning-of-statement-1 c-end-of-statement-1] 6 "\ Go to the beginning of the innermost C statement. With prefix arg, go back N - 1 statements. If already at the beginning of a statement then go to the beginning of the preceding one. If within a string or comment, or next to a comment (only whitespace between), move by sentences instead of statements." "p"]) (defalias 'c-end-of-statement #[(count) "タ [!" [c-beginning-of-statement count] 2 "\ Go to the end of the innermost C statement. With prefix arg, go forward N - 1 statements. Move forward to end of the next statement if already at end. If within a string or comment, move by sentences instead of statements." "p"]) (byte-code "タチツ\"安テト\"" [defalias c-beginning-of-statement-1 #[nil "`タテトナ*" [t first last-begin nil (byte-code "oタチ!\nテト ニ#`ヌ b" [backward-sexp 1 first re-search-forward "[;{}]" last-begin t nil] 4) ((error (byte-code "チツ! b" [first backward-up-list 1 last-begin] 2)))] 3] c-end-of-statement-1 #[nil "タチツ順" [nil (byte-code "m`チツ!`b案ナ ニ#+ヌネ!按u" [beg forward-sexp 1 end re-search-forward "[;{}]" t re-search-backward "[;}]"] 4) ((error (byte-code "`チツ!`b案ナ ニ#*" [beg backward-up-list -1 end search-forward ";" move] 4)))] 3]] 3) (defalias 'mark-c-function #[nil "タ`!庵 安`ツテ#案 闇 " [push-mark end-of-defun nil t beginning-of-defun backward-paragraph] 4 "\ Put mark at end of C function, point at beginning." nil]) (defalias 'indent-c-exp #[(&optional endpos) "タC` $タ看u鞍 `)\f圭f`}安ヌネ*%`C タ\nタ タ\fタ タタタタタタタタタラ館ナ!)柿ロ澗`)ン#陥巴萎タxn)゚`タ%  8? 8?) 為y*澗\fm?> Π` Wこ\f?>タ  ,mνン\f,゚`タ`タ%@AA@AA@ラYAA@88ソn 違888%ナyそン β ゾラWゾ タC\" タC\" TT幄8T0 ?fラX\f─8Vョ A A SOUタWΟタ Bタ B Tt @ナ A@テ館!`)闇y萎タwl─ レ` Y─ @プ @ラYプ @f鷆 @y柿!g鷆!gU @S\n!h>; @!2i334ラ\\\\Sガ\n!員 Sゾ\n!ゾ Sh=ハb引 S @)y @モ @[c\n!9ン=ヰ 9 9);!┫!サ館ナ!壱!)サナ>\\]gUκ?Zg鷆iラUレラゃ@\\lラiUg、U`ラy`|j壱!─柿ロ澗`)ン#:゚`タ%  8?3 8?): *ぁ." [nil indent-stack opoint endpos funbeg 1 beginning-of-defun (byte-code "澗チ!`)" [backward-up-list 1] 2) ((error (byte-code "`" [funbeg opoint] 1))) contain-stack case-fold-search restart outer-loop-done inner-loop-done state ostate this-indent last-sexp at-else at-brace at-while last-depth this-point 0 next-depth forward-sexp beg re-search-forward comment-start-skip t " " parse-partial-sexp new-state 3 5 indent-for-comment 4 7 c-indent-line append 6 -1 123 looking-at "else\\W" "while\\b" 125 c-backward-to-noncomment (0 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 c-backward-to-start-of-do 44 calculate-c-indent val calculate-c-indent-within-comment c-switch-label-regexp "[A-Za-z]" ":" c-label-offset c-indent-level c-brace-offset 35] 7 "\ Indent each line of the C grouping following point." nil]) (byte-code "タチツ\"安テト\"" [defalias indent-c-find-real-comment #[nil "タ 4ツ 澗`)ト#4ナ竿y`)`タ%ノ8?/ハ8?) )" [nil win re-search-forward comment-start-skip t parse-partial-sexp 0 state state-1 3 5] 6] c-indent-region #[(start end) "b庵ツw暗y案 !ニnΘm┬`WΘノ ツ演\n \f 甘y夷マ!)ァミyい滑ミy`\f)テy`\fWダツムメ処チツwL\nバ\nb意ミ!` )\nヴ\n\fVヴ\nXヴ \fWヴヤ \nb\nΑ\nツ遠威y,ツ遠+" [start " \n" nil 0 copy-marker end t c-tab-always-indent endmark c-indent-line sexpend sexpbeg nextline shift-amt looking-at "[ ]*#" 1 (byte-code "タチ!按 タ" [forward-sexp 1 point-marker sexpend] 2) ((error (byte-code "タ\nb" [nil sexpend nextline] 1))) backward-sexp indent-c-exp] 4]] 3) (defalias 'set-c-style #[(style &optional global) "タ \n\"Aトナ \" .ヌ @@! @@ @AL Aネ)" [assoc style c-style-alist vars error "Invalid C indentation style `%s'" global make-local-variable nil] 4 "\ Set C-mode variables to use one of several different indentation styles. The arguments are a string representing the desired style and a flag which, if non-nil, means to set the style globally. (Interactively, the flag comes from the prefix argument.) Available styles are GNU, K&R, BSD and Whitesmith." (list (completing-read "Use which C indentation style? " c-style-alist nil t) current-prefix-arg)]) (defvar c-backslash-column 48 "\ *Minimum column for end-of-line backslashes of macro definitions.") (defalias 'c-backslash-region #[(from to delete-flag) "b ツ  ニ嶋4` W4ニhネU)ノu位ニx\fiT]ヒy\f\fヲヘVシ\f\fノ\\\\\f・\f_マ Wザ)b` WナlナヒyY` Wワ翰y` W)ワфミ\f!iム 依yJ ニ遠+" [from c-backslash-column make-marker endmark column to nil delete-flag 92 -1 " " 1 tab-width 0 adjusted window-width c-append-backslash c-delete-backslash] 4 "\ Insert, align, or delete end-of-line backslashes on the lines in the region. With no argument, inserts backslashes and aligns existing backslashes. With an argument, deletes the backslashes. This function does not modify the last line of the region if the region ends right at the start of the following line; it does not modify blank lines at the start of the region. So you can put the region around an entire macro definition and conveniently use this command." "r\nP"]) (byte-code "タチツ\"安テト\"" [defalias c-append-backslash #[(column) "タhチUツu暗 \fj\fj闇c" [nil 92 -1 delete-horizontal-space column "\\"] 2] c-delete-backslash #[nil "タnチu按テ!`Tトタx`|" [nil -1 looking-at "\\\\" " "] 3]] 3) (defalias 'c-up-conditional #[(count) "タ [ツ\"" [c-forward-conditional count t] 3 "\ Move back to the containing preprocessor conditional, leaving mark behind. A prefix argument acts as a repeat count. With a negative argument, move forward to the end of the containing preprocessor conditional. When going backwards, `#elif' is treated like `#else' followed by `#if'. When going forwards, `#elif' is ignored." "p"]) (defalias 'c-backward-conditional #[(count &optional up-flag) "タ [\n\"" [c-forward-conditional count up-flag] 3 "\ Move back across a preprocessor conditional, leaving mark behind. A prefix argument acts as a repeat count. With a negative argument, move forward across a preprocessor conditional." "p"]) (defalias 'c-forward-conditional #[(count &optional up-flag) "チVソfテ ト\nニヌ` ハ チUハ\f/チ0テハ  ┣マハミ#Σチy尉メ!6チy尉ヤ!ツ \\ムユ!ホ\nムチUム`  ZチWWヨ\nラyリ!\nΔトyチWΞ` )6) ┝ヨル!  b* \\!)レ  b-" [count 0 forward -1 1 increment re-search-forward re-search-backward search-function opoint nil new up-flag found depth "#[ ]*\\(if\\|elif\\|endif\\)" t looking-at "^[ ]*#[ ]*\\(if\\|elif\\|endif\\)" prev "[ ]*#[ ]*endif" "[ ]*#[ ]*elif" error "No following conditional at this level" "No previous conditional at this level" "No containing preprocessor conditional" push-mark] 5 "\ Move forward across a preprocessor conditional, leaving mark behind. A prefix argument acts as a repeat count. With a negative argument, move backward across a preprocessor conditional." "p"])