;ELC   
;;; compiled by rms@mole.gnu.ai.mit.edu on Wed Aug 30 19:22:55 1995
;;; from file /home/fsf/rms/e19/lisp/modula2.el
;;; emacs version 19.29.9.
;;; 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.29")))
    (error "`modula2.el' was compiled for Emacs 19.29 or later"))


#@42 Syntax table in use in Modula-2 buffers.
(defvar m2-mode-syntax-table nil (#$ . 469))
#@38 Command to compile Modula-2 programs
(defvar m2-compile-command "m2c" (#$ . 561))
#@35 Command to link Modula-2 programs
(defvar m2-link-command "m2l" (#$ . 649))
#@25 Name of the executable.
(defvar m2-link-name nil (#$ . 731))
(byte-code "„L Á ÃÄÅ\n#ˆÃÆÇ\n#ˆÃÈÉ\n#ˆÃÊË\n#ˆÃÌÍ\n#ˆÃÎÍ\n#ˆÃÏÍ\n#ˆÃÐÍ\n#ˆÃÑÍ\n#ˆÃÒÍ\n#ˆÃÓÔ\n#ˆ\n)Á‡" [m2-mode-syntax-table make-syntax-table table modify-syntax-entry 92 "\\" 40 ". 1" 41 ". 4" 42 ". 23" 43 "." 45 61 37 60 62 39 "\""] 4)
#@31 Keymap used in Modula-2 mode.
(defvar m2-mode-map nil (#$ . 1038))
(byte-code "„¸ Á Ã\nÄÅ#ˆÃ\nÆÇ#ˆÃ\nÈÉ#ˆÃ\nÊË#ˆÃ\nÌÍ#ˆÃ\nÎÏ#ˆÃ\nÐÑ#ˆÃ\nÒÓ#ˆÃ\nÔÕ#ˆÃ\nÖ×#ˆÃ\nØÙ#ˆÃ\nÚÛ#ˆÃ\nÜÝ#ˆÃ\nÞß#ˆÃ\nàá#ˆÃ\nâã#ˆÃ\näå#ˆÃ\næç#ˆÃ\nèé#ˆÃ\nêë#ˆÃ\nìí#ˆÃ\nîï#ˆÃ\nðñ#ˆÃ\nòó#ˆÃ\nôõ#ˆÃ\nö÷#ˆÃ\nøù#ˆÃ\núû#ˆÃ\nüý#ˆ\n)Á‡" [m2-mode-map make-sparse-keymap map define-key "	" m2-tab "b" m2-begin "c" m2-case "d" m2-definition "e" m2-else "f" m2-for "h" m2-header "i" m2-if "m" m2-module "l" m2-loop "o" m2-or "p" m2-procedure "" m2-with "r" m2-record "s" m2-stdio "t" m2-type "u" m2-until "v" m2-var "w" m2-while "x" m2-export "y" m2-import "{" m2-begin-comment "}" m2-end-comment "\n" m2-newline "" suspend-emacs "" m2-visit "" m2-toggle "\f" m2-link "" m2-compile] 4)
#@55 *This variable gives the indentation in Modula-2-Mode
(defvar m2-indent 5 (#$ . -1818))
#@1074 This is a mode intended to support program development in Modula-2.
All control constructs of Modula-2 can be reached by typing C-c
followed by the first character of the construct.
\<m2-mode-map>
  \[m2-begin] begin         \[m2-case] case
  \[m2-definition] definition    \[m2-else] else
  \[m2-for] for           \[m2-header] header
  \[m2-if] if            \[m2-module] module
  \[m2-loop] loop          \[m2-or] or
  \[m2-procedure] procedure     Control-c Control-w with
  \[m2-record] record        \[m2-stdio] stdio
  \[m2-type] type          \[m2-until] until
  \[m2-var] var           \[m2-while] while
  \[m2-export] export        \[m2-import] import
  \[m2-begin-comment] begin-comment \[m2-end-comment] end-comment
  \[suspend-emacs] suspend Emacs     \[m2-toggle] toggle
  \[m2-compile] compile           \[m2-next-error] next-error
  \[m2-link] link

   `m2-indent' controls the number of spaces for each indentation.
   `m2-compile-command' holds the command to compile a Modula-2 program.
   `m2-link-command' holds the command to link a Modula-2 program.
(defalias 'modula-2-mode #[nil "À ˆÁ\n!ˆÃÅÇÈ!ˆÉÇÊ!ˆË\nÌ!ˆÇÎ!ˆÏPÇÑ!ˆÇÒ!ˆÓÇÔ!ˆÓÇÕ!ˆÖÇ×!ˆØÇÈ!ˆÉÇÙ!ˆÚÇÛ!ˆÜÇÝ!ˆÓÞß!‡" [kill-all-local-variables use-local-map m2-mode-map modula-2-mode major-mode "Modula-2" mode-name make-local-variable comment-column 41 end-comment-column 75 set-syntax-table m2-mode-syntax-table paragraph-start "$\\|" page-delimiter paragraph-separate paragraph-ignore-fill-prefix t require-final-newline comment-start "(* " comment-end " *)" comment-start-skip "/\\*+ *" comment-indent-function c-comment-indent parse-sexp-ignore-comments run-hooks m2-mode-hook] 2 (#$ . 1914) nil])
#@64 Insert a newline and indent following line like previous line.
(defalias 'm2-newline #[nil "À Â ˆ	j)‡" [current-indentation hpos newline] 1 (#$ . 3623) nil])
#@26 Indent to next tab stop.
(defalias 'm2-tab #[nil "À 	¥T	_j‡" [current-indentation m2-indent] 2 (#$ . 3788) nil])
#@54 Insert a BEGIN keyword and indent for the next line.
(defalias 'm2-begin #[nil "ÀcˆÁ ˆÂ ‡" ["BEGIN" m2-newline m2-tab] 1 (#$ . 3907) nil])
#@63 Build skeleton CASE statment, prompting for the <expression>.
(defalias 'm2-case #[nil "ÀÁ!Ã\nÄ±ˆÅ ˆÅ ˆÆ\nÇ±ˆ)ÈˆÉ ‡" [read-string "Case-Expression: " name "CASE " " OF" m2-newline "END (* case " " *);" 0 m2-tab] 3 (#$ . 4052) nil])
#@68 Build skeleton DEFINITION MODULE, prompting for the <module name>.
(defalias 'm2-definition #[nil "ÀcˆÁÂ!‰ÄÅ±ˆ)ÆÇ!‡" ["DEFINITION MODULE " read-string "Name: " name ";\n\n\n\nEND " ".\n" previous-line 3] 5 (#$ . 4294) nil])
#@47 Insert ELSE keyword and indent for next line.
(defalias 'm2-else #[nil "À ˆÁ\nÃ\"ˆÄcˆÀ ˆÅ ‡" [m2-newline backward-delete-char-untabify m2-indent nil "ELSE" m2-tab] 3 (#$ . 4527) nil])
#@70 Build skeleton FOR loop statment, prompting for the loop parameters.
(defalias 'm2-for #[nil "ÀcˆÁÂ!Ã‰‰Ç±ˆÁÈ!‰cˆÁÉ!‰Ê˜„' Ë\f±ˆÌcˆÍ ˆÍ ˆÎÏÐ±ˆ+ÑˆÒ ‡" ["FOR " read-string "Loop Initialiser: " nil by limit name " TO " "Limit: " "Step: " "" " BY " " DO" m2-newline "END (* for " " to " " *);" 0 m2-tab] 6 (#$ . 4717) nil])
#@66 Insert a comment block containing the module title, author, etc.
(defalias 'm2-header #[nil "ÀcˆÁÂ!cˆÃcˆÄ cˆÅcˆÆ cˆÇÈ ÉÊ Ë°cˆÌc‡" ["(*\n    Title: 	" read-string "Title: " "\n    Created:	" current-time-string "\n    Author: 	" user-full-name "\n		<" user-login-name "@" system-name ">\n" "*)\n\n"] 5 (#$ . 5054) nil])
#@66 Insert skeleton IF statment, prompting for <boolean-expression>.
(defalias 'm2-if #[nil "ÀcˆÁÂ!‰Ä±ˆÅ ˆÅ ˆÆÇ±ˆ)ÈˆÉ ‡" ["IF " read-string "<boolean-expression>: " thecondition " THEN" m2-newline "END (* if " " *);" 0 m2-tab] 4 (#$ . 5380) nil])
#@33 Build skeleton LOOP (with END).
(defalias 'm2-loop #[nil "ÀcˆÁ ˆÁ ˆÂcˆÃˆÄ ‡" ["LOOP" m2-newline "END (* loop *);" 0 m2-tab] 1 (#$ . 5634) nil])
#@68 Build skeleton IMPLEMENTATION MODULE, prompting for <module-name>.
(defalias 'm2-module #[nil "ÀcˆÁÂ!‰ÄÅ±ˆÆÇ!ˆÈ ˆÉ ˆÊ ˆË ˆÊ ˆÌ ˆÍ ˆÎÏ±ˆ)Ð ˆÊ ˆÑ ‡" ["IMPLEMENTATION MODULE " read-string "Name: " name ";\n\n\n\nEND " ".\n" previous-line 3 m2-header m2-type newline m2-var m2-begin m2-begin-comment " Module " " Initialisation Code " m2-end-comment m2-tab] 5 (#$ . 5785) nil])
(defalias 'm2-or #[nil "À ˆÁ\n!ˆÃcˆÀ ˆÄ ‡" [m2-newline backward-delete-char-untabify m2-indent "|" m2-tab] 2 nil nil])
(defalias 'm2-procedure #[nil "ÀcˆÁÂ!Ã‰Æ±ˆÁÇ!È±ˆÁÉ!‰Ê˜„$ Ë\f±ˆÌcˆÍ ˆÎcˆÍ ˆÍ ˆÏcˆcˆÌcˆÐˆÑ *‡" ["PROCEDURE " read-string "Name: " nil args name " (" "Arguments: " ")" "Result Type: " "" " : " ";" m2-newline "BEGIN" "END " 0 m2-tab] 3 nil nil])
(defalias 'm2-with #[nil "ÀcˆÁÂ!‰cˆÄcˆÅ ˆÅ ˆÆÇ±ˆ)ÈˆÉ ‡" ["WITH " read-string "Record-Type: " name " DO" m2-newline "END (* with " " *);" 0 m2-tab] 4 nil nil])
(defalias 'm2-record #[nil "ÀcˆÁ ˆÁ ˆÂcˆÃˆÄ ‡" ["RECORD" m2-newline "END (* record *);" 0 m2-tab] 1 nil nil])
(defalias 'm2-stdio #[nil "Àc‡" ["\nFROM TextIO IMPORT \n   WriteCHAR, ReadCHAR, WriteINTEGER, ReadINTEGER,\n   WriteCARDINAL, ReadCARDINAL, WriteBOOLEAN, ReadBOOLEAN,\n   WriteREAL, ReadREAL, WriteBITSET, ReadBITSET,\n   WriteBasedCARDINAL, ReadBasedCARDINAL, WriteChars, ReadChars,\n   WriteString, ReadString, WhiteSpace, EndOfLine;\n\nFROM SysStreams IMPORT sysIn, sysOut, sysErr;\n\n"] 1 nil nil])
(defalias 'm2-type #[nil "ÀcˆÁ ˆÂ ‡" ["TYPE" m2-newline m2-tab] 1 nil nil])
(defalias 'm2-until #[nil "ÀcˆÁ ˆÁ ˆÂcˆÃÄ!Å±ˆÆˆÇ ‡" ["REPEAT" m2-newline "UNTIL " read-string "<boolean-expression>: " ";" 0 m2-tab] 2 nil nil])
(defalias 'm2-var #[nil "À ˆÁcˆÀ ˆÂ ‡" [m2-newline "VAR" m2-tab] 1 nil nil])
(defalias 'm2-while #[nil "ÀcˆÁÂ!‰Ä±ˆÅ ˆÅ ˆÆÇ±ˆ)ÈˆÉ ‡" ["WHILE " read-string "<boolean-expression>: " name " DO" m2-newline "END (* while " " *);" 0 m2-tab] 4 nil nil])
(defalias 'm2-export #[nil "Àc‡" ["EXPORT QUALIFIED "] 1 nil nil])
(defalias 'm2-import #[nil "ÀcˆÁÂ!cˆÃc‡" ["FROM " read-string "Module: " " IMPORT "] 2 nil nil])
(defalias 'm2-begin-comment #[nil "n„	 À	Â\"ˆÃc‡" [indent-to comment-column 0 "(*  "] 3 nil nil])
(defalias 'm2-end-comment #[nil "n„ jˆÁc‡" [end-comment-column "*)"] 1 nil nil])
(defalias 'm2-compile #[nil "À ÂÄ	Q!‡" [buffer-name modulename compile m2-compile-command " "] 4 nil nil])
(defalias 'm2-link #[nil "À \nƒ Ã\fÅ\nQ!‡Ã\fÅÆÇ	\"‰Q!‡" [buffer-name modulename m2-link-name compile m2-link-command " " read-string "Name of executable: "] 6 nil nil])
(defalias 'm2-execute-monitor-command #[(command) "Â	!ÃšÅ	ÆÇ‰ÈÉ\nP&*‡" [shell-file-name shell file-name-nondirectory "csh" csh call-process nil t "-cf" "exec " command] 8])
(defalias 'm2-visit #[nil "À‰‰ŠÄÅ!ÆÇ!ˆÈÉ	P!ˆebˆÀÊË�ˆÀÌÍ�ˆ„/ \n„/ ÎÏ	\"ˆ)ƒD Ð!ˆ\n…K ŠÐ\n!)‚K \n…K Ð\n!+‡" [nil modulename modfile deffile read-string "Module name: " switch-to-buffer "*Command Execution*" m2-execute-monitor-command "m2whereis " (byte-code "ÀÁ!ˆÂ”Â•{À‡" [re-search-forward "\\(.*\\.def\\) *$" 1 deffile] 2) ((search-failed)) (byte-code "ÀÁ!ˆÂ”Â•{À‡" [re-search-forward "\\(.*\\.mod\\) *$" 1 modfile] 2) ((search-failed)) error "I can find neither definition nor implementation of %s" find-file] 3 nil nil])
#@52 Toggle between .mod and .def files for the module.
(defalias 'm2-toggle #[nil "À ÁÂOÃ˜ƒ ÄÀ ÅÁOÆP!‡À ÁÂOÆ˜ƒ( ÄÀ ÅÁOÃP!‡À ÇÂOÈ˜ƒ< ÄÀ ÅÇOÉP!‡À ÇÂOÉ˜…O ÄÀ ÅÇOÈP!‡" [buffer-name -4 nil ".def" find-file-other-window 0 ".mod" -3 ".mi" ".md"] 4 (#$ . 9025) nil])
