;ELC   
;;; compiled by kwzh@hal.gnu.ai.mit.edu on Tue May  2 20:19:50 1995
;;; from file /gd/gnu/emacs/19.0/lisp/cpp.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/cpp.el' was compiled for Emacs 19"))


#@35 *Face used for known cpp symbols.
(defvar cpp-known-face (quote invisible) (#$ . -475))
#@37 *Face used for unknown cpp cymbols.
(defvar cpp-unknown-face (quote highlight) (#$ . -569))
#@168 *Indicate what background face type you prefer.
Can be either light or dark for color screens, mono for monochrome
screens, and none if you don't use a window system.
(defvar cpp-face-type (quote light) (#$ . -668))
#@66 *Non-nil means you are allowed to modify the known conditionals.
(defvar cpp-known-writable t (#$ . -890))
#@68 *Non-nil means you are allowed to modify the unknown conditionals.
(defvar cpp-unknown-writable t (#$ . -1003))
#@322 Alist of cpp macros and information about how they should be displayed.
Each entry is a list with the following elements:
0. The name of the macro (a string).
1. Face used for text that is `ifdef' the macro.
2. Face used for text that is `ifndef' the macro.
3. `t', `nil', or `both' depending on what text may be edited.
(defvar cpp-edit-list nil (#$ . 1122))
(byte-code "! B!BB" [boundp cpp-overlay-list nil current-load-list make-variable-buffer-local cpp-callback-data cpp-state-stack] 2)
#@61 Alist of strings and names of the defined face collections.
(defconst cpp-face-type-list (quote (("light color background" . light) ("dark color background" . dark) ("monochrome" . mono) ("tty" . none))) (#$ . 1640))
(byte-code "\nB! \nB! \nB!	\nBŇ" [(("writable" . t) ("read-only")) cpp-writable-list current-load-list boundp cpp-button-event nil cpp-edit-buffer make-variable-buffer-local (("false") ("true" . t) ("both" . both)) cpp-branch-list] 2)
#@57 List of faces you can choose from for cpp conditionals.
(defvar cpp-face-default-list nil (#$ . 2127))
#@56 Background colours useful with dark foreground colors.
(defvar cpp-face-light-name-list (quote ("light gray" "light blue" "light cyan" "light yellow" "light pink" "pale green" "beige" "orange" "magenta" "violet" "medium purple" "turquoise")) (#$ . 2236))
#@57 Background colours useful with light foreground colors.
(defvar cpp-face-dark-name-list (quote ("dim gray" "blue" "cyan" "yellow" "red" "dark green" "brown" "dark orange" "dark khaki" "dark violet" "purple" "dark turquoise")) (#$ . 2497))
#@60 Alist of names and faces to be used for light backgrounds.
(defvar cpp-face-light-list nil (#$ . 2742))
#@59 Alist of names and faces to be used for dark backgrounds.
(defvar cpp-face-dark-list nil (#$ . 2852))
#@60 Alist of names and faces to be used for monocrome screens.
(defvar cpp-face-mono-list (quote (("bold" quote bold) ("bold-italic" quote bold-italic) ("italic" quote italic) ("underline" quote underline))) (#$ . 2960))
#@75 Alist of names and faces available even if you don't use a window system.
(defvar cpp-face-none-list (quote (("default" . default) ("invisible" . invisible))) (#$ . 3183))
#@62 All faces used for highligting text inside cpp conditionals.
(defvar cpp-face-all-list (append cpp-face-light-list cpp-face-dark-list cpp-face-mono-list cpp-face-none-list) (#$ . 3361))
#@46 List of cpp macros used in the local buffer.
(defvar cpp-parse-symbols nil (#$ . 3553))
(byte-code "!QB" [make-variable-buffer-local cpp-parse-symbols "'\\|\"\\|/\\*\\|//\\|" "\\(^[ 	]*#[ 	]*\\(ifdef\\|ifndef\\|if\\|" "elif\\|else\\|endif\\)\\b\\)" cpp-parse-regexp current-load-list] 3)
#@238 Highlight C code according to preprocessor conditionals.
This command pops up a buffer which you should edit to specify
what kind of highlighting to use, and the criteria for highlighting.
A prefix arg suppresses display of that buffer.
(defalias 'cpp-highlight-buffer #[(arg) " \f  eb!	#-`eZ_ \"ΔΕ{И? јK Δbӏ)Ԙa #)!)٘o w)۔`Tܔܕ{ە`{ ᘃ  $(㘃  $(䘃  $(嘃 &' \"* $(阃 !@@?@A@ F, \",B)(혃$ \"(!,) !)B@8b!))3O	?O " [nil cpp-parse-symbols cpp-parse-reset cpp-edit-list cpp-edit-load cpp-state-stack cpp-progress-message "Parsing..." re-search-forward cpp-parse-regexp t "Parsing...%d%%" 100 buffer-size 0 match "'" "\"" (forward-sexp) ((error (cpp-parse-error "Unterminated string or character"))) "/*" search-forward "*/" error "Unterminated comment" "//" "^\n" 1 2 expr type to from "ifdef" cpp-parse-open "ifndef" "if" "elif" cpp-unknown-face cpp-known-face cpp-parse-close "else" cpp-parse-error "Top level #else" entry "endif" "Parser error" message "Parsing...done" 3 "Unclosed conditional" arg cpp-parse-edit] 6 (#$ . 3862) "P"])
#@70 Push information about conditional-beginning onto `cpp-state-stack'.
(defalias 'cpp-parse-open #[(branch expr begin end) "\n\" \nÉO\nÕOP  \n\"# \nÉO\n\"0 \nÉO\n\"F \nÉO\nÕOP0 \n	\nFB\n\f` \n\fB\f\n\"o 	\n\"	\n\"" [string-match "\\b[ 	]*/\\*.*\\*/[ 	]*\\b" expr 0 nil "\\b[ 	]*/\\*" "\\b[ 	]*\\(//.*\\)?$" "[ 	]+" branch begin end cpp-state-stack cpp-parse-symbols assoc cpp-edit-list cpp-make-known-overlay cpp-make-unknown-overlay] 4 (#$ . 5111)])
(defalias 'cpp-parse-close #[(from to) "	@A@\n\"	@@	@8	@8	A * ɂ+ 8?8=	G\"\f\"\fB` \f#=o \f!~ =~ \f# \f! \f!, \"," [assoc cpp-state-stack cpp-edit-list 2 3 end begin branch entry 1 make-overlay from overlay priority read-only face cpp-make-known-overlay to cpp-overlay-list overlay-put invisible cpp-make-overlay-hidden default cpp-make-overlay-read-only cpp-make-overlay-sticky cpp-make-unknown-overlay] 6])
(defalias 'cpp-parse-error #[(error) "Pe`\"\"" [error " at line %d" count-lines] 5])
#@46 Reset display of cpp conditionals to normal.
(defalias 'cpp-parse-reset #[nil " @!A " [cpp-overlay-list delete-overlay nil] 3 (#$ . 6214) nil])
#@48 Edit display information for cpp conditionals.
(defalias 'cpp-parse-edit #[nil " !p!  )" [cpp-parse-symbols cpp-highlight-buffer t buffer pop-to-buffer "*CPP Edit*" cpp-edit-mode cpp-edit-buffer cpp-edit-reset] 2 (#$ . 6377) nil])
(defalias 'cpp-make-known-overlay #[(start end) "	\n\"\f= !/ \f= \f#\n/ ##B)" [make-overlay start end overlay cpp-known-face invisible cpp-make-overlay-hidden default overlay-put face cpp-known-writable modification-hooks (cpp-signal-read-only) insert-in-front-hooks (cpp-signal-read-only) cpp-overlay-list] 4])
(defalias 'cpp-make-unknown-overlay #[(start end) "	\n\"\f= ! \f= \f#\n/ ##B)" [make-overlay start end overlay cpp-unknown-face invisible cpp-make-overlay-hidden default overlay-put face cpp-unknown-writable modification-hooks (cpp-signal-read-only) insert-in-front-hooks (cpp-signal-read-only) cpp-overlay-list] 4])
(defalias 'cpp-make-overlay-hidden #[(overlay) "	#	#	#	#" [overlay-put overlay invisible t intangible modification-hooks (cpp-signal-read-only) insert-in-front-hooks (cpp-signal-read-only)] 4])
(defalias 'cpp-make-overlay-read-only #[(overlay) "	#	#	#" [overlay-put overlay modification-hooks (cpp-signal-read-only) insert-in-front-hooks (cpp-signal-read-only) insert-behind-hooks (cpp-signal-read-only)] 4])
(defalias 'cpp-make-overlay-sticky #[(overlay) "	#	#" [overlay-put overlay insert-in-front-hooks (cpp-grow-overlay) insert-behind-hooks (cpp-grow-overlay)] 4])
(defalias 'cpp-signal-read-only #[(overlay after start end &optional len) "? \n!W \n!V !" [after overlay-start overlay start overlay-end end error "This text is read only"] 2])
(defalias 'cpp-grow-overlay #[(overlay after start end &optional len) " \n\n!^\n!]#" [after move-overlay overlay start overlay-start end overlay-end] 6])
(byte-code "! B	  	!	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#! :B!" [boundp cpp-edit-map nil current-load-list make-keymap suppress-keymap define-key [down-mouse-2] cpp-push-button [mouse-2] ignore " " scroll-up "" scroll-down [delete] "" cpp-edit-apply "a" "A" "r" cpp-edit-reset "R" "s" cpp-edit-save "S" "l" cpp-edit-load "L" "h" cpp-edit-home "H" "b" cpp-edit-background "B" "k" cpp-edit-known "K" "u" cpp-edit-unknown "t" cpp-edit-true "T" "f" cpp-edit-false "F" "w" cpp-edit-write "W" "X" cpp-edit-toggle-known "x" "Y" cpp-edit-toggle-unknown "y" "q" bury-buffer "Q" cpp-edit-symbols make-variable-buffer-local] 4)
#@178 Major mode for editing the criteria for highlighting cpp conditionals.
Click on objects to change them.  
You can also use the keyboard accelerators indicated like this: [K]ey.
(defalias 'cpp-edit-mode #[nil "  !	!" [kill-all-local-variables buffer-disable-undo auto-save-mode -1 t buffer-read-only cpp-edit-mode major-mode "CPP Edit" mode-name use-local-map cpp-edit-map] 2 (#$ . 9105)])
#@54 Apply edited display information to original buffer.
(defalias 'cpp-edit-apply #[nil " !" [cpp-edit-home cpp-highlight-buffer t] 2 (#$ . 9518) nil])
#@49 Reset display information from original buffer.
(defalias 'cpp-edit-reset #[nil "p `qq\n	 c!\"ѱ\"c\"c\"c\"cc\"@\"c#!$c'(\"@\"c+!$c.(\"@\"%c\nf\n@668\"9A@:98<9 98 ?\nA9 : :@ = < <@ = ?= A 98\"896GB V6C B OD \"E 6\"c:!F 6G %H c<!I 6G %H c?J\"@K 6L %c- cM \f\"b-" [nil window-start symbols pos start buffer-read-only buffer cpp-edit-buffer cpp-parse-symbols cpp-edit-symbols erase-buffer "CPP Display Information for `" cpp-make-button buffer-name cpp-edit-home "\n\nClick mouse-2 on item you want to change or use\n" "or switch to this buffer and type the keyboard equivalents.\n" "Keyboard equivalents are indicated with brackets like [T]his.\n\n" "[H]ome (display the C file)" "  " "[A]pply new settings" cpp-edit-apply "\n" "[S]ave settings" cpp-edit-save "[L]oad settings" cpp-edit-load "\n\n" "[B]ackground: " rassq cpp-face-type cpp-face-type-list cpp-edit-background "\n[K]nown conditionals: " cpp-face-name cpp-known-face cpp-edit-known t " [X] " cpp-known-writable cpp-writable-list cpp-edit-toggle-known "\n[U]nknown conditionals: " cpp-unknown-face cpp-edit-unknown " [Y] " cpp-unknown-writable cpp-edit-toggle-unknown format "\n\n\n%39s: %14s %14s %7s\n\n" "Expression" "[T]rue Face" "[F]alse Face" "[W]rite" symbol assoc cpp-edit-list entry true 2 false 3 both write default delq 39 0 ": " "%39s: " cpp-edit-true 14 " " cpp-edit-false cpp-branch-list cpp-edit-write 6 set-window-start] 7 (#$ . 9678) nil])
#@25 Load cpp configuration.
(defalias 'cpp-edit-load #[nil "! ! ! !\f=  " [file-readable-p ".cpp.el" load-file "~/.cpp.el" major-mode cpp-edit-mode cpp-edit-reset] 2 (#$ . 11317) nil])
#@25 Load cpp configuration.
(defalias 'cpp-edit-save #[nil "!\nq!q DE\"\nDE\"DE\"\fDE\"DE\"DE\"!*" [require pp cpp-edit-buffer find-file-noselect ".cpp.el" buffer erase-buffer setq cpp-known-face quote cpp-unknown-face cpp-face-type cpp-known-writable cpp-unknown-writable cpp-edit-list write-file] 6 (#$ . 11525) nil])
#@33 Switch back to original buffer.
(defalias 'cpp-edit-home #[nil "  !" [cpp-button-event read-event pop-to-buffer cpp-edit-buffer] 2 (#$ . 11908) nil])
#@33 Change default face collection.
(defalias 'cpp-edit-background #[nil "! " [call-interactively cpp-choose-default-face cpp-edit-reset] 2 (#$ . 12072) nil])
#@40 Select default for known conditionals.
(defalias 'cpp-edit-known #[nil "\n\" " [cpp-choose-face "Known face" cpp-known-face cpp-edit-reset] 3 (#$ . 12238) nil])
#@42 Select default for unknown conditionals.
(defalias 'cpp-edit-unknown #[nil "\n\" " [cpp-choose-face "Unknown face" cpp-unknown-face cpp-edit-reset] 3 (#$ . 12410) nil])
#@116 Toggle writable status for known conditionals.
With optional argument ARG, make them writable iff ARG is positive.
(defalias 'cpp-edit-toggle-known #[(arg) " 	 !X   " [arg cpp-known-writable prefix-numeric-value 0 nil t cpp-edit-reset] 2 (#$ . 12591) "@P"])
#@118 Toggle writable status for unknown conditionals.
With optional argument ARG, make them writable iff ARG is positive.
(defalias 'cpp-edit-toggle-unknown #[(arg) " 	 !X   " [arg cpp-unknown-writable prefix-numeric-value 0 nil t cpp-edit-reset] 2 (#$ . 12874) "@P"])
#@69 Select SYMBOL's true FACE used for highlighting taken conditionals.
(defalias 'cpp-edit-true #[(symbol face) "	!A\n " [cpp-edit-list-entry-get-or-create symbol face cpp-edit-reset] 2 (#$ . 13162) (byte-code " 	\"A@\")D" [cpp-choose-symbol symbol cpp-choose-face "True face" assoc cpp-edit-list] 7)])
#@72 Select SYMBOL's false FACE used for highlighting untaken conditionals.
(defalias 'cpp-edit-false #[(symbol face) "	!AA\n " [cpp-edit-list-entry-get-or-create symbol face cpp-edit-reset] 2 (#$ . 13481) (byte-code " 	\"8\")D" [cpp-choose-symbol symbol cpp-choose-face "False face" 2 assoc cpp-edit-list] 8)])
#@130 Set which branches of SYMBOL should be writable to BRANCH.
BRANCH should be either nil (false branch), t (true branch) or 'both.
(defalias 'cpp-edit-write #[(symbol branch) "\n! " [3 cpp-edit-list-entry-get-or-create symbol branch cpp-edit-reset] 3 (#$ . 13810) (list (cpp-choose-symbol) (cpp-choose-branch))])
(defalias 'cpp-edit-list-entry-get-or-create #[(symbol) "	\n\" 	ĉį\nB)" [assoc symbol cpp-edit-list entry nil both] 6])
(defalias 'cpp-choose-symbol #[nil " 	\"$" [cpp-button-event cpp-callback-data completing-read "Symbol: " mapcar list cpp-edit-symbols nil t] 5])
(defalias 'cpp-choose-branch #[nil " BD\"$\"A" [cpp-button-event x-popup-menu "Branch" cpp-branch-list assoc completing-read "Branch: " nil t] 6])
(defalias 'cpp-choose-face #[(prompt default) " \nBD\"2 \"@& \nR) \nP$\"A)6 " [cpp-button-event x-popup-menu prompt cpp-face-default-list rassq default name assoc completing-read " (default " "): " ": " nil t cpp-face-all-list] 6])
(defalias 'cpp-choose-default-face #[(type) "?i =' \n \"\n\"\n	\"\n=N \fA \"\f\f\"\f	\"\n=a 	\"\n	\n" [type light cpp-face-light-list mapcar cpp-create-bg-face cpp-face-light-name-list append cpp-face-all-list cpp-face-type cpp-face-none-list cpp-face-default-list dark cpp-face-dark-list cpp-face-dark-name-list mono cpp-face-mono-list none] 3 nil (list (if cpp-button-event (x-popup-menu cpp-button-event (list "Screen type" (cons "Screen type" cpp-face-type-list))) (cdr (assoc (completing-read "Screen type: " cpp-face-type-list nil t) cpp-face-type-list))))])
(defalias 'cpp-make-button #[(name callback &optional data face padding) "\n\"É `\nc9 \nGV* `\nOc9 \nGZ\"c`\nc`\nX \n\f\"A>R ςT )Y \n\f\nDDq D$#+" [format "%s" name nil to from padding 0 make-string 32 face assoc cpp-face-all-list check (default invisible) bold add-text-properties append (mouse-face highlight) cpp-callback callback data cpp-data] 10])
(defalias 'cpp-push-button #[(event) "	A@)@)!q	A@)A@:# \nA@@& \nA@)\"\"		E \"!T \f\"T \f\"!," [window-buffer event position pos get-text-property cpp-data cpp-callback cpp-button-event fun cpp-callback-data call-interactively lookup-key global-map [down-mouse-2] [down-mouse-2]] 5 nil "@e"])
(defalias 'cpp-create-bg-face #[(color) "\nP!!\n\"\n)B" [intern "cpp " color name make-face set-face-background] 3])
(byte-code "		 \n\n !" [cpp-choose-default-face window-system cpp-face-type none] 2)
(defalias 'cpp-face-name #[(face) "		 	\n \" \f@ 	\")" [rassq face default cpp-face-all-list entry format "<%s>"] 4])
(byte-code "! B" [boundp cpp-progress-time 0 current-load-list] 2)
(defalias 'cpp-progress-message #[(&rest args) " A@\nU? 	\")" [current-time time cpp-progress-time apply message args] 4])
(provide (quote cpp))
