;ELC ;;; compiled by rms@mole.gnu.ai.mit.edu on Sat Sep 3 18:14:46 1994 ;;; from file /home/fsf/rms/e19/lisp/pascal.el ;;; emacs version 19.25.94.1. ;;; 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/pascal.el' was compiled for Emacs 19")) (defconst pascal-mode-version "2.3" "\ Version of `pascal.el'.") (defvar pascal-mode-abbrev-table nil "\ Abbrev table in use in Pascal-mode buffers.") (define-abbrev-table (quote pascal-mode-abbrev-table) nil) (defvar pascal-mode-map nil "\ Keymap used in Pascal mode.") (byte-code "s ##################!|'*,.02468:<>" [pascal-mode-map make-sparse-keymap define-key ";" electric-pascal-semi-or-dot "." ":" electric-pascal-colon "=" electric-pascal-equal " " electric-pascal-terminate-line " " electric-pascal-tab " " pascal-complete-word "?" pascal-show-completions "" backward-delete-char-untabify "" pascal-mark-defun "b" pascal-insert-block "" pascal-star-comment "" pascal-comment-area "" pascal-uncomment-area "" pascal-beg-of-defun "" pascal-end-of-defun "g" pascal-goto-defun "" pascal-outline boundp pascal-keywords ("and" "array" "begin" "case" "const" "div" "do" "downto" "else" "end" "file" "for" "function" "goto" "if" "in" "label" "mod" "nil" "not" "of" "or" "packed" "procedure" "program" "record" "repeat" "set" "then" "to" "type" "until" "var" "while" "with" "get" "put" "input" "output" "read" "readln" "reset" "rewrite" "write" "writeln") "\\<[a-zA-Z_][a-zA-Z_0-9.]*\\>" pascal-symbol-re "\\<\\(begin\\|case\\|record\\|repeat\\)\\>" pascal-beg-block-re "\\<\\(end\\|until\\)\\>" pascal-end-block-re "\\<\\(const\\|label\\|type\\|var\\)\\>" pascal-declaration-re "\\<\\(function\\|procedure\\|program\\)\\>" pascal-defun-re "\\<\\(if\\|else\\|for\\|while\\|with\\)\\>" pascal-sub-block-re "\\<\\(begin\\|end\\|until\\|else\\)\\>" pascal-noindent-re "\\<\\(begin\\|repeat\\|then\\|do\\|else\\)\\>" pascal-nosemi-re "\\<\\(label\\|var\\|type\\|const\\|until\\|end\\|begin\\|repeat\\|else\\)\\>" pascal-autoindent-lines-re "{-----\\/----- EXCLUDED -----\\/-----" pascal-exclude-str-start " -----/\\----- EXCLUDED -----/\\-----}" pascal-exclude-str-end] 4) (defvar pascal-mode-syntax-table nil "\ Syntax table in use in Pascal-mode buffers.") (byte-code "g ################" [pascal-mode-syntax-table make-syntax-table modify-syntax-entry 92 "\\" 40 "()1" 41 ")(4" 42 ". 23" 123 "<" 125 ">" 43 "." 45 61 37 60 62 38 124 95 "w" 39 "\""] 4) (defvar pascal-indent-level 3 "\ *Indentation of Pascal statements with respect to containing block.") (defvar pascal-case-indent 2 "\ *Indentation for case statements.") (defvar pascal-auto-newline nil "\ *Non-nil means automatically newline after simcolons and the punctation mark after an end.") (defvar pascal-tab-always-indent t "\ *Non-nil means TAB in Pascal mode should always reindent the current line, regardless of where in the line point is when the TAB command is used.") (defvar pascal-auto-endcomments t "\ *Non-nil means a comment { ... } is set after the ends which ends cases and functions. The name of the function or case will be set between the braces.") (defvar pascal-auto-lineup (quote (all)) "\ *List of contexts where auto lineup of :'s or ='s should be done. Elements can be of type: 'paramlist', 'declaration' or 'case', which will do auto lineup in parameterlist, declarations or case-statements respectively. The word 'all' will do all lineups. '(case paramlist) for instance will do lineup in case-statements and parameterlist, while '(all) will do all lineups.") (defvar pascal-toggle-completions nil "\ *Non-nil means that \\\\[pascal-complete-label] should not display a completion buffer when the label couldn't be completed, but instead toggle the possible completions with repeated \\[pascal-complete-label]'s.") (defvar pascal-type-keywords (quote ("array" "file" "packed" "char" "integer" "real" "string" "record")) "\ *Keywords for types used when completing a word in a declaration or parmlist. (eg. integer, real, char.) The types defined within the Pascal program will be completed runtime, and should not be added to this list.") (defvar pascal-start-keywords (quote ("begin" "end" "function" "procedure" "repeat" "until" "while" "read" "readln" "reset" "rewrite" "write" "writeln")) "\ *Keywords to complete when standing at the first word of a statement. (eg. begin, repeat, until, readln.) The procedures and variables defined within the Pascal program will be completed runtime and should not be added to this list.") (defvar pascal-separator-keywords (quote ("downto" "else" "mod" "div" "then")) "\ *Keywords to complete when NOT standing at the first word of a statement. (eg. downto, else, mod, then.) Variables and function names defined within the Pascal program are completed runtime and should not be added to this list.") (byte-code "\"#\"#\"\"\"#" [defalias pascal-get-beg-of-line #[(&optional arg) " !`)" [beginning-of-line arg] 2] put byte-optimizer byte-compile-inline-expand pascal-get-end-of-line #[(&optional arg) "`)" [arg] 1] pascal-declaration-end #[nil " V-Ċ`)#-! TŔ S)" [1 nest 0 re-search-forward "[:=]\\|\\(\\\\)\\|\\(\\\\)" 2 t] 5] pascal-declaration-beg #[nil " V; !`*#;#‰Ȕ/ Sɔ T U)" [1 nest 0 re-search-backward "[:=]\\|\\<\\(type\\|var\\|label\\|const\\)\\>\\|\\(\\\\)\\|\\(\\\\)" arg beginning-of-line t 2 3] 5] pascal-within-string #[nil " !`*`\"8)" [3 parse-partial-sexp nil arg beginning-of-line] 4]] 4) (defalias 'pascal-mode #[nil " \n!\n!!\f!!!" [kill-all-local-variables use-local-map pascal-mode-map pascal-mode major-mode "Pascal" mode-name pascal-mode-abbrev-table local-abbrev-table set-syntax-table pascal-mode-syntax-table make-local-variable indent-line-function pascal-indent-line pascal-indent-comment comment-indent-function parse-sexp-ignore-comments t case-fold-search run-hooks pascal-mode-hook] 2 "\ Major mode for editing Pascal code. \\ TAB indents for Pascal code. Delete converts tabs to spaces as it moves back. \\[pascal-complete-word] completes the word around current point with respect to position in code \\[pascal-show-completions] shows all possible completions at this point. Other useful functions are: \\[pascal-mark-defun] - Mark function. \\[pascal-insert-block] - insert begin ... end; \\[pascal-star-comment] - insert (* ... *) \\[pascal-comment-area] - Put marked area in a comment, fixing nested comments. \\[pascal-uncomment-area] - Uncomment an area commented with \\[pascal-comment-area]. \\[pascal-beg-of-defun] - Move to beginning of current function. \\[pascal-end-of-defun] - Move to end of current function. \\[pascal-goto-defun] - Goto function prompted for in the minibuffer. \\[pascal-outline] - Enter pascal-outline-mode (see also pascal-outline). Variables controlling indentation/edit style: pascal-indent-level (default 3) Indentation of Pascal statements with respect to containing block. pascal-case-indent (default 2) Indentation for case statements. pascal-auto-newline (default nil) Non-nil means automatically newline after simcolons and the punctation mark after an end. pascal-tab-always-indent (default t) Non-nil means TAB in Pascal mode should always reindent the current line, regardless of where in the line point is when the TAB command is used. pascal-auto-endcomments (default t) Non-nil means a comment { ... } is set after the ends which ends cases and functions. The name of the function or case will be set between the braces. pascal-auto-lineup (default t) List of contexts where auto lineup of :'s or ='s hould be done. See also the user variables pascal-type-keywords, pascal-start-keywords and pascal-separator-keywords. Turning on Pascal mode calls the value of the variable pascal-mode-hook with no args, if that value is non-nil." nil]) (defalias 'electric-pascal-terminate-line #[nil "yw\f! ) # \nyw!=u Y!Y`*#)Y\n)\nd fc)" [0 " " nil looking-at pascal-autoindent-lines-re pascal-indent-line delete-horizontal-space newline pascal-auto-endcomments pascal-set-auto-comments setstar -1 "\\*[ ]+)" 1 "(\\*\\|\\*[^)]" search-forward "*)" arg t "* "] 4 "\ Terminate line and indent next line." nil]) (defalias 'electric-pascal-semi-or-dot #[nil "cy )  " [last-command-char 0 pascal-indent-line pascal-auto-newline electric-pascal-terminate-line] 1 "\ Insert `;' or `.' character and reindent the line." nil]) (defalias 'electric-pascal-colon #[nil "c\f!`*`\"8)?%y ) )" [last-command-char 3 parse-partial-sexp nil arg beginning-of-line 0 pascal-indent-line pascal-tab-always-indent pascal-indent-command] 4 "\ Insert `:' and do all indentions except line indent on this line." nil]) (defalias 'electric-pascal-equal #[nil "c @= )" [last-command-char pascal-calculate-indent declaration nil pascal-tab-always-indent pascal-indent-command] 2 "\ Insert `=', and do indention if within type declaration." nil]) (defalias 'electric-pascal-tab #[nil " !`*`\"8)c&y ))c " [3 parse-partial-sexp nil arg beginning-of-line " " pascal-tab-always-indent 0 pascal-indent-line pascal-indent-command] 4 "\ Function called when TAB is pressed in Pascal mode." nil]) (defalias 'pascal-insert-block #[nil " c cy )" [pascal-indent-line "begin" electric-pascal-terminate-line "end;" 0] 1 "\ Insert Pascal begin ... end; block in the code with right indentation." nil]) (defalias 'pascal-star-comment #[nil " c c)c" [pascal-indent-line "(*" electric-pascal-terminate-line delete-horizontal-space ")" " "] 1 "\ Insert Pascal star comment at point." nil]) (defalias 'pascal-mark-defun #[nil "`! `! ! " [push-mark pascal-end-of-defun pascal-beg-of-defun fboundp zmacs-activate-region] 2 "\ Mark the current pascal function (or procedure). This puts the mark at the end, and point at the beginning." nil]) (defalias 'pascal-comment-area #[(start end) "bwl)xn)y!y c` byc b#Mˉ#;)#aˉ#O*" [end " " nil 1 0 pascal-exclude-str-end newline start pascal-exclude-str-start re-search-backward "\\*)" t replace-match "!(*" "}" "!{"] 4 "\ Put the region into a Pascal comment. The comments that are in this area are \"deformed\": `*)' becomes `!(*' and `}' becomes `!{'. These deformed comments are returned to normal if you use \\[pascal-uncomment-area] to undo the commenting. The commented area starts with `pascal-exclude-str-start', and ends with `pascal-include-str-end'. But if you change these variables, \\[pascal-uncomment-area] won't recognize the comments." "r"]) (defalias 'pascal-uncomment-area #[nil "`` #`#`) `$`X*!uby`  `T|) #Oʼn#>) #bʼn#Q) by`  `T|)+" [end start search-backward pascal-exclude-str-start nil t search-forward pascal-exclude-str-end message "Not standing within commented area." 0 pos re-search-backward "!{" replace-match "}" "!(\\*" "*)"] 4 "\ Uncomment a commented area; change deformed comments back to normal. This command does nothing if the pointer is not in a commented area. See also `pascal-comment-area'." nil]) (defalias 'pascal-beg-of-defun #[nil "" [found (byte-code "\nP!\f! \n\n \f \n#e`\")8<8) ĕe!W\fYW S  T \f]\f ֕ \fU~\fY~ T  S ӕ  U\"  S ,χ" [looking-at "\\s \\|\\s)\\|" pascal-defun-re forward-sexp 1 0 -1 pascal-beg-block-re "\\|" pascal-end-block-re reg func max nest re-search-backward nil move parse-partial-sexp state 3 4 "\\" 2 throw found t] 9)] 2 "\ Move backward to the beginning of the current function or procedure." nil]) (defalias 'pascal-end-of-defun #[nil "!\n!\f! u \f\n \f U\n#e`\")8J8)'Õm\fT\fƔb!)' T )Օ\fS\fU' S )ҕ' T )+y" [looking-at "\\s " forward-sexp 1 pascal-defun-re pascal-beg-of-defun 0 pascal-beg-block-re "\\|" pascal-end-block-re reg func nest re-search-forward nil move parse-partial-sexp state 3 4 "\\" 2] 8 "\ Move forward to the end of the current function or procedure." nil]) (defalias 'pascal-end-of-statement #[nil " ư !! !$ύ/Ѝ1+" [0 nil "\\(" pascal-beg-block-re "\\)\\|\\(" pascal-end-block-re "\\)" regexp pos nest looking-at "[ \n]" forward-sexp -1 found (byte-code "!!wu`\"! !)2ʔb\"m`\"" [forward-sexp 1 looking-at "[ ]*;" "^;" nil throw found -1 pascal-beg-block-re 0] 3) (byte-code " #ĕ T Sm`\" U \"" [re-search-forward regexp nil move 1 nest throw found 0 pascal-end-of-statement] 4)] 7 "\ Move forward to end of current statement." nil]) (defalias 'pascal-downcase-keywords #[nil "!" [pascal-change-keywords downcase-word] 2 "\ Downcase all Pascal keywords in the buffer." nil]) (defalias 'pascal-upcase-keywords #[nil "!" [pascal-change-keywords upcase-word] 2 "\ Upcase all Pascal keywords in the buffer." nil]) (defalias 'pascal-capitalize-keywords #[nil "!" [pascal-change-keywords capitalize-word] 2 "\ Capitalize all Pascal keywords in the buffer." nil]) (defalias (quote pascal-change-keywords) #[(change-word) " #Qeb#\n!*" ["\\<\\(" mapconcat identity pascal-keywords "\\|" "\\)\\>" keyword-re re-search-forward nil t change-word -1] 5]) (defalias 'pascal-set-auto-comments #[nil "yw!!`*#)? @ =? =D c!uou!!fSH!HTHo|)U c‰ ww`w`)p#*c)))" [-1 " " nil looking-at "\\;>A ^\n=^!^>[>^ !gw+" [pascal-calculate-indent indent-str type ind paramlist all pascal-auto-lineup pascal-indent-paramlist declaration pascal-indent-declaration case looking-at "^[ ]*$" pascal-indent-case "[ ]+$" " " nil] 3 "\ Indent for special part of code."]) (defalias 'pascal-indent-line #[nil " @ A@!# \n=&\f!* !?C!: jC\n\"A!j+" [pascal-calculate-indent indent-str type ind looking-at "^[0-9a-zA-Z]+[ ]*:[^=]" search-forward ":" nil t delete-horizontal-space declaration pascal-declaration-re pascal-defun-re pascal-noindent-re eval assoc pascal-indent-alist] 5 "\ Indent current line as a Pascal statement."]) (defalias 'pascal-calculate-indent #[nil "`e`\")!\n̍ V' D, D." [oldpos parse-partial-sexp state 0 nest par nil complete looking-at "[ ]*else\\>" elsed nesting (byte-code " 8\"/ 8\"/ @V/` @#biT\n!!mUe!O\"/!]\"/\"/S/!!\"T/!\nU\"/\n#̕TSV\"\")/!!\fby!)\"/\"/ $! \"/!gU)2/o/\"/" [3 state throw nesting string 4 comment 0 scan-lists -1 par backward-sexp 1 looking-at pascal-beg-block-re nest "case\\>" case "record\\>" declaration block pascal-end-block-re "end\\s " elsed complete t pascal-defun-re defun n re-search-forward "\\(\\\\)\\|\\" oldpos paramlist pascal-declaration-re "^[ ]*$" unknown pascal-sub-block-re forward-sexp 59] 4) type contexp pascal-indent-level] 3 "\ Calculate the indent of the current Pascal line. Return a list of two elements: (INDENT-TYPE INDENT-LEVEL)."]) (defalias 'pascal-indent-level #[nil "y!#!#wi)" [0 looking-at "[ ]*[0-9a-zA-Z]+[ ]*:[^=]" search-forward ":" nil t ".*=[ ]*record\\>" "=" " "] 4 "\ Return the indent-level the current statement has. Do not count labels, case-statements or records."]) (defalias 'pascal-indent-comment #[(&optional arg) "#iT) \f \fj)" [re-search-backward "(\\*\\|{" nil t stcol arg delete-horizontal-space] 4 "\ Indent current line as comment. If optional arg is non-nil, just return the column number the line should be indented to."]) (defalias 'pascal-indent-case #[nil "w #` \n`\n!WD\n!#1u iV>i  b\n!`\n!W\n!#euTjgUyu c` Nb," [": " nil point-marker re-search-backward "\\" t 0 ind oldpos beg end marker-position re-search-forward "^[ ]*[^ ,:]+[ ]*\\(,[ ]*[^ ,:]+[ ]*\\)*:" move -1 delete-horizontal-space pascal-end-of-statement 58 1 " "] 5 "\ Indent within case statements."]) (defalias 'pascal-indent-paramlist #[(&optional arg) "``#b`iT \n\n!`*#` \f#\nLbyB!F k \\k\fbu e!e \\j\f #." [oldpos scan-lists -1 1 stpos stcol pascal-declaration-end search-backward ")" nil arg beginning-of-line t edpos re-search-backward "\\" usevar 0 looking-at "[ ]*var\\>" 4 delete-horizontal-space "var\\>" pascal-indent-declaration] 4 "\ Indent current line in parameterlist. If optional arg is non-nil, just return the indent of the current line in parameterlist."]) (defalias 'pascal-indent-declaration #[(&optional arg start end) " \n  !\n \"ǂ# + 3v!`  ? E ` ]ϓb\n`!Xy !s\njy\n\\jyX#b`!X\n`*#u j!yu c!i!y,\ny !b)" [point-marker pos arg start pascal-declaration-beg looking-at "\\\\|\\" ":" "=" 2 backward-word 1 make-marker end pascal-declaration-end nil ind edpos stpos lineup marker-position 0 delete-horizontal-space "end\\>" pascal-indent-level pascal-get-lineup-indent search-forward move -1 " " "record\\>" pascal-indent-declaration] 5 "\ Indent current lines as declaration, lining up the `:'s or `='s."]) (defalias (quote pascal-get-lineup-indent) #[(b e str) " Pb`WO \f\f`*^#ɔ6 bxiVHibV\\TibxiT," [0 str "\\|\\(\\\\)" nil nest reg ind b e 1 re-search-forward 2 arg move pascal-declaration-end " "] 4]) (defalias 'pascal-string-diff #[(str1 str2) "" [done (byte-code "T\nGV T GV \"\n H H& \" T" [0 diff str1 str2 throw done] 4)] 2 "\ Return index of first letter where STR1 and STR2 differs."]) (byte-code "\"\"" [defalias pascal-func-completion #[(type) " =ł =ǂR\f!1#u l`*#eՔՕ{\f^\f!e\fBٔb4*" [str "" "[a-zA-Z_]" type procedure "\\<\\(procedure\\)\\s +" function "\\<\\(function\\)\\s +" "\\<\\(function\\|procedure\\)\\s +" "\\<\\(" "[a-zA-Z0-9_.]*\\)\\>" nil match looking-at "\\<\\(function\\|procedure\\)\\>" re-search-backward t 1 pascal-beg-of-defun re-search-forward arg 2 predicate prdicate all 0] 4] pascal-get-completion-decl #[nil " `)` W|`*#_\nP!`*#_̕_͔͕{P\n\" V\n! \nB `*#v y *" [pascal-declaration-end nil match end re-search-forward "[:=]" arg t re-search-backward "\\((\\|\\<\\(var\\|type\\|const\\)\\>\\)\\|" pascal-symbol-re beginning-of-line 1 0 string-match "\\<" str predicate all "\\"] 4]] 3) (defalias 'pascal-type-completion #[nil "`  ?3\n `)uW/\n#/ŕ/ )*" [nil goon start pascal-beg-of-defun pascal-end-of-defun 1 re-search-forward "\\\\|\\<\\(begin\\|function\\|procedure\\)\\>" t pascal-get-completion-decl] 4 "\ Calculate all possible completions for types."]) (defalias 'pascal-var-completion #[nil "` \n?a `)V]`*#2  SY]P #R˕R 4˕4̉5)+" [nil twice goon start pascal-beg-of-defun pascal-end-of-defun search-forward "(" arg t pascal-get-completion-decl 2 0 re-search-forward "\\<\\(var\\|const\\)\\>\\|" "\\<\\(begin\\|function\\|procedure\\)\\>"] 5 "\ Calculate all possible completions for variables (or constants)."]) (defalias 'pascal-keyword-completion #[(keyword-list) "\n\"" [mapcar #[(s) "\nP \"\f\f ! B" [string-match "\\<" str s predicate all] 3] keyword-list] 3 "\ Give list of all possible completions of keywords in KEYWORD-LIST."]) (byte-code "\"\"!!!%\nɇ" [defalias pascal-completion #[(str predicate flag) "\nq @=0\f=0\f=J\n\n!`*#)J\f=<\f=? !\f=|x!!g!!)| )!! )!!) *" [nil all buffer-to-use pascal-calculate-indent state declaration paramlist defun re-search-backward ")[ ]*:" arg beginning-of-line t pascal-beg-of-defun pascal-type-completion pascal-keyword-completion pascal-type-keywords contexp "a-zA-Z0-9_." backward-sexp 1 looking-at pascal-nosemi-re forward-sexp "\\s *\\(;\\|:[^=]\\)" pascal-var-completion pascal-func-completion procedure pascal-start-keywords function pascal-separator-keywords pascal-completion-response] 5] pascal-completion-response #[nil "\nl\n??q\nA\n@G\f +[ [\f @\" WD\f O @ TƉ, A/e\fʚ??j\f-q\n" [flag lambda all elm match min nil exact tmp str t pascal-string-diff 0] 4] boundp pascal-last-word-numb 0 pascal-last-word-shown nil pascal-last-completions] 3) (defalias 'pascal-complete-word #[nil "x`)w`)\n {p'\f'+\f\" 6̂>\f \"\"\n |  GSY[҂^T  t\f!՚\f!՚ A!! A??\fGGUؐ !`\"!!!." ["a-zA-Z0-9_" nil b e str buffer-to-use pascal-toggle-completions pascal-last-word-shown pascal-last-completions all-completions pascal-completion allcomp "" try-completion mapcar #[(elm) "B" [elm 0] 2] match pascal-last-word-numb 0 message "(No match)" t "(Complete but not unique)" "(Sole completion)" "*Completions*" display-completion-list momentary-string-display delete-window get-buffer-window get-buffer] 5 "\ Complete word at current point. (See also `pascal-toggle-completions', `pascal-type-keywords', `pascal-start-keywords' and `pascal-separator-keywords'.)" nil]) (defalias 'pascal-show-completions #[nil "x`)w`)\n {p'\f'+\f\" ̐ !`\"!!!-" ["a-zA-Z0-9_" nil b e str buffer-to-use pascal-toggle-completions pascal-last-word-shown pascal-last-completions all-completions pascal-completion allcomp "*Completions*" display-completion-list momentary-string-display "" delete-window get-buffer-window get-buffer] 4 "\ Show all possible completions at current point." nil]) (defalias 'pascal-get-default-symbol #[nil "xx`w`{)" [" " nil "a-zA-Z0-9_"] 3 "\ Return symbol around current point as a string."]) (defalias 'pascal-build-defun-re #[(str &optional arg) " \nQ\nQ" [arg "^\\(function\\|procedure\\)[ ]+\\(" str "\\)\\>" "[a-zA-Z0-9_]*\\)\\>"] 3 "\ Return function/procedure starting with STR as regular expression. With optional second arg non-nil, STR is the complete name of the instruction."]) (defalias (quote pascal-comp-defun) #[(str predicate flag) " q\fŘ!\f!eb\f#?ʔʕ{ 8 ! \nB) +" [nil match all buffer-to-use str "" pascal-build-defun-re "[a-zA-Z_]" re-search-forward t 2 predicate pascal-completion-response] 5]) (defalias 'pascal-goto-defun #[nil " p # ƉƘ& Q%-%\fƘ8 \f\fƘNeb\f\"!y," [pascal-get-default-symbol default buffer-to-use pascal-comp-defun nil lambda "" completing-read "Label: (default " ") " t "Label: " label re-search-forward pascal-build-defun-re 0] 7 "\ Move to specified Pascal function/procedure. The default is a name found in the buffer around point." nil]) (defvar pascal-outline-map nil "\ Keymap used in Pascal Outline mode.") (byte-code "B!\"! !$  \"#####" [pascal-outline-map boundp set-keymap-name set-keymap-parent copy-keymap pascal-mode-map make-sparse-keymap define-key "" pascal-outline-prev-defun "" pascal-outline-next-defun "" pascal-outline-goto-defun "" pascal-show-all "" pascal-hide-other-defuns] 4) (defvar pascal-outline-mode nil "\ Non-nil while using Pascal Outline mode.") (byte-code "!\" \" C\"Ç" [make-variable-buffer-local pascal-outline-mode set-default nil assoc minor-mode-alist append (pascal-outline-mode " Outl")] 3) (defalias 'pascal-outline #[(&optional arg) " ?\n! ! \n!" [arg pascal-outline-mode t boundp redraw-mode-line selective-display use-local-map pascal-outline-map nil pascal-show-all pascal-mode-map] 2 "\ Outline-line minor mode for Pascal mode. When in Pascal Outline mode, portions of the text being edited may be made invisible. \\ Pascal Outline mode provides some additional commands. \\[pascal-outline-prev-defun] - Move to previous function/procedure, hiding everything else. \\[pascal-outline-next-defun] - Move to next function/procedure, hiding everything else. \\[pascal-outline-goto-defun] - Goto function/procedure prompted for in minibuffer, hide all other functions. \\[pascal-show-all] - Show the whole buffer. \\[pascal-hide-other-defuns] - Hide everything but the current function (function under the cursor). \\[pascal-outline] - Leave pascal-outline-mode." "P"]) (defalias (quote pascal-outline-change) #[(b e flag) " Ž\f UȂ$*" [buffer-modified-p modp ((set-buffer-modified-p modp)) subst-char-in-region b e flag 10 13] 5]) (defalias 'pascal-show-all #[nil "ed#" [pascal-outline-change 10] 4 "\ Show all of the text in the buffer." nil]) (defalias 'pascal-hide-other-defuns #[nil "!\n ` !#`e\n \feb\f#I\nєS#`\n `\fV#\nb#\f\nVZ\n\fS#\f #u #~`\n \n`#e b \n#\nєS#`\n \nd#y` W\fb !`d#," [looking-at "\\(function\\|procedure\\)\\>" pascal-beg-of-defun pascal-end-of-defun backward-sexp 1 search-forward "\n\\| " nil t opoint end beg re-search-forward "^\\(function\\|procedure\\)\\>" move pascal-outline-change 0 13 10 -1] 5 "\ Show only the current defun." nil]) (defalias 'pascal-outline-next-defun #[nil " " [pascal-end-of-defun pascal-hide-other-defuns] 1 "\ Move to next function/procedure, hiding all others." nil]) (defalias 'pascal-outline-prev-defun #[nil " " [pascal-beg-of-defun pascal-hide-other-defuns] 1 "\ Move to previous function/procedure, hiding all others." nil]) (defalias 'pascal-outline-goto-defun #[nil " " [pascal-goto-defun pascal-hide-other-defuns] 1 "\ Move to specified function/procedure, hiding all others." nil])