IMD 1.17: 19/01/2010 21:02:27 4400p32 emacs v1.2 l1.1 11/6/86 2/4 Tektronix 4400P32 Emacs -- Version 1.2 Level 1.1 Â(UniFLEX BackupŬü¤ż0(íOXPPPÅÜü¤Åì0(íP¤QQQÆ ü¤Æ0(íQðRRRÆ<ü¤ÆL0(íR <SSSÆlü¤Æ|0(íS ˆTTT ࣠à£j–Tektronix 44042  !"#$%&'()*+,-./01234('&%$#"! Q  Rò0block-comm.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(defun (begin-block-comment (beginning-of-line) (insert-string "\n/**************************************************************************\n") (setq right-margin 77) (setq left-margin 1) ) (end-block-comment (if (! (bolp)) (newline)) (insert-string "**************************************************************************/\n") ) (justify-block-comment (save-excursion (search-reverse "/*****") (end-of-line) (newline) (forward-character) (set-mark) (search-forward "******/") (beginning-of-line) (backward-character) (newline) (backward-character) (backward-character) (justify-paragraph) (search-reverse "/*****") (end-of-line) (delete-next-character) (search-forward "******/") (beginning-of-line) (delete-previous-character) ) ) ) (local-bind-to-key "begin-block-comment" "\e{") (local-bind-to-key "end-block-comment" "\e}") (local-bind-to-key "justify-block-comment" "\ej") (setq prefix-string "block comment") (novalue) ÿRZ0\ÿl$<=ÿ(Z9ÿ|ýTÿ û¦ÿþJþöZÿJû¾ý–fp`.ÿïO fp`pN^Nuÿÿÿÿÿÿÿÿÿÿÿÿ  ò0block-comm.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã4defun6begin-block-comment$beginning-of-line€ insert-string`M /************************************************************************** @setq  right-marginZM,ÿÄ left-marginZæend-block-comment\if,!bolpnewlinefþ˜`L**************************************************************************/ justify-block-commentØsave-excursion<search-reverse/***** end-of-lineþà$forward-characterset-mark<search-forward******/üè&backward-characterþ2ÿØÿÒ$justify-paragraph þÆþâþö(delete-next-character ÿ,ÿHü@,delete-previous-character@local-bind-to-keyûÄ{"ÿÄüØ}"ÿ¢ýœjFü.  prefix-string  block commentnovalueÿÿÿÿÿÿÿÿ5  6ò0buff.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; This code written at CMU, on or about Sun Jan 25 07:32:39 1981 ; by Doug Philips. ; ; Modified: ; 10-Sept-81 Jeffrey Mogul @ Stanford ; - now self-contained (no external functions needed) ; ; Mlisp code for doing a one-line buffer listing in the mini-buffer. ; If buffer list is longer than one line, it will print a line at a time ; and wait for a character to be input before moving on to the next line... ; Note: buffers that have been changed since they were last saved are ; prefixed with an Asterisk(*)... and buffers that have no file associated ; with them are prefixed with a hash-mark(#) and empty buffers are flagged ; with a AtSign(@). ; Note: "load"ing this file binds 'one-line-buffer-list' to ^X^B. ; Note: since buffers with no file associated with them are considered ; scratch buffers, the hashmark (#) never is used, and new buffers not ; yet associated with files are invisible. (defun (first-non-blank ; a useful function (beginning-of-line) (while (| (= (following-char) 32) ; space (= (following-char) 9)) ; tab (forward-character) ) (current-column) ; returned for convenience ) (skip-forward-matching char ; originally in electric-lisp (setq char (following-char)) (forward-character) (while (!= (following-char) char) (forward-character) ) (forward-character) ) (one-line-buffer-list msg puw empty (setq puw pop-up-windows) ; save value for later (setq pop-up-windows 0) ; re-use current window. (save-excursion  (list-buffers) ; generate buffer listings (temp-use-buffer "Buffer list") (beginning-of-file) (kill-to-end-of-line) ; for loops needed!!!! (kill-to-end-of-line) (kill-to-end-of-line) (kill-to-end-of-line) (beginning-of-file) ; Flag all the modified buffers... (while (! (eobp)) (beginning-of-line) ; back to top of buffer (while (! (= 15 (current-column))) (forward-character)) (if (= (following-char) 'M') (progn (delete-next-character) (forward-character) (insert-character '*'))) (next-line)) (beginning-of-file) ; eliminate Non-file(Scratch?) buffers... (while (! (error-occurred (search-forward " Scr "))) (beginning-of-line) (kill-to-end-of-line) (kill-to-end-of-line) ) (beginning-of-file) ; start at top again (while (! (eobp)) ; and wipe out the first - (setq empty (is-zero?)) ; (remember if buffer is empty) (beginning-of-line) (delete-white-space) ; - two columns of the buffer (delete-next-word) ; listing which are the size (delete-white-space) ; and type columns... (delete-next-word) (delete-white-space) (if empty (progn (beginning-of-line) (insert-string "@") (beginning-of-line) ) ) (next-line) ) (beginning-of-file) ; back at the beginning again ; Flag all the unnamed buffers... (while (! (error-occurred (search-forward "[none]"))) (beginning-of-line) (insert-character '#') (next-line) ) (beginning-of-file) ; back to the top! (while (! (eobp)) ; hack out all but buffer name (while (& (!= (following-char) ' '); space or (!= (following-char) 9)); tab! (forward-character) ) (kill-to-end-of-line) (next-line) (beginning-of-line) ) (end-of-file) (delete-previous-character) ; kill trailing crlf (beginning-of-file) ; go back and change (error-occurred (replace-string "\n" ", ")) ; newlines to /, /s (beginning-of-file) (set-mark) (end-of-file) ; suck in buffer contents (setq msg (concat "Buffers: " (region-to-string))) ) (setq pop-up-windows puw) ; restore to previous value (if (> (length msg) 76) ; attempt to get string on one (setq msg (substr msg 10 -9)); line ) (while (> (length msg) 76) ; multi-line mode (message (concat (substr msg 1 76) "$")); print nth line (setq msg (substr msg 77 10000000)); hack it off, and (get-tty-character) ; wait for more  ) (message msg) ; print out final line ) (is-zero? (first-non-blank) (if (= (following-char) '0') (progn (forward-character) (if (| (= (following-char) 32) (= (following-char) 9)) 1 0 ) ) 0 ) ) ) (bind-to-key "one-line-buffer-list" "\^X\^B") (novalue) print a line at a time ; and wait for a character to be input before moving on to the next line... ; Note: buffers that have been changed since they were last saved are ; prefixed with an Asterisk(*).    ò0buff.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã Êdefun first-non-blank$beginning-of-line¢whilef|>="following-charZ ÿÆÿÔZ $forward-character"current-columnžskip-forward-matchingchar$setqÿÔÿ"ÿZ.þÖ"!=þúÿ ÿ,ÿ&pone-line-buffer-listmsgpuwempty.ÿ:ÿÐ"pop-up-windowsÿ ÿÜZjsave-excursion  list-buffers@temp-use-buffer Buffer list$beginning-of-file&kill-to-end-of-lineÿÞÿØÿÒÿ¨ý,!eobpüº&üØÿÌüøZý`ý6œifüÈüÖZMrprogn(delete-next-characterüÆ,insert-characterZ* next-lineþŒ|ûôdþè^error-occurred<search-forward Scr ûfþ:þ4þ ôûr þfþt(üdýis-zero?û&delete-white-space$delete-next-wordÿºÿÚÿ®Rþ(ü†FþFú 4 insert-string@úfþrýLúx,ýl&þˆ þ¤[none]ú"þZ#þ ü¾lú& ýý(Hú<&û.ú4Z ûú Z úPü‚ý´ùœ end-of-file,delete-previous-characterüRý†Lreplace-string , ûªset-markÿ@fùôútZconcat Buffers: $region-to-stringùŽú^ú~ûÊ<> lengthùÎZL<ù:ùº0substrùšZ Zÿÿÿ÷¼÷úÿ† ÿ”ùrZLPmessage6þàÿ”ù>ZZL$(øŽùÿXùZMZ˜–€$get-tty-character ÿhøÂšûâ"first-non-blankrú\÷0÷>Z0Púl÷hDú6.öö÷÷Z öðöþZ ZZZ: bind-to-key÷Ünovalue ; listing which are the size (delete-white-space) ; and type columns... (delete-next-word) (delete-white-space) (if empty (progn (beginning-of-line) (insert-string "@") (beginning-of-line) ) ) (next-line) ) (beginning-of-file) ; back at the beginning again ; Flag all the unnamed buffers... (while (! (error-occurred (search-forward "[none]"))) (beginning-of-line) (insert-character '#') (next-li1¥  1¦ò0buffer-edit.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl" ; Buffer edit: this package provides an alternative binding for ^X^B. It ; creates a buffer listing in which you can engage in an interactive dialog ; with Emacs about the fate of each buffer. You can mark them for saving, ; deleting, closing, unsaving, and the like; when you exit from buffer-edit ; mode all of the marks are processed and the various buffers meet their ; fate. ; This is a real win when you are trying to edit a large system with files ; all over the place. ; ; The listing is sorted so that the file buffers come first, and the cursor ; is left sitting on the line corresponding to the buffer in which you ; typed the ^X^B command. ; ; Brian K. Reid, Stanford University, August 1982 ; ; Modified by Jane Laursen, Tektronix, November 1984, to implement ; quit command and make file operations (close, reread, save) work. (declare-global &old-buffer) (defun (buffer-edit bufn keep line (setq &old-buffer (current-buffer-name)) (setq bufn &old-buffer) (list-buffers) (pop-to-buffer "Buffer list") (setq mode-line-format " Buffer edit. Commands: n p s c d r o m u e ? Exit: g or q") (end-of-file) (insert-string "x\n") (beginning-of-file) (ebuf-pretty-line) (next-line) (ebuf-pretty-line) (next-line) (set-mark) (while (& (! (looking-at "^x$")) (! (eobp))) (ebuf-pretty-line) (setq keep 1) (if (!= (ebuf-buffer-type) "File") (setq keep 2)) (if (= (ebuf-get-name) "Buffer list") (setq keep 0)) (if (!= keep 1) (progn (save-excursion (beginning-of-line) (set-mark) (end-of-line) (forward-character) (setq line (region-to-string)) (erase-region) (if (= keep 2) (progn (end-of-file) (insert-string line)) ) ) ) (next-line) ) ) (delete-next-character) (delete-next-character) (exchange-dot-and-mark) (error-occurred (re-search-forward ; this is so slimy... (concat "^.................." bufn)) (position-within-line) ) (novalue) ) ; Rewrite the listing format to make it nicer, and to leave room for flags (ebuf-pretty-line (if (= (ebuf-buffer-type) "File") (progn (ebuf-goto 42) (while (looking-at " ") (delete-next-character)) ) ) (ebuf-goto 16) (insert-string " ") (beginning-of-line) ) ; Return the string type of the buffer listed in the current line. (ebuf-buffer-type (save-excursion (ebuf-goto 9) (set-mark) (goto-character (+ (dot) 4)) (region-to-string) ) )  ; Return the name attached to the buffer listed in the current line ; This is pretty tricky because the buffer listing doesn't really delimit ; the buffer name properly. (ebuf-get-name (save-excursion (ebuf-goto 18) (set-mark) (end-of-line) (while (! (| (bolp) (= (preceding-char) ' '))) (backward-character)) ; move past file name (while (& (! (bolp))(= (preceding-char) ' ')) (backward-character)) ; move past blanks (while (! (| (bolp) (= (preceding-char) ' '))) (backward-character)) ; move past mode name (while (& (! (bolp)) (= (preceding-char) ' ')) (backward-character)) ; move to end of buffer name (region-to-string) ) ) ; return 1 if this is a real buffer and 0 if it is not (ebuf-is-real-buffer v (setq v (ebuf-buffer-type)) (& (!= v "Type") (!= v "----")) ) ; return the status character (D for deleted, etc.) that we put there (ebuf-status (ebuf-goto 16) (following-char) ) (ebuf-next-line (next-line) (while (! (| (ebuf-is-real-buffer) (eobp))) (next-line) ) (if (eobp) (previous-line)) (position-within-line) ) ; move up one line, but don't move into the column headings (ebuf-previous-line (previous-line) (beginning-of-line) (while (! (| (ebuf-is-real-buffer) (eobp))) (next-line) ) (position-within-line) ) ; enter a recursive edit on this buffer. (ebuf-edit (if (ebuf-is-real-buffer) (save-excursion (delete-other-windows) (pop-to-buffer (ebuf-get-name)) (message "Beginning recursive edit...") (sit-for 5) (recursive-edit) (pop-to-buffer "Buffer list") (position-within-line) ) (error-message "not a buffer") ) ) ; exit from this buffer-editing routine, and fill the screen with current buf (ebuf-exit where (if (ebuf-is-real-buffer) (progn (setq where (ebuf-get-name)) (message "Exiting to buffer " where " ...") (ebuf-cleanup) (pop-to-buffer where) (delete-other-windows) ) (error-message "not a buffer") ) ) (ebuf-quit (pop-to-buffer &old-buffer) (delete-other-windows) ) (ebuf-open where (if (ebuf-is-real-buffer) (progn (setq where (ebuf-get-name)) (pop-to-buffer &old-buffer) (delete-other-windows) (if (= where &old-buffer) (split-current-window) (pop-to-buffer where)) ) ) ) ) (defun ; mark current buffer for closing (write and then delete) (ebuf-close (ebuf-flag-column 16 'C')) ; mark the current buffer for deletion without writing (ebuf-delete (ebuf-flag-column 16 'D')) ; mark the current buffer for saving (ebuf-save (ebuf-flag-column 16 'S')) ; mark the current buffer for nonnsaving (ignore "buffer-is-modified" flag) (ebuf-mark (ebuf-flag-column 16 'N')) ; mark current buffer for reverting (reread file contents) (ebuf-revert (ebuf-flag-column 16 'R')) ; unmark the current buffer for all actions (ebuf-undelete (ebuf-flag-column 16 ' ') ) ; Put a flag character given as argument 2 into the column given as arg 1 (ebuf-flag-column (temp-use-buffer "Buffer list") (ebuf-goto (arg 1)) (delete-next-character) (insert-character (arg 2)) (position-within-line) ) (ebuf-goto (beginning-of-line) (goto-character (+ (dot) (arg 1))) ) ; put the cursor where we want it (position-within-line (ebuf-goto 17) ) (mouse-position-within-line (move-dot-to-mouse) ; from tek4404.ml (position-within-line) ) (mouse-ebuf-exit (mouse-ignore-button) ; from tek4404.ml (ebuf-exit) ) (mouse-ebuf-open (mouse-ignore-button) (ebuf-open) ) ) (defun (message-char (message (concat (arg 1) " Press to continue.")) (get-tty-character) ) (ebuf-cleanup bstat ebuf-name (pop-to-buffer "Buffer list") (beginning-of-file) (next-line) (next-line) (while (! (eobp)) (setq bstat (ebuf-status))  (setq ebuf-name (ebuf-get-name)) (if (= bstat 'D') ; delete without saving (progn (if (error-occurred (delete-buffer ebuf-name)) (message-char (concat ebuf-name " cannot be deleted."))) (beginning-of-line) (kill-to-end-of-line) (delete-next-character) ) (= bstat 'S') ; save buffer (progn (save-excursion (if (= (ebuf-buffer-type) "File") (progn (temp-use-buffer ebuf-name) (if (error-occurred (write-current-file) (ebuf-flag-column 14 ' ')) (message-char (concat ebuf-name " cannot be written to file."))) ) (progn (temp-use-buffer ebuf-name) (if (error-occurred (write-named-file (get-tty-file (concat "File for " ebuf-name ": "))) ) (message-char (concat ebuf-name "cannot be written to file."))) ) ) ) (next-line) ) (= bstat 'C') ; close--save then delete (progn (if (error-occurred (save-excursion (if (= (ebuf-buffer-type) "File") (progn (temp-use-buffer ebuf-name) (write-current-file)) ) ) ) (message-char (concat ebuf-name " cannot be written to file." " Closing fails.")) (progn (delete-buffer ebuf-name) (beginning-of-line) (kill-to-end-of-line) (delete-next-character) ) ) ) (= bstat 'N') ; nonsave: mark unmodified (progn  (save-excursion (temp-use-buffer ebuf-name) (setq buffer-is-modified 0) ) (ebuf-flag-column 14 ' ') (next-line) ) (= bstat 'R') ; revert buffer (progn (save-excursion (if (= (ebuf-buffer-type) "File") (progn (temp-use-buffer ebuf-name) (if (error-occurred (read-file (current-file-name)) (ebuf-flag-column 14 ' ')) (message-char (concat ebuf-name " cannot be reread."))) ) )) (next-line) ) (next-line) ) (beginning-of-line) ) ) (ebuf-beep (error-message "Cmds: Next, Prev, Save, Close, Delete, Reread, Mark, Unmark, Edit, Goto, Open, Quit, ?") ) ) (defun (ebuf-help (pop-to-buffer "Help") (erase-buffer) (insert-string " Move cursor to line for a buffer, then type a command:\n" " n,^N,sp -- move to next line\n" " p,^P,^H -- move to previous line\n" " s -- save buffer (write to associated file)\n" " c -- close buffer (write to file, then delete buffer)\n" " d -- delete buffer (erase the buffer, not affecting the file)\n" " r -- reread from file\n" " m -- mark as not modified (remove the 'needs saving' flag)\n" " u -- unmark (undo edit-buffer marks)\n" " e -- recursive edit this buffer\n" " g, mouse-middle -- exit with processing, goto selected buffer\n" " o -- open window to previous buffer & selected buffer, with no processing\n"  " q -- quit without processing, return to previous buffer\n" " mouse-left -- move to line containing mouse\n" ) (beginning-of-file) (sit-for 0) (next-window) ) ) (bind-to-key "buffer-edit" "\^X\^B") (progn loop (save-excursion (temp-use-buffer "Buffer list") (define-keymap "ebuf-keymap") (use-local-map "ebuf-keymap") (setq loop 0) (while (<= loop 127) (local-bind-to-key "ebuf-beep" loop) (setq loop (+ loop 1)) ) (setq loop '0') (while (<= loop '9') (local-bind-to-key "digit" loop) (setq loop (+ loop 1)) ) (local-bind-to-key "ebuf-help" "?") (local-bind-to-key "ebuf-delete" "d") (local-bind-to-key "ebuf-delete" "D") (local-bind-to-key "ebuf-delete" " ") (local-bind-to-key "ebuf-previous-line" "p") (local-bind-to-key "ebuf-previous-line" "P") (local-bind-to-key "ebuf-previous-line" "") (local-bind-to-key "ebuf-previous-line" "") (local-bind-to-key "ebuf-next-line" "n") (local-bind-to-key "ebuf-next-line" "N") (local-bind-to-key "ebuf-next-line" "") (local-bind-to-key "ebuf-next-line" " ") (local-bind-to-key "ebuf-close" "c") (local-bind-to-key "ebuf-close" "C") (local-bind-to-key "ebuf-edit" "e") (local-bind-to-key "ebuf-edit" "E") (local-bind-to-key "ebuf-undelete" "u") (local-bind-to-key "ebuf-undelete" "U") (local-bind-to-key "ebuf-exit" "g") (local-bind-to-key "ebuf-exit" "G") (local-bind-to-key "ebuf-save" "s") (local-bind-to-key "ebuf-save" "S") (local-bind-to-key "ebuf-mark" "m") (local-bind-to-key "ebuf-mark" "M") (local-bind-to-key "ebuf-revert" "r") (local-bind-to-key "ebuf-revert" "R") (local-bind-to-key "ebuf-quit" "q") (local-bind-to-key "ebuf-quit" "Q") (local-bind-to-key "ebuf-open" "o") (local-bind-to-key "ebuf-open" "O") (local-bind-to-key "ebuf-beep" "\^X\^B") (local-bind-to-key "redraw-display" "\^L") (local-bind-to-key "search-forward" "\^S") (local-bind-to-key "search-reverse" "\^R") (local-bind-to-key "argument-prefix" "\^U") (local-bind-to-key "previous-window" "\^Xp") (local-bind-to-key "previous-window" "\^XP") (local-bind-to-key "next-window" "\^Xn") (local-bind-to-key "next-window" "\^XN") (local-bind-to-key "delete-other-windows" "\^X1") (local-bind-to-key "next-page" "\^V") (local-bind-to-key "previous-page" "\ev") (local-bind-to-key "previous-page" "\eV") (local-bind-to-key "scroll-one-line-up" "\^Z") (local-bind-to-key "scroll-one-line-down" "\eZ") (local-bind-to-key "beginning-of-file" "\e<") (local-bind-to-key "end-of-file" "\e>") (local-bind-to-key "return-to-monitor" "\^_") (local-bind-to-key "exit-emacs" "\^C") (local-bind-to-key "mouse-position-within-line" "\ePA1D") ; left mouse button (local-bind-to-key "mouse-ebuf-exit" "\ePA2D") ; middle mouse button (local-bind-to-key "mouse-ebuf-open" "\ePA3D") ; right mouse button ) ) (message-char (concat ebuf-name " cannot be reread."))) ) )) (next-l'ù  'úò0buffer-edit.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã@declare-global &old-buffer defun† buffer-editbufnkeepline\setq &old-buffer&current-buffer-nameÿ¨ÿZÿ´  list-buffers> pop-to-buffer Buffer listzÿ8$mode-line-formatP= Buffer edit. Commands: n p s c d r o m u e ? Exit: g or q end-of-file6 insert-stringx $beginning-of-file$ebuf-pretty-line next-lineÿÄÿâset-markÖwhilez&H!4 looking-at^x$ÿ¼eobpÿ &ýFkeepZ|ifR!=$ebuf-buffer-typeFileü¸ÿvZTÿˆ:=  ebuf-get-nameýüdÿ"ZHÿ4ÿDÿZ(prognsave-excursion$beginning-of-lineýâ end-of-line$forward-character0û�ûr$region-to-string  erase-region2þ$þ ýøZþôüf ü~úüüð(delete-next-characterÿÜ(exchange-dot-and-mark´error-occurredjre-search-forwardFconcat&^..................ùä(position-within-linenovaluežû¢hüÂý>üâýPý”$ ebuf-gotoZ*&ûÂûü þxÿºZúÌ ýTzüVtý&ÿ~Z û6Tgoto-character2+dotZýRPüFJü¬ÿZú¼üÞŽúÌbúò\|bolp0ûÔ"preceding-charZ &backward-character2ú>&úP ú^ÿ„ûfÿ–Z ÿ²2ú &ú2 ÿDÿRû4ÿdZ ÿ€2ùÚ&ùì ùúÿ ûÿ2Z ÿNüšebuf-is-real-bufferv÷BÿêúFNùn$ú$ÿÒType$úÿ®----N ebuf-statusýZ"following-char~ebuf-next-lineøT$ø’ø¸ýÊþâøôø0,ù,øâ  previous-lineûú\ebuf-previous-lineÿ¸ùò$ø ø0ýBþZøl÷¨ûž| ebuf-edit`ø‚þ ùx(delete-other-windows õòøØHmessage.Beginning recursive edit..."sit-forZ"recursive-edit& pop-to-bufferõZ(position-within-line@ error-message  not a bufferr ebuf-exitwhere>if&ebuf-is-real-bufferö÷œ>setqÿ’  ebuf-get-name^message&Exiting to buffer ÿ, ...  ebuf-cleanup þDþè(delete-other-windows þ^þxF ebuf-quit$ýè &old-bufferÿ�¤ ebuf-openþL‚þ^þnvö&þŽþ.þ  ýxÿ”ÿ8Lþ(õŽþÿv(split-current-window ý&ýÊNdefunR ebuf-close4ebuf-flag-columnZZC4 ebuf-deleteÿ²ZZD2 ebuf-saveÿ€ZZS2 ebuf-markÿNZZN4 ebuf-revertÿZZR6 ebuf-undeleteþäZZ ²þÎ(temp-use-bufferðü$öŒargZ(delete-next-character2insert-characterÿšZû(HöóÆ<goto-characterö–ö¤ÿLZúÚõºZXmouse-position-within-line$move-dot-to-mouseútNmouse-ebuf-exit&mouse-ignore-buttonúŽ.mouse-ebuf-openÿ¶ü°ü¶Š message-charFúè@ôþ$Z, Press to continue.$get-tty-character”úÜbstat ebuf-name ùîrïXïšï”<ïÒïøeobp*ùÄÿˆ ebuf-statusùšÿvù¬ÖùFð¬ÿFZD¢ñjù&,òx& delete-bufferÿ8þp2òŒÿ & cannot be deleted.ðÊ&kill-to-end-of-lineüvïöþ�ZSÞðJÒsave-excursion°øN0ï´$ebuf-buffer-typeïXšïì û¬þ0ˆøBñX&write-current-fileú2ZZ @ý::ñVýÖ. cannot be written to file.àïR ûý–Î÷lˆð¾‚write-named-file^ get-tty-file>ðº File for ý: @üZ:ðvüö.cannot be written to file.ì†îüžZC¨îX¢ö~<ïÐ6þ0ölíÒþ"í”î( ùèülþL<û¸6ïÔüTþ‚$ Closing fails.$íÔ üäüíüý6ùÈíHûâZNhíœFýV ùVûÚ4õò&buffer-is-modifiedZ÷ÚZZ ëNìÌûfZRÖí ÊüÚÄõ@ì¦üöìh¬ìü ø¼û@šõ\îh@ read-file$current-file-name÷(ZZ 8ú02îLúÌ& cannot be reread.êdê^ì~Œ ebuf-beeppóÚjVCmds: Next, Prev, Save, Close, Delete, Reread, Mark, Unmark, Edit, Goto, Open, Quit, ?”öŽ ebuf-helpòúHelp  erase-buffer insert-stringL9 Move cursor to line for a buffer, then type a command: 4! n,^N,sp -- move to next line 8% p,^P,^H -- move to previous line D1 s -- save buffer (write to associated file) N: c -- close buffer (write to file, then delete buffer) VB d -- delete buffer (erase the buffer, not affecting the file) . r -- reread from file T@ m -- mark as not modified (remove the 'needs saving' flag) <) u -- unmark (undo edit-buffer marks) 8$ e -- recursive edit this buffer VB g, mouse-middle -- exit with processing, goto selected buffer bN o -- open window to previous buffer & selected buffer, with no processing P< q -- quit without processing, return to previous buffer D0 mouse-left -- move to line containing mouse åîpZ next-windowR bind-to-key buffer-edit 4æÌloop ön ònã‚> define-keymap ebuf-keymap& use-local-mapÿÆî¦ÿpZzä|$<=ÿFZ0local-bind-to-keyùœÿ î8ÿèðþöZîþâZ0^ãîÿvþÈZ9$ÿ†digitþœ íÆþ�è~þ„Z ÿBùŠ? ÿ"ïÐd ÿï°D þâï� þÂêÒp þ¢ê²P þ‚ê’ þbêr<þB"ebuf-next-linen þÿÈN ýæÿ¨ýÆÿˆæV ý´îc ý”íðC ýtéàe ýTéÀE ý4î®u ýîŽU üôêÜg üÔê¼G ü´í–s ü”ívS ütíˆm üTíhM ü4ízr üíZR ûôëNq ûÔë.Q û´ëTo û”ë4Oûtõ*ú€<ûb"redraw-display <û&"search-forward<úê"search-reverse<ú®"argument-prefix>úr"previous-windowp\local-bind-to-key"previous-windowP:ÿ¨ next-windown"ÿnÿÊN"ÿLè¢16ÿ* next-page<þô  previous-pagev"þ¸ÿÈV@þ–&scroll-one-line-upDþV(scroll-one-line-downZ@þ$beginning-of-file<:ýÒ end-of-file>>ý˜$return-to-monitor8ýZ exit-emacsLý".mouse-position-within-linePA1D$üÖêPA2D@ü²"mouse-ebuf-openPA3DZN  Oò0c-mode.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(defun (begin-C-comment (move-to-comment-column) (setq left-margin (current-column)) (setq right-margin 78) (setq prefix-string " ") (insert-string "/* ") ) ) (defun (end-C-comment (setq right-margin 1000) (if (!= (preceding-char) ' ') (insert-string " ")) (insert-string "*/") ) ) (defun (c-mode (setq right-margin 1000) (setq prefix-string " ") (setq mode-string "C") (remove-all-local-bindings) (local-bind-to-key "begin-C-comment" "`") (local-bind-to-key "end-C-comment" "'") (local-bind-to-key "indent-C-procedure" "j") (novalue) ) ) íhM ü4ízr üíZR ûôëNq ûÔë.Q û´ëTo û”ë4Oûtõ*ú€<ûb"redraw-display <û&"search-forward<úê"search-reverse<ú®"‹  Œò0c-mode.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã\defunDbegin-C-comment*move-to-comment-columnXsetq left-margin"current-column.ÿ¬  right-marginZN<ÿ~  prefix-string 6 insert-string/* Æþ¨À end-C-commentþæÿ>Zèpif@!="preceding-charZ ÿ> ÿ$*/hýâbc-modeþ&þ~Zèþþ˜þ²8þ mode-stringC,remove-all-local-bindings@local-bind-to-keyý,`"ÿÄþT'Bÿ¢&indent-C-procedurejnovaluesearch-forward<úê"search-reverse<ú®"5  6ò0 capword.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; ; This package provides reasonable functions to mess with the case of the ; current word. All of them operate on the word that contains or immediately ; precedes the cursor, and move the cursor to the next word when they are ; done. Normally they are bound to ESC-U, ESC-L, and ESC-C. ; ; Brian Reid March 82 ; (defun (upper-case-word cp rb (setq cp (dot)) (backward-word) (forward-word) (setq rb (dot)) (if (> cp rb) (progn (forward-word) (backward-word) (case-word-upper) (forward-word)) (case-word-upper)) (forward-word) (backward-word)) (lower-case-word cp rb (setq cp (dot)) (backward-word) (forward-word) (setq rb (dot)) (if (> cp rb) (progn (forward-word) (backward-word) (case-word-lower) (forward-word)) (case-word-lower)) (forward-word) (backward-word)) (capitalize-word cp rb (setq cp (dot)) (backward-word) (forward-word) (setq rb (dot)) (if (> cp rb) (progn (forward-word) (backward-word) (case-word-capitalize) (forward-word)) (case-word-capitalize)) (forward-word) (backward-word)) ) previous-windowp\local-bind-to-key"previous-windowP:ÿ¨ next-windown"ÿnÿÊN"ÿLè¢16ÿ* next-page<þô  previous-pagev"þ¸ÿÈV@þ–&scroll-one-line-up    ò0 capword.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã defunhupper-case-wordcprb4setqÿÀdot  backward-word  forward-wordÿ�ÿtÿ¢ˆif >ÿ(ÿ8Lprognÿ„ÿ^"case-word-upperÿVÿÜÿJÿ$Âlower-case-wordþœþ¬þ¼þŠþÎþÞþøþžþ‚þ°Xÿÿ"þTþd:ÿ0þÂþœ"case-word-lowerþ”ÿÜþˆþbÈcapitalize-wordýÚýêýúýÈþ þþ6ýÜýÀýî^þPþ`ý’ý¢@þnþýÚ(case-word-capitalizeýÌÿÖýÀýšer)) (forward-word) (backward-word)) (capitalize-word cp rb (setq cp (dot)) (backward-word) (forward-word) (setq rb (dot)) (if (> cp rb) (progn (forward-word) (backward-word) (case-word-capitalize) (forward-word)) (case-g  hò0 case-char.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(defun (case-character-invert c (prefix-argument-loop (if (! (eobp)) (progn (setq c (following-char)) (delete-next-character) (insert-character (if (& (<= 'a' c) (<= c 'z')) (- c 040) (& (<= 'A' c) (<= c 'Z')) (+ c 040) c))))) (novalue))) (bind-to-key "case-character-invert" '^^') rÿVÿÜÿJÿ$Âlower-case-wordþœþ¬þ¼þŠþÎþÞþøþžþ‚þ°Xÿÿ"þTþd:ÿ0s  tò0 case-char.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãFdefun.case-character-invertcØprefix-argument-loop°if,!eobpnprogn@setqÿV"following-char(delete-next-characterîinsert-characterÊÿL&$<=ZaþªÿàþžZz"-þ|Z .ÿ–ÿ¤ZAþZÿ�þNZZ"+þ,Z þnovalue, bind-to-keyý¸ZýúýÈþ þþ6ýÜýÀýî^þPþ`ý’ý¢@þnþýÚ(case-word-capitalizeýÌÿÖýÀýšer)) (forward-word) (backward-word)) (capitalize-word cp rb (setq cp (dot)) (backward-word) (forward-word) (setq rb (dot)) (if (> cp rb) (progn (forward-word) (backward-word) (case-word-capitalize) (forward-word)) (case-¶  ·ò0!centre-line.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; function to centre the current line (defun (centre-line width (save-excursion (beginning-of-line) (delete-white-space) (end-of-line) (delete-white-space) (setq width (current-column)) (beginning-of-line) (to-col (/ (- (+ left-margin (if (<= right-margin 200) right-margin (<= default-right-margin 200) default-right-margin 80) ) width) 2)) ) ) ) "-þ|Z .ÿ–ÿ¤ZAþZÿ�þNE  Fò0!centre-line.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãDdefun, centre-linewidthösave-excursion$beginning-of-line&delete-white-space end-of-lineÿÀ@setqÿD"current-columnÿV to-col/ê-Ð+ left-marginžif><=  right-marginZÈÿÜ6ÿÀ(default-right-marginZÈÿÔZPþZe, bind-to-keyý¸ZýúýÈþ þþ6ýÜýÀýî^þPþ`ý’ý¢@þnþýÚ(case-word-capitalizeýÌÿÖýÀýšer)) (forward-word) (backward-word)) (capitalize-word cp rb (setq cp (dot)) (backward-word) (forward-word) (setq rb (dot)) (if (> cp rb) (progn (forward-word) (backward-word) (case-word-capitalize) (forward-word)) (case-  ò0!cheap.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; cheap-shell opens a window that filters each command line through ; a pipe to the operating system. NOT effective for changing directory ; (use mlisp 'chd' function in pwd.ml). Handy for getting the results ; of a shell command into a window. (defun (cheap-shell (pop-to-buffer "*cheap-shell*") (local-bind-to-key "cheap-cr" "\n") (erase-buffer) (insert-string "emacs++ ") (novalue) ) ) (defun (cheap-cr command (beginning-of-line) (if (looking-at "emacs++ ") (progn (search-forward " ") (set-mark) (end-of-line) (setq command (region-to-string)) (if (eobp) (progn (newline) (end-of-file) (set-mark) (filter-region command) (insert-string "emacs++ ") ))) ))) rward-word) (backward-word)) (capitalize-word cp rb (setq cp (dot)) (backward-word) (forward-word) (setq rb (dot)) (if (> cp rb) (progn (forward-word) (backward-word) (case-word-capitalize) (forward-word)) (case-#  $ò0"cheap.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã@defun( cheap-shell@ pop-to-buffer  *cheap-shell*Tlocal-bind-to-keycheap-cr  erase-buffer< insert-stringemacs++ novalueâþÄÜÿXcommand$beginning-of-line˜if$ looking-atÿP^progn6search-forward set-mark end-of-lineBsetqþì$region-to-string”ÿeobpvÿnewline end-of-fileÿ,& filter-regionþ@ ýØýòckward-word)) (capitalize-word cp rb (setq cp (dot)) (backward-word) (forward-word) (setq rb (dot)) (if (> cp rb) (progn (forward-word) (backward-word) (case-word-capitalize) (forward-word)) (case- ]   ^ò0"comments.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(defun (box-region longest len (save-excursion (narrow-region) (beginning-of-file) (while (& (eolp) (! (eobp))) (delete-next-character)) (insert-string "\n") (setq longest 0) (error-occurred (while (! (eobp)) (end-of-line) (if (> (setq len (current-column)) longest) (setq longest len)) (forward-character))) (end-of-file) (while (& (! (bobp)) (= (preceding-char) '\n')) (delete-previous-character)) (insert-string "\n\n") (beginning-of-file) (insert-string "/*") (setq len 0) (while (< len longest) (insert-string "*") (setq len (+ len 1))) (insert-string "*\\\n") (error-occurred (while (! (eobp)) (insert-string "* ") (end-of-line) (to-col (+ longest 3)) (insert-string " *") (forward-character))) (end-of-file) (insert-string "\\*") (setq len 0) (while (< len longest)  (insert-string "*") (setq len (+ len 1))) (insert-string "*/\n") (widen-region) ))) (defun (debox-region (save-excursion (save-restriction (narrow-region) (beginning-of-file) (error-occurred (re-replace-string "/\\*[\\*]*" "")) (if (eolp) (delete-next-character)) (error-occurred (re-replace-string "[\\*]*\\*/[\n]*" "")) (error-occurred (re-replace-string "^\\* " "")) (error-occurred (re-replace-string "[ \t]*\\*$" "")))))) (defun (edit-block-comment (save-window-excursion esc-j mode (end-of-line) (re-search-reverse "^/\\*") (set-mark) (forward-character)(forward-character) (search-forward "*/") (if (eolp) (forward-character)) (debox-region) (setq esc-j (local-binding-of "\ej")) (local-bind-to-key "justify-paragraph" "\ej") (setq left-margin 0) (setq right-margin 75) (setq prefix-string "") (narrow-region) (message "Type ^C to resume editing") (setq mode mode-string) (setq mode-string "Comment edit") (save-excursion (recursive-edit)) (setq mode-string mode) (local-bind-to-key esc-j "\ej") (beginning-of-file) (set-mark) (end-of-file) (widen-region) (box-region) ))) gL9 Move cursor to line for a buffer, then type a command: 4! n,^N,sp -- move to next line 8% p,^P,^H -- ) ÿ  *ò0#comments.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãrdefunZ box-regionlongestlen save-excursion  narrow-region$beginning-of-file˜whileX&eolp,!eobp(delete-next-character4 insert-string &setqþŠZæerror-occurredÄþð ÿ.ÿ< end-of-linepifH>.ÿbþ"current-columnýÒÿ.ýÆýÚ$forward-character end-of-file”þbþ þFbobp>="preceding-charZ ,delete-previous-characterþ ý:ýð/*þüºZný( <ü’ürýš*.ý´üf"+üLZýR*\ Šý�„ü˜ üÖüäý* ý�.to-colÿrû®ZüÎ *ýÎýìü¦\*ü¾ûpZDûÞþºûVû6 ü^þÈ ü†û8þÖû,Zü2*/  widen-regionRú’L debox-region,úÒ&save-restrictionúÊúäZûôTre-replace-string/\*[\*]*ûìúÎû 2ûˆ,ÿ˜  [\*]*\*/[ ]*ÿ²*ûV$ÿf^\* ÿˆ.û,(ÿ<[ ]*\*$ÿZdù@^edit-block-comment8save-window-excursionesc-jmodeú®<re-search-reverse^/\*set-markúÞúØ8search-forward*/ú*ù úŽý€Fùšÿ:local-binding-ofjNlocal-bind-to-key$justify-paragraphÿ¦,ù left-marginZ.øÚ  right-marginZK,ø¬  prefix-stringý÷pFmessage,Type ^C to resume editing*ø4ýÆ mode-string,ø ÿà  Comment edit(ö¬"recursive-edit÷¶ÿŒýBþTýþ2ö¢ý~ø’û:õú s -- save buffer (write to associated file) N: c -- close buffer (write to file, then delete buffer) VB d -- delete buffer (erase the buffer, not affecting the file) . r -- reread from file T@ m -- mark as not modified (remove the 'needs saving' flag) <) u -- unmark (undo edit-buffer marks) 8$ e -- recursive edit this buffer VÔ þ Õò0#compile.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; This package provides a replacement for the standard ^X^E compilation ; package. It operates pretty much the same as the old except that the ; process control facilities are used. Consequently, while a compilation is ; going on you can go off and do other things and (a major win) you can ; interrupt the compilation partway through. (declare-global compilation-may-be-active last-command) (setq last-command "") (defun (new-compile-it command (if prefix-argument-provided (progn (setq command (arg 1 ": compile-it using command: ")) (if (= command "") (if (= last-command "") (error-message "No previous command") (setq command last-command)) (setq last-command command))) (setq command "update")) (setq compilation-may-be-active 1) (save-excursion (pop-to-buffer "Error-log") (setq needs-checkpointing 0) (erase-buffer) (write-modified-files) (if (>= (process-status "Error-log") 0) (kill-process "Error-log")) (start-process command "Error-log") (setq mode-line-format (concat " Executing: " command " (^X^K to kill) %M")) (novalue) ) ) (kill-compilation (save-excursion (temp-use-buffer "Error-log") (setq mode-line-format " Dead! %M") (kill-process "Error-log") (setq compilation-may-be-active 0) (setq buffer-is-modified 0) (novalue) ) ) ) (bind-to-key "new-compile-it" "\^x\^E") (bind-to-key "kill-compilation" "\^x\^K") (novalue) ôTre-replace-stringé ý êò0#compile.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãndeclare-global,compilation-may-be-active  last-command2setqÿÌædefunônew-compile-itcommand‚if,prefix-argument-providedprognZÿ$ÿŠNargZ0: compile-it using command: ¨ÿP =ÿþÈpÿ*ÿÞþxþ°F error-message&No previous commandþFþ¬þþ4þþ”&þ"þˆupdateýüýªZ"save-excursion< pop-to-buffer Error-log4ýŠ&needs-checkpointingZ  erase-buffer(write-modified-filesrý”F>=(process-statusÿ.Z& kill-processÿ, start-processüèþÔ�üp$mode-line-formatfconcat  Executing: üx& (^X^K to kill) %MnovalueÚkill-compilation¶ý¾(temp-use-bufferýØ.ûtÿ" Dead! %M þˆýžû:úèZ4û&&buffer-is-modifiedZÿ: bind-to-keyû"ÿÊþê þ´-replace-stringN ü Oò0$debug.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; debugging routines (defun (debug (setq compile-mlisp-debugging-hooks (! compile-mlisp-debugging-hooks)) (message "Packages that you load from now on " (if compile-mlisp-debugging-hooks "will" "won't") " be debuggable"))) (defun (show-error fn p (setq fn (break-file-name)) (setq p (break-character-position)) (if (= fn "") (message "The last error wasn't from an MLisp function.") (progn (visit-file fn) (widen-region) (goto-character p)))  (novalue))) (defun (single-step-handler fn p c ldot ret continue (setq ldot (dot)) (save-excursion (setq fn (break-file-name)) (setq p (break-character-position)) (visit-file fn) (goto-character p) (setq continue 1) (while continue (message "Single stepping... space->continue, s->skip, l->look, r->recurse, p->print") (setq c (get-tty-character)) (if (= c ' ') (progn (setq ret 1) (setq continue 0)) (= c 's') (progn (setq ret 0) (setq continue 0)) (= c 'l') (save-excursion (pop-to-buffer ldot) (goto-character ldot) (message "Dot is here.") (sit-for 10)) (= c 'r') (save-excursion (recursive-edit)) (= c 'p') (error-occurred v (setq v (get-tty-variable ": print ")) (message v " = " (execute-mlisp-line v)) (sit-for 10)) (= c '\^G') (error-message "Giving up") (progn (message "Huh?") (sit-for 10)) ) ) ) (if ret (&step-through-arg-1) (arg 1)) )) (bind-to-key "show-error" "\es") [\*]*\*/[ ]*ÿ²*ûV$ÿf^\* ÿˆ.û,(ÿ<[ ]*\*$ÿZdù@^edit-block-comment8save-window-excursionesc-jmodeú®<re-search-reverse^/\*set-markúÞúØ8search-forward*/ú*ù úŽQ û Rò0$debug.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãPdefun8debugbsetq0compile-mlisp-debugging-hooks!ÿÀ¾message6#Packages that you load from now on LifÿTwillwon't" be debuggableÌþ´Æ show-errorfnp.þ–ÿÔ"break-file-name8þhÿ¼,break-character-positionþþâ.=ÿZFþ^@-The last error wasn't from an MLisp function.„progn$ visit-fileþÄ  widen-region(goto-characterþ’novalueúüèôsingle-step-handlerþ0þ@cldotretcontinue"ü‚ÿ´dotòsave-excursionü>ý|ý¬ü,ý€ýÈ þ€ýX þ¸ýbüÿbZ€whileÿ<dü2^KSingle stepping... space->continue, s->skip, l->look, r->recurse, p->print0ûlþŠ$get-tty-characterÎûîýþTZ .ýpûþfZûþhZüÎþZs.ý.úÚþ$ZúÆþ&ZüŒýÐZl€þB& pop-to-bufferý° ýý¤&úÈ  Dot is here."sit-forZ ûøý<Zr(ý®"recursive-editû¼ýZpÞerror-occurredvLù˜ÿê@get-tty-variable: print Nù®ÿž = ,execute-mlisp-lineÿ\þÂZ úÊüZ< error-message Giving up2úîøüHuh?þ@Z Pù û¸&&step-through-arg-1argZ: bind-to-keyù&slocal-bind-to-key$justify-paragraphÿ¦,ù left-marginZ.øÚ  right-marginZK,ø¬  prefix-stringý÷pFmessage,Type ^C to resume editing*ø4ýÆ mode-string,ø ÿà  Comment edit(ö¬"recursive-edit÷¶ÿŒýBþT ú ò0%des-word.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl" (extend-database-search-list "subr-names" "/emacs/databases/quickinfo") (error-occurred (extend-database-search-list "subr-names" (concat (getenv "HOME") "/.subr-names"))) ; describe-word-in-buffer takes the word nearest the cursor and looks it up ; in a database, then prints the information found. (defun (describe-word-in-buffer subr-name (if (> prefix-argument 1) (progn (error-occurred (forward-character)) (backward-word) (set-mark) (forward-word) (edit-description (region-to-string))) (progn (save-excursion (error-occurred (forward-character)) (backward-word) (set-mark) (forward-word) (setq subr-name (region-to-string)) (temp-use-buffer "subr-help") (erase-buffer) (if (error-occurred (fetch-database-entry "subr-names" subr-name)) (progn (delete-buffer "subr-help") (error-message (concat "No help for " subr-name))) (progn (beginning-of-file) (set-mark) (end-of-line) (message (region-to-string)) (delete-buffer "subr-help") )) ) ) ) (novalue) ) (edit-description edit-name (setq edit-name (arg 1 ": edit-description (of routine) ")) (pop-to-buffer "Edit description") (erase-buffer) (if (error-occurred (fetch-database-entry "subr-names" edit-name)) (message "New entry.")) (setq mode-string (concat " Editing database entry for " edit-name)) (save-excursion (recursive-edit)) (put-database-entry "subr-names" edit-name) (delete-buffer "Edit description") (novalue) ) ) øý<Zr(ý®"recursive-editû¼ýZpÞerror-occurredvLù˜ÿê@get-tty-variable: print Nù®ÿž = ,execute-mlisp-lineÿ\þÂZ úÊüZ< error-message Giving up2úîøüHuh?þ@Z Pù û¸&&step-through-arg-1™ ù šò0%des-word.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãzextend-database-search-list subr-names./emacs/databases/quickinfošerror-occurredxÿhÿ�lconcat2getenvHOME  /.subr-names„defun”describe-word-in-buffer subr-name4if>>"prefix-argumentZæprogn*þ $forward-character  backward-wordset-mark  forward-wordHedit-description$region-to-stringúÿôsave-excursion ýªÿÿ,ÿFÿ\$setqþPÿ|>temp-use-buffer subr-help  erase-buffer2þ:ý4fetch-database-entryüŠý¬xþ& delete-bufferÿbL error-message,ü¬  No help for ý4zýž$beginning-of-fileýÖ end-of-line messageýø ÿ$þœnovalueØý¨ edit-name^þÿâRargZ4 : edit-description (of routine) D pop-to-buffer$Edit descriptionýÔBûìúîýîú–ÿ($þÖ New entry.`ý* mode-string<ú¼0  Editing database entry for þ¤(üŠ"recursive-edit2put-database-entryù¸þJ ý8þØþvLù˜ÿê@get-tty-variable: print Nù®ÿž = ,execute-mlisp-lineÿ\þÂZ úÊüZ< error-message Giving up2úîøüHuh?þ@Z Pù û¸&&step-through-arg-1!½ ø !¾ò0&dired.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; This is an attempt at a dired package. ; The tek4404 version supports moving to file names with the mouse (left ; button), implements &dired-read-file for reading files into emacs buffers, ; and adds patches to make documented functions work. Jane Laursen, ; Tektronix, December 1984. (declare-global Dired-keymap-defined Dired-directory &dired-return-buffer) (setq Dired-keymap-defined 0) (setq Dired-directory (working-directory)) (defun (dired directory (setq &dired-return-buffer (current-buffer-name)) (setq directory (arg 1 (concat ": dired on directory? [" Dired-directory "] "))) (if (= directory "") (setq directory Dired-directory)) (if (& (= "/" (substr directory -1 1)) (> (length directory) 1)) (setq directory (substr directory 1 -1))) (setq Dired-directory directory) (switch-to-buffer "dired") (use-local-map "&dired-keymap") (setq mode-line-format (concat " Editing directory: " directory " %M %[%p%] ? for options")) (erase-buffer) (set-mark) (message (concat "Getting contents of " directory)) (sit-for 0) (fast-filter-region (concat "/bin/dir +b " (expand-file-name directory))) (beginning-of-file) (if (looking-at "Directory") (progn (kill-to-end-of-line) (kill-to-end-of-line) (beginning-of-file) (re-replace-string "^\\([^ ]*\\) " " \\1") (beginning-of-file) ) (progn (end-of-file) (error-message (region-to-string)) ) ) (&dired-summary) (novalue) ) ) (defun (&dired-Mark-file-deleted (if (= 0 (buffer-size)) (error-message "dired already done!") (progn (beginning-of-line) (goto-character (+ (dot) 40)) ; LJM (if (looking-at " d") (progn (beginning-of-line) (error-message "Can't delete a directory with dired"))) (beginning-of-line) ; LJM (delete-next-character) (insert-string "D") (next-line) (beginning-of-line) ) ) ) (&dired-summary (message " q-uit, d-elete, u-ndelete, e-dit, r-ead, h-ide, n-ext, p-revious") ) (&dired-UnMark-file-deleted (if (= 0 (buffer-size)) (error-message "dired already done!") (progn (beginning-of-line) (delete-next-character) (insert-string " ") (next-line) (beginning-of-line) ) ) ) (&dired-backup-unmark (if (= 0 (buffer-size)) (error-message "dired already done!") (! (bobp)) (previous-line)) (beginning-of-line) (delete-next-character) (insert-string " ") (beginning-of-line) ) ) (defun (&dired-examine (save-excursion (error-occurred (visit-file (&dired-get-fname)) (message "Type ^C to return to DIRED") (recursive-edit) (delete-other-windows) ) ) ) ) (defun (&dired-read-file fname (save-excursion (if (error-occurred (setq fname (&dired-get-fname)) (visit-file fname)) (message-char (concat "Unable to ge t " fname)) (message (concat fname " read to emacs buffer")) ) ) (delete-other-windows) ) ) (defun (&dired-hide (beginning-of-line) (kill-to-end-of-line) (kill-to-end-of-line) ) (&dired-get-fname (save-excursion (beginning-of-line) (goto-character (+ (dot) 2)) ; LJM (set-mark) ; LJM (goto-character (+ (dot) 25)) (search-forward " ") ; LJM (goto-character (- (dot) 1)) ; LJM ; LJM (end-of-line) (concat Dired-directory "/" (region-to-string)) ) ) (&dired-done-options (message "d-do deletions; q-query each deletion; e-exit,do not delete; r-return to dired") ) (&dired-exit-without-deleting (message "Really exit without deleting? [y/n]") (setq ans (get-tty-character)) (if (| (= ans 'y') (= ans 'Y')) (exit-dired) (&dired-done-options)) ) (&dired-query-deletions (while (! (eobp)) (if (= (following-char) 'D') (progn thisfile ans (setq thisfile (&dired-get-fname))  (message (concat "Delete " thisfile "? [y/n]")) (setq ans (get-tty-character)) (if (| (= ans 'y') (= ans 'Y')) (if (unlink-file thisfile) (message-char (concat "Couldn't delete " thisfile)) ) ) ) ) (next-line) ) (exit-dired) ) (&dired-do-deletions (while (! (eobp)) (if (= (following-char) 'D') (progn thisfile (setq thisfile (&dired-get-fname)) (if (unlink-file thisfile) (message-char (concat "Couldn't delete " thisfile)) ) ) ) (next-line) ) (exit-dired) ) (&dired-return (erase-buffer "dired deletions") (switch-to-buffer "dired") (beginning-of-file) ) (&dired-done (beginning-of-file) (set-mark) (end-of-file) (copy-region-to-buffer "dired deletions") (switch-to-buffer "dired deletions") (use-local-map "&dired-deletions-keymap") (beginning-of-file) (re-replace-string "^ .*\n" "") (if (!= 0 (buffer-size)) (&dired-done-options) (exit-dired)) ) (exit-dired (error-occurred (delete-buffer "dired deletions")) (delete-buffer "dired") (switch-to-buffer &dired-return-buffer) (message "Dired exited") ) (message-char (message (concat (arg 1) " Press to continue.")) (get-tty-character) ) (mouse-go-to-line (move-dot-to-mouse) (beginning-of-line) ) ) (progn loop (save-excursion (temp-use-buffer "dired") (define-keymap "&dired-keymap") (use-local-map "&dired-keymap") (setq loop 0) (while (<= loop 127) (local-bind-to-key "&dired-summary" loop) (setq loop (+ loop 1)) ) (setq loop '0') (while (<= loop '9') (local-bind-to-key "digit" loop) (setq loop (+ loop 1)) ) (local-bind-to-key "&dired-Mark-file-deleted" "d") (local-bind-to-key "&dired-Mark-file-deleted" "D") (local-bind-to-key "&dired-Mark-file-deleted" "") (local-bind-to-key "&dired-backup-unmark" "\0177") (local-bind-to-key "previous-line" "\^H") (local-bind-to-key "previous-line" "p") (local-bind-to-key "previous-line" "P") (local-bind-to-key "previous-line" "\^P") (local-bind-to-key "next-line" "n") (local-bind-to-key "next-line" "N") (local-bind-to-key "next-line" "\^N") (local-bind-to-key "next-line" 13) (local-bind-to-key "next-line" 10) (local-bind-to-key "next-line" " ") (local-bind-to-key "argument-prefix" "\^U") (local-bind-to-key "previous-window" "\^Xp") (local-bind-to-key "previous-window" "\^XP") (local-bind-to-key "next-window" "\^Xn") (local-bind-to-key "next-window" "\^XN") (local-bind-to-key "delete-window" "\^Xd") (local-bind-to-key "delete-window" "\^XD") (local-bind-to-key "delete-other-windows" "\^X1") (local-bind-to-key "&dired-examine" "\^X\^V") (local-bind-to-key "next-page" "\^V") (local-bind-to-key "previous-page" "\ev") (local-bind-to-key "previous-page" "\eV") (local-bind-to-key "beginning-of-file" " \e<") (local-bind-to-key "end-of-file" "\e>") (local-bind-to-key "&dired-UnMark-file-deleted" "u") (local-bind-to-key "&dired-UnMark-file-deleted" "U") (local-bind-to-key "exit-dired" "\^C") (local-bind-to-key "&dired-done" "q") (local-bind-to-key "&dired-done" "Q") (local-bind-to-key "&dired-examine" "e") (local-bind-to-key "&dired-examine" "E") (local-bind-to-key "&dired-read-file" "R") (local-bind-to-key "&dired-read-file" "r") (local-bind-to-key "&dired-hide" "h") (local-bind-to-key "&dired-hide" "H") (local-bind-to-key "mouse-go-to-line" "\ePA1D") (temp-use-buffer "dired deletions") (define-keymap "&dired-deletions-keymap") (use-local-map "&dired-deletions-keymap") (setq loop 0) (while (<= loop 127) (local-bind-to-key "&dired-done-options" loop) (setq loop (+ loop 1)) ) (setq loop '0') (while (<= loop '9') (local-bind-to-key "digit" loop) (setq loop (+ loop 1))  ) (local-bind-to-key "&dired-exit-without-deleting" "E") (local-bind-to-key "&dired-exit-without-deleting" "e") (local-bind-to-key "&dired-query-deletions" "Q") (local-bind-to-key "&dired-query-deletions" "q") (local-bind-to-key "&dired-do-deletions" "D") (local-bind-to-key "&dired-do-deletions" "d") (local-bind-to-key "&dired-return" "R") (local-bind-to-key "&dired-return" "r") ) ) )) (if (unlink-file thisfile) (message-char (concat } ÷ ~ò0'dired.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã”declare-global(Dired-keymap-defined"Dired-directory(&dired-return-buffer&setqÿzZ0ÿÞÿŽ$working-directorydefunödired directory2ÿbÿ4&current-buffer-nameŠÿ0ÿ°~argZ`concat*: dired on directory? [þx] Vif.=ÿþbþâþ Èÿ®š&Jÿª/0substrþˆZÿÿÿÿZ<> lengthþDZ(ý°þ0ÿŒþ$ZZÿÿÿÿýˆý8þ*switch-to-bufferýÀ@ use-local-map  &dired-keymap˜ý $mode-line-formatnýà* Editing directory: ý88$ %M %[%p%] ? for options  erase-bufferset-markNmessage4ý(Getting contents of üv"sit-forZvfast-filter-regionPü   /bin/dir +b *expand-file-nameûÞ$beginning-of-fileRüŒ: looking-at Directoryªprogn&kill-to-end-of-lineÿÞÿ\Zre-replace-string ^\([^ ]*\)  \1þühÿZ end-of-fileD error-message$region-to-string"&dired-summarynovalue ùöö&dired-Mark-file-deletedÊúÌ,úÜZ buffer-size,ÿ &dired already done!lþ&$beginning-of-lineTgoto-character2+dot Z(jùðýh dHý†ÿd<þH6#Can't delete a directory with diredÿ"(delete-next-character4 insert-stringD next-lineþ¤`ýÌZûjTA q-uit, d-elete, u-ndelete, e-dit, r-ead, h-ide, n-ext, p-reviousŒ&dired-UnMark-file-deleted^øtø„Zý¬ üàýÄ8üýäþÆþè ÿý¸¸&dired-backup-unmarkr÷î÷þZý& üZý>,!bobp  previous-lineýýú þÿ8ý,öV&&dired-examinesave-excursionâerror-occurredB visit-file$&dired-get-fname4ù.Type ^C to return to DIRED"recursive-edit(delete-other-windowsõ*ú&dired-read-filefname¸þ¾²õê$þÔô€ÿÔÿ þÞÿÂN message-char.õ@"Unable to get ÿt:÷à4õ ÿb( read to emacs bufferþâBô*0 &dired-hideúªøØøÒšþ,”ýÄúŒúªúÆúÔZ÷"(search-forwardüv(úb"-ú~ZôòÌôäùŽ&dired-done-optionshöªbNd-do deletions; q-query each deletion; e-exit,do not delete; r-return to dired&dired-exit-without-deleting<ö6#Really exit without deleting? [y/n]@ò ans$get-tty-characterfó(<|ó$ÿªZyóÿ–ZY exit-diredþjÈ&dired-query-deletions˜whileú¼eobp\òb0òr"following-charZD&õäthisfileþ¬ð¦ÿÜû(Fô`@ñŒDelete ÿª? [y/n]ðNþHþX”ñš.þvñ¤þ*Zyñ�þZY`ñf$ unlink-fileÿ 6û€0ðÖ$Couldn't delete þê÷æþ¦&dired-do-deletionszþ@ ù þRbðÂðÒþdZDHô`þ€ï>þtùÀ*ðŠ ÿ(þ\ú¼ðÿ@þD÷@ýxZ &dired-return(òf"dired deletions ñ<ïóTú &dired-doneó0ò(ô8.copy-region-to-bufferÿx ðÌÿl0ðê*&dired-deletions-keymapò´$ó\^ .* ïl6ï6$!=Zô^ú®ü$pü,÷ê& delete-bufferþª ÿÞíØ ïòí6&ñ$  Dired exitedRøÔFðø@î$îZ, Press to continue.úüNmouse-go-to-line$move-dot-to-mouseó’vñ¨loopXö (temp-use-bufferìº& define-keymapîþ îØîòìÿ†ZzúÊ$<=ÿ\Z0local-bind-to-keyñÚÿ$ ë¦ÿòÚÿ Zë†þøZ0^ú<ÿvþÞZ9$ÿ†digitþ² ë4þ¦òhþšZ ÿBñxdÿ"ñXó ÿñF"þðô7 þÎô` þ®ô@p þŽô P þnô þNòXn þ.ò8N þòýîñøZ ýÚñäZ ýÆñÐò¸<ý´"argument-prefix>ýx"previous-windowp"ý:ÿÆP:ý next-windown"üÞÿÊ N<ü¼  delete-windowd"ü€ÿÈD"ü^ó21"ü<ò6ü next-page<ûä  previous-pagev"û¨ÿÈV"û†ì<"ûdìö> ûBïÎu û"ï®U ûõJ úâøq úÂ÷öQ ú¢ðxe ú‚ðXE úbñdR úBñDr ú"ò$h úòH$ùâøÒPA1D ù&ö¾ ùB÷V è0÷JåløÞZLô"ù\øÄZùlò8øª å,øžì`ø’Zå ø~Z0LóÂøüødZ9ù ùŠøJ äÌø>ìø2ZøÚò4þ\øÈò"þ*ø¶ó"ýøø¤óýÆø’ôÆì‚ø€ô´ùBønõHþø\õ6þÿt:÷à4õ ÿb( read to emacs bufferþâBô*0 &dired-hideúªøØøÒšþ,”ýÄúŒúªúÆúÔZ÷"(search-forwardüv(úb"-ú~ZôòÌôäùŽ&dired-done-optionshöªbNd-do deletions; q-query each deletion; e-exid ö dò0)elec-c.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; Elec-c is a set of routines to aid C program development. ; Written by Duane T. Williams ; ; EXECUTION ; ; Once the package is loaded, local key bindings and local abbreviations ; are initialized within a buffer by executing the function elec-c-mode. ; The most convenient way to do this is by including in your .emacs_pro ; file the commands: ; (autoload "elec-c-mode" "elec-c.ml") ; (auto-execute "elec-c-mode" "*.c") ; ; DESCRIPTION ; ; The main functions provided by this package are: ; ; 1. Expansion of C control constructs: if, else, while, do, switch, ; and for. The user types the keyword immediately followed by ; a space, which causes the construct to be expanded, and, in ; the typical case, the user is placed in recursive edit mode to ; fill in () or {}. When the filling in is complete, the user ; types ^C to exit the recursive edit. This should be done while ; the cursor is still within the () or {}. ; ; NOTE: the user is also placed in recursive edit mode to ; insert the constant expression following 'case' in a switch ; statement and should use ^C to move from the case constant ; expression to the body of the case. ; ; For example, when the user types a space following "if" the ; following appears in the buffer: ; ; if () { ; ; } ; ; and the cursor is between the parentheses. The user then ; enters some boolean expression within the parens, followed by ; ^C. The ^C will exit the recursive edit and cause the cursor ; to move to the body of the if construct. The user then enters ; additional statements, the last of which should be followed by ^C. ; The cursor will be left on a new line immediately below the ; right brace, "}". If the user was on a blank line when he typed ; ^C, that line will have been deleted. ; ; 2. Various characters in C almost always come in pairs: {}, (), []. ; When the user types the first, he gets the second ; as well, with special formatting done for {}. You can always ; quote (with ^Q) the left "paren" to avoid the expansion. ; ; 3. Semico lon and linefeed try to put the user where it is likely he ; wants to be. The semicolon wants to go at the end of the line! ; ; 4. The slash and asterisk are bound to special functions that try to ; do the right thing as far as comments are concerned. When you ; type /* you will be put into commment mode, in which the control ; constructs are not expanded, and when you subsequently type */ ; comment mode is terminated. ; ; Comments are automatically justified. You get BLOCKED comments ; when you type the &elec-c-border-char (the default is '-') after ; the opening "/*" of a comment. To close a blocked comment, type ; the &elec-c-border-char immediately after a subsequent '*', ; presumably at the left end of the block. ; ; 5. Default settings of global variables: ; &elec-c-indent-width 4 ; indentation of expressions ; &elec-c-right-margin 75 ; fold comments here ; &elec-c-border-char '-' ; char for block comments ; &elec-c-border-size 75 ; border width ; &elec-c-comment-prefix " " ; for non-block comments ; &elec-c-split-declarations 0 ; justification option ; ; 6. A C program justification function is bound to ESC-j. It will ; re-indent a block (bounded by "{}" (at the left margin)). It's ; a bit slow; expect to wait. You will be told when it's done. ; ; 7. #d and #i are defined as abbreviations for #define and #include, ; respectively. ; ; 8. There is a function called "comment" that allows you to enter ; comment mode manually (without typing "/*"). ; This can be used in editing existing comments. You have to be ; inside a comment when you toggle comment mode ON. You can ; toggle comment mode OFF by either re-executing the comment ; function or, more simply, by typing ^C. ; ; There is a function called "verbatim", which causes all special ; elec-c processing to be turned off until the user types ^C. ; ; 9. "main" always goes at the left margin and expands as you expect it ; to. Typing "argc" within the parameter list of "main" ; causes automatic insertion of argv and their declarations. ; ; 10. The quotation marks are bound to special functions that attempt to ; prevent expansions when you are inside quotations. If you find ; that expressions are suddenly not expanding as they should, then ; you have probably typed a quote mark without typing its closing ; mate. ; ; HISTORY ; 03-Apr-83 Duane Williams (dtw) at Carnegie-Mellon University ; Updated documentation and removed experimental functions in ; preparation for installation on /usr/local. ; ; 17-May-82 Duane Williams (dtw) at Carnegie-Mellon University ; Control constructs are now expanded via the new hooked ; abbreviation function. ; ; 02-Feb-82 Duane Williams (dtw) at Carnegie-Mellon University ; Created. (progn (setq-default &elec-c-split-declarations 0) ; USER MAY CHANGE (setq-default &elec-c-indent-width 4) (setq-default &elec-c-right-margin 75) (setq-default &elec-c-border-char '-') (setq-default &elec-c-border-size 75) (setq-default &elec-c-comment-prefix " ") (setq-default &elec-c-comment 0) ; PRIVATE VARIABLES (setq-default &elec-c-box-comment 0) (setq-default inside-double-quote 0) (setq-default inside-single-quote 0) (declare-buffer-specific ; allow these variables to have &elec-c-indent-width ; different values in each &elec-c-comment ; elec-c buffer &elec-c-box-comment &elec-c-right-margin &elec-c-border-char &elec-c-border-size &elec-c-comment-prefix inside-double-quote inside-single-quote ) (defun (current-position (+ (dot) 0)) ; if inside a comment, returns the column of the star ; that initiates the comment; otherwise returns zero. ; (inside-c-comment position star-position (setq &elec-c-box-comment 0) (setq position (current-position)) (save-excursion (if (error-occurred (search-reverse "/*")) 0 (progn (setq star-position (+ 1 (current-column))) (if (looking-at (concat "/\\*" (char-to-string &elec-c-border-char))) (setq &elec-c-box-comment 1)) (if (| (error-occurred (search-f orward "*/")) (< position (current-position))) star-position 0) ) ) ) ) (backward-brace level (if (error-occurred (search-reverse "}")) (error-message "Can't find end of block!")) (setq level 1) (while (> level 0) (re-search-reverse "[{}]") (if (= (following-char) '{') (setq level (- level 1)) (setq level (+ level 1))) ) ) (forward-brace level (if (error-occurred (search-forward "{")) (error-message "Can't find beginning of block!")) (setq level 1) (while (> level 0) (re-search-forward "[{}]") (if (= (preceding-char) '{') (setq level (+ level 1)) (setq level (- level 1))) ) ) (expand-abbrev space-position ; cause abbrev expansion without (setq space-position (dot)) ; leaving extra chars in buffer (insert-character '#') (backward-character) (insert-character ' ') (save-window-excursion (goto-character space-position) (if (= (following-char) ' ') (provide-prefix-argument 2 (delete-next-character)) (delete-next-character) ) ) ) (pause-or-exit ; avoid accidentally exiting (if (< (recursion-depth) 1) ; emacs (pause-emacs) (exit-emacs) ) ) (pop-recursion ; leave recursive edit (expand-abbrev) (pause-or-exit) ) (skip-white-space ; skip over spaces and tabs (while (& (! (eolp)) (| (= (following-char) ' ') (= (following-char) ' '))) (forward-character)) ) (this-line-is-blank ; true if only white space (save-excursion ; on current line (beginning-of-line) (skip-white-space) (if (eolp) 1 0)) ) (kill-current-line ; delete current line (beginning-of-line) (if (eolp) (kill-to-end-of-line) (provide-prefix-argument 2 (kill-to-end-of-line))) ) (beginning-of-block mymark ; jump to head of {} block (insert-string "}") (setq mymark (dot)) (if (error-occurred (backward-brace)) (progn (goto-character mymark) (delete-previous-character)) (save-excursion (goto-character mymark) (delete-previous-character)) ) ) (end-of-block ; jump to end of {} block (beginning-of-block) (forward-brace) ) (preceding-word ; return preceding word (backward-word) (set-mark) (forward-word) (region-to-string) ) ) (defun (elec-left-brace next-position old-mode ; insert brace pair (setq old-mode mode-string) (if (!(eolp)) (end-of-line)) ; else a mess (if (& (!(bolp)) ; beautify  (!= (preceding-char) ' ') ; space (!= (preceding-char) '\t')) ; tab (insert-character ' ')) (setq mode-string "block-body") (insert-string "{}") ; insert braces (backward-character) ; and format (newline-and-indent) (forward-character) ; find next position (if (eobp) ; avoid end of buffer (progn (newline) (backward-character)) ) (setq next-position (dot)) (previous-line) ; position for edit (elec-indent) (recursive-edit) (if (this-line-is-blank) (kill-current-line) ) (goto-character next-position) (newline-and-indent) (setq mode-string old-mode) ) (elec-left-paren next-position ; insert paren pair (insert-string "()") (backward-character) ) (elec-left-bracket next-position ; insert bracket pair (insert-string "[]") (backward-character) ) (elec-right-paren line next-position (insert-character (last-key-struck)) (save-excursion (backward-paren) (if (dot-is-visible) (progn (setq line "") (sit-for 10)) (progn (beginning-of-line) (set-mark) (end-of-line) (setq line (region-to-string))) ) ) (message line) ) (elec-tab newcol (setq newcol (+ (current-column) &elec-c-indent-width)) (insert-character '.') (backward-character) (delete-white-space) (delete-next-character) (to-col newcol) ) (elec-function-format old-dot old-size (setq old-dot (+ (dot) 0)) (setq old-size (buffe r-size)) (save-excursion (previous-line) (re-search-forward "^}") (set-mark) (backward-brace) (beginning-of-line) (exchange-dot-and-mark) (end-of-line) (forward-character) (filter-region (concat "indent " "-st " "-i" &elec-c-indent-width (if &elec-c-split-declarations " -bc " " -nbc ")) ) ) (goto-character (/ (* (buffer-size) old-dot) old-size)) (message "Done!") ) (elec-indent (end-of-line) (newline-and-indent) (provide-prefix-argument &elec-c-indent-width (insert-character ' ')) ) (elec-linefeed (if (eolp) (progn (newline-and-indent)) (progn (elec-indent)) ) ) (elec-semicolon (if (!(eolp)) (end-of-line)) (delete-white-space) (insert-character ';') (newline-and-indent) ) (elec-main next-position old-mode (setq old-mode mode-string) (beginning-of-line) ; put main at margin (delete-white-space) (end-of-line) (insert-string " (){}")  ; expand and format (provide-prefix-argument 2 (backward-character)) (newline) (forward-character) (newline) (forward-character) (newline) (search-reverse ")") ; position for params (save-window-excursion (search-forward "{") ; find next position (setq next-position (dot)) ) (setq mode-string "main-parameters") (use-abbrev-table "elec-c-main-abbrevs") (local-bind-to-key "pop-recursion" "\^C") (recursive-edit) ; edit params (use-abbrev-table "elec-c-abbrevs") (local-bind-to-key "pause-or-exit" "\^C") (goto-character next-position) (newline) ; open body (elec-indent) (save-window-excursion ; find next position (if (error-occurred (search-reverse "main")) (search-reverse "main")) (forward-brace) (setq next-position (dot)) ) (setq mode-string "main-body") (recursive-edit) ; edit body (goto-character next-position) (newline) (setq mode-string old-mode) 0 )  (elec-argc ; auto declare argc/argv (search-forward ")") (backward-character) (insert-string ",argv") (end-of-line) (newline) (insert-string "int argc;") (newline) (insert-string "char *argv[];") 0 ) (elec-if next-position old-mode ; insert if construct (setq old-mode mode-string) (insert-string " () {}") (backward-character) (newline-and-indent) (previous-line) (search-forward "(") (save-window-excursion (elec-indent) (setq next-position (dot)) ) (setq mode-string "if-condition") (recursive-edit) (goto-character next-position) (save-window-excursion (search-forward "}") (setq next-position (dot)) ) (setq mode-string "if-body") (recursive-edit) (if (this-line-is-blank) (kill-current-line) ) (goto-character next-position) (newline-and-indent) (setq mode-string old-mode) 0 ) (elec-else next-position old-mode ; insert else construct  (setq old-mode mode-string) (insert-string " {}") (backward-character) (newline-and-indent) (previous-line) (elec-indent) (save-window-excursion (search-forward "}") (setq next-position (dot)) ) (setq mode-string "else-body") (recursive-edit) (if (this-line-is-blank) (kill-current-line) ) (goto-character next-position) (newline-and-indent) (setq mode-string old-mode) 0 ) (elec-for next-position old-mode ; insert for construct (setq old-mode mode-string) (insert-string " (;;) {}") (backward-character) (newline-and-indent) (previous-line) (search-forward "(") (save-window-excursion (elec-indent) (setq next-position (dot)) ) (setq mode-string "for-control") (recursive-edit) (goto-character next-position) (save-window-excursion (search-forward "}") (setq next-position (dot)) ) (setq mode-string "for-body") (recursive-edit) (if (this-line-i s-blank) (kill-current-line) ) (goto-character next-position) (newline-and-indent) (setq mode-string old-mode) 0 ) (elec-while next-position old-mode ; insert while construct (setq old-mode mode-string) (insert-string " () {}") (backward-character) (newline-and-indent) (previous-line) (search-forward "(") (save-window-excursion (elec-indent) (setq next-position (dot)) ) (setq mode-string "while-condition") (recursive-edit) (goto-character next-position) (save-window-excursion (search-forward "}") (setq next-position (dot)) ) (setq mode-string "while-body") (recursive-edit) (if (this-line-is-blank) (kill-current-line) ) (goto-character next-position) (newline-and-indent) (setq mode-string old-mode) 0 ) (elec-do next-position old-mode ; insert do construct (setq old-mode mode-string) (insert-string " {} while ();") (search-reverse "}") (newline-and-indent) (previous-line) (elec-indent) (save-window-excursion (search-forward "(") (setq next-position (dot)) ) (setq mode-string "do-body") (recursive-edit) (if (this-line-is-blank) (kill-current-line) ) (goto-character next-position) (save-window-excursion (search-forward ";") (setq next-position (dot)) ) (setq mode-string "do-condition") (recursive-edit) (goto-character next-position) (newline-and-indent) (setq mode-string old-mode) 0 ) (elec-switch next-position old-mode ; insert switch construct (setq old-mode mode-string) (insert-string " () {}") (backward-character) (newline-and-indent) (previous-line) (search-forward "(") (save-window-excursion (elec-indent) (setq next-position (dot)) ) (setq mode-string "switch-condition") (recursive-edit) (goto-character next-position) (save-window-excursion (search-forward "}") (setq next-position (dot)) ) (elec-case-loop) (goto-character next-position) (newline-and-indent) (setq mode-string old-mode) 0 ) (elec-case next-position old-mode ; single case statment (setq old-mode mode-string) (insert-string " :break;") ; expand case statement (search-reverse "b") (newline-and-indent) (provide-prefix-argument &elec-c-indent-width (insert-character ' ')) (search-reverse ":") ; goto case condition (save-window-excursion ; prepare next position (elec-indent) (setq next-position (dot)) ) (setq mode-string "case-condition") (recursive-edit) ; edit case condition (goto-character next-position) (save-window-excursion (search-forward ";") (setq next-position (dot)) ) (setq mode-string "case-body") (recursive-edit) (if (this-line-is-blank) (kill-current-line) ) (goto-character next-position) (setq mode-string old-mode) 0 ) (elec-case-loop case-col next-position old-mode (setq old-mode mode-string) (setq case-col (current-indent)) ; save case column (insert-string "case :break;") ; expand case statement (search-reverse "b") (newline-and-indent) (provide-prefix-argument &elec-c-indent-width (insert-character ' ')) (search-reverse ":") ; goto case condition (save-window-excursion ; prepare next position (elec-indent) (setq next-position (dot)) ) (setq mode-string "case-condition") (recursive-edit) ; edit case condition (while (!= (preceding-char) ' ') (goto-character next-position) ; goto case body (save-window-excursion ; prepare next position (search-forward ";") (newline) (to-col case-col) (setq next-position (dot)) ) (setq mode-string "case-body") (recursive-edit) ; edit body of case (if (this-line-is-blank) (kill-current-line) ) (goto-character next-position) ; find end of case (insert-string "case :break;") ; setup next case (search- reverse "b") (newline-and-indent) (provide-prefix-argument &elec-c-indent-width (insert-character ' ')) (search-reverse ":") ; goto case condition (save-window-excursion ; prepare next position (elec-indent) (setq next-position (dot)) ) (setq mode-string "case-condition") (recursive-edit) ; edit case condition ) (delete-previous-word) ; setup for default (insert-string "default") (next-line) (setq mode-string "default") (recursive-edit)  (if (this-line-is-blank) (kill-current-line) ) (setq mode-string old-mode) 0 ) (elec-default next-position old-mode ; case default (setq old-mode mode-string) (insert-string ":break;") (search-reverse "b") (newline-and-indent) (provide-prefix-argument &elec-c-indent-width (insert-character ' ')) (previous-line) (elec-indent) (save-window-excursion (search-forward ";") (setq next-position (dot)) ) (recursive-edit) (goto-character next-position) (setq mode-string old-mode) 0 ) (setup-for-code (setq &elec-c-comment 0) (setq left-margin 0) (setq right-margin 0) (setq prefix-string "") (use-local-map "elec-c-keymap") (setq abbrev-mode 1) ) (elec-slash ; watch for close comment (if (= (preceding-char) '*') (progn (insert-character '/') (pause-or-exit) ) (insert-character '/') ) ) (verbatim old-mode next-position (setq old-mode mode-string) (setq next-position (dot)) (setq left-margin 0) (setq right-margin 0) ; (setq prefix-string "") (setq abbrev-mode 0) (use-local-map "elec-c-verbatim-keymap") (setq mode-string "verbatim") (message "Type ^C to exit verbatim mode") (recursive-edit) (goto-character next-position) (setq mode-string old-mode) (if &elec-c-comment (setup-for-comment) (setup-for-code) ) ) (setup-for-comment (if (!= (preceding-char) '/') (if (= 0 (setq left-margin (inside-c-comment))) (setq left-margin (current-column)) ) (setq left-margin (current-column)) ) (setq right-margin &elec-c-right-margin) (if &elec-c-box-comment ; set by inside-c-comment (setq prefix-string "* ") (setq prefix-string &elec-c-comment-prefix) ) (use-local-map "elec-c-comment-keymap") (setq abbrev-mode 0) (setq &elec-c-comment 1) ) (elec-star old-mode ; watch for open comment (if (= (preceding-char) '/') (progn (insert-character '*') (comment) ) (insert-character '*') ) ) (elec-border old-prefix ; create comment border (if (& &elec-c-comment (= (preceding-char) '*')) (progn (setq right-margin 10000) (provide-prefix-argument &elec-c-border-size (insert-character &elec-c-border-char)) (newline-and-indent) (setq right-margin &elec-c-right-margin) (insert-character '.') (backward-character) (previous-line) (if (= (following-char) '/')  (progn (next-line) (delete-next-character) (insert-string " * ") (setq old-prefix prefix-string) (setq prefix-string "* ")) (= (following-char) '*') (progn (setq prefix-string old-prefix) (next-line) (delete-next-character) (insert-string "*/") (newline) (pause-or-exit)) ) ) (progn (insert-character &elec-c-border-char)) ) ) (comment old-mode ; toggle comment mode manually (if &elec-c-comment (pause-or-exit) (progn (setq old-mode mode-string) (setq mode-string "comment") (setup-for-comment) (recursive-edit) (setup-for-code) (setq mode-string old-mode) (novalue) ) ) ) (elec-doublequote ; guard quotes against abbrev expansion (insert-string """") (if (! inside-single-quote) (if inside-double-quote (progn (setq inside-double-quote 0) (setq abbrev-mode 1)) (progn (setq inside-double-quote 1) (setq abbrev-mode 0)) ) ) ) (elec-singlequote ; guard quotes against abbrev expansion (insert-string "'") (if (! inside-double-quote) (if inside-single-quote (progn (setq inside-single-quote 0) (setq abbrev-mode 1)) (progn (setq inside-single-quote 1) (setq abbrev-mode 0)) ) ) ) (elec-c-mode ; initialize elec-c mode (use-local-map "elec-c-keymap") (use-abbrev-table "elec-c-abbrevs") (setq mode-string "elec-c") (use-syntax-table "elec-c") ) ) (save-excursion (temp-use-buffer "elec-c buffer") (setq needs-checkpointing 0) (if (error-occurred (use-local-map "elec-c-keymap")) (progn (define-keymap "elec-c-keymap") (use-local-map "elec-c-keymap")) ) (local-bind-to-key "backward-brace" "\e{") (local-bind-to-key "forward-brace" "\e}") (local-bind-to-key "elec-function-format" "\ej") (local-bind-to-key "elec-left-brace" '{') (local-bind-to-key "elec-left-bracket" '[') (local-bind-to-key "elec-left-paren" '(') (local-bind-to-key "elec-linefeed" "\n") (local-bind-to-key "elec-doublequote" """") (local-bind-to-key "elec-singlequote" "'") (local-bind-to-key "elec-right-paren" '}') (local-bind-to-key "elec-right-paren" ')') (local-bind-to-key "elec-right-paren" ']') (local-bind-to-key "elec-semicolon" ';') (local-bind-to-key "elec-star" '*') (local-bind-to-key "elec-tab" "\t") (local-bind-to-key "pause-or-exit" "\^C") (if (error-occurred (use-local-map "elec-c-comment-keymap")) (progn (define-keymap "elec-c-comment-keymap") (use-local-map "elec-c-comment-keymap")) ) (local-bind-to-key "elec-slash" '/') (local-bind-to-key "elec-border" &elec-c-border-char) (if (error-occurred (use-local-map "elec-c-verbatim-keymap")) (progn (define-keymap "elec-c-verbatim-keymap") (use-local-map "elec-c-verbatim-keymap")) ) (use-abbrev-table "elec-c-abbrevs") (define-local-abbrev "#d" "#define") (define-local-abbrev "#i" "#include") (define-hooked-local-abbrev "if" "if" "elec-if") (define-hooked-local-abbrev "else" "else" "elec-else") (define-hooked-local-abbrev "for" "for" "elec-for") (define-hooked-local-abbrev "while" "while" "elec-while") (define-hooked-local-abbrev "do" "do" "elec-do") (define-hooked-local-abbrev "switch" "switch" "elec-switch") (define-hooked-local-abbrev "case" "case" "elec-case") (define-hooked-local-abbrev "default" "default" "elec-default") (define-hooked-local-abbrev "main" "main" "elec-main") (use-abbrev-table "elec-c-main-abbrevs") (define-hooked-local-abbrev "argc" "argc" "elec-argc") (use-syntax-table "elec-c") (modify-syntax-entry "w #_") (modify-syntax-entry "(} {") (modify-syntax-entry "(] [") (modify-syntax-entry "() (") (modify-syntax-entry "){ }") (modify-syntax-entry ")[ ]") (modify-syntax-entry ")( )") (modify-syntax-entry " """) ; else forward/backward paren fails (modify-syntax-entry " '") ; else forward/backward paren fails (modify-syntax-entry " {}*/") (modify-syntax-entry "\\ \\") (novalue)  ) ) n (next-line) (delete-next-character) (insert-string " * ") (setq old-prefix prefix-string) (setq prefix-string "* ")) (= (following-char) '*') (progn (setq prefix-string old-prefix) (next-line) (delete-next-character) (insert-string "*/") (newline) (pause-or-exit)) ) ) (progn (insert-character &elec-c-border-char)) ) ) (comment old-mode ; toggle comment mode manually (if &elec-c-com6Y õ 6Zò0*elec-c.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã6XprognV setq-default.&elec-c-split-declarationsZ6ÿ®(&elec-c-indent-widthZ6ÿx(&elec-c-right-marginZKN setq-default&&elec-c-border-charZ-4ÿ¶&&elec-c-border-sizeZKFÿ‚*&elec-c-comment-prefix 0ÿ<"&elec-c-commentZ4ÿ &&elec-c-box-commentZ4þØ&inside-double-quoteZ4þ¤&inside-single-quoteZ¤declare-buffer-specific(&elec-c-indent-widthþìÿ(&elec-c-right-marginþ þ8þfÿ ÿ8 ¬defunVcurrent-position2+dotZœinside-c-commentposition  star-position&setqýäZÿÞÿœÿsave-excursionâifZerror-occurred8search-reverse/*Zjprogn<ÿþô0þ|Z"current-column�ÿ8v looking-atXconcat/\*(char-to-stringû‚þbüTZ†þ¨r|>þ¤8search-forward*/ <ý¦ý&ý¶ZÈbackward-bracelevelrýè ýøþ}L error-message,Can't find end of block!ýÿtZwhile">ÿ:Z<re-search-reverse[{}]’üì>="following-charZ{.üNþ¦"-þŒZ ü þxû‚þlZR forward-braceþ>^ü4 üDý¤{8þP2Can't find beginning of block!û|ýÔZºþdþvýºZ*re-search-forwardþ„vû~0þ–"preceding-charZ{ úîýFúPý:Z úÎý&þ„ýZ~ expand-abbrev"space-positionúlÿÜùâ,insert-characterZ#&backward-characterÿ²Z Êsave-window-excursion(goto-characterÿ&zúýý*Z Zprovide-prefix-argumentZ(delete-next-characterÿÜ’ pause-or-exitrùj0û"recursion-depthZ pause-emacs exit-emacs, pop-recursionýÔÿL¼skip-white-space˜ûJn&,!eolp.ùÄûzûˆZ ûfûtZ $forward-characterrthis-line-is-blankL÷È$beginning-of-lineþø÷ºÿ>ZZpkill-current-lineÿšF÷tþø&kill-to-end-of-lineý\ZÿÐàbeginning-of-blockmymark& insert-stringøüönÿ¾õähö¶ öÆøŒ>÷ üvÿ”,delete-previous-characteröD ü8ÿVÿÆ, end-of-blockÿùÒ¢preceding-word  backward-wordset-mark  forward-word$region-to-string!ôXŒelec-left-brace  next-positionold-mode*ôÂÿâ mode-string0ôò übüp end-of-linepôÂ\üü,bolp$!=ùZ ÿàùZ ù°Z *óøÿ@ block-bodyý>{}ùˆ&newline-and-indentû°DóÚeobp&ô4newlineùó<þ<ò²  previous-line elec-indent"recursive-editó$ûû~ øêý¸ÿò¦ýîýÀJelec-left-parenýxûÜ()ø&Lelec-left-bracketý,û�[]÷ÚLelec-right-parenlineüÈ(÷f"last-key-struckÂñÌ"backward-parenšñÆ"dot-is-visibleHò ñ>ÿb"sit-forZ *ñÎùpûnühðäÿû’ messageþâ´elec-tabnewcolð|ÿäïÞñnïöZ.ö&&delete-white-spaceöÊ to-colÿrNelec-function-formatold-dotold-size ï ÿÈïïZ*ï€ÿ buffer-sizeHïŽü*ô^}ù¬ñd÷œ(exchange-dot-and-markúr÷Ú filter-regionºðindent -st -ií2fîÎ.&elec-c-split-declarations -bc  -nbc @ô@:/ *þpþþýDone!,úªù(ùüôìPó<Z D elec-linefeed$í¾õB î*ùª îú@Telec-semicoloníx ôèôöøŠüÀòªZ;ùJ– elec-main÷Ö÷ðìÄ÷äøõ,üfø$ö (){}òöZòJùô’ù ô†øþìâ)$ò@ îðfì$÷$ëš.ì÷Z"main-parametersJuse-abbrev-table&elec-c-main-abbrevs>local-bind-to-keyòÜøt(ÿv"elec-c-abbrevsÿ˜ñüÿ¶ ñNö÷¸øTñ6ëX$ëhë„main ëfÿæîÌêÂõÂê8(ê°õø main-body÷  ð´õ‚÷êpõ¸õŠZ® elec-argc ìýîðó˜,argvõˆö¬"ón int argc;ö„&óF  char *argv[];Znelec-ifô”ô®é‚ô¢ôÄ òà () {}ï&õ¢öë(ï.öéôèŽ,éôN  if-conditionõò ïóÔ$îÒ ê˜ëDè¶ó¶è,&è¤óìif-bodyõ–èÒðÀñ, î˜ófô²èTóœónZþ elec-elseó$ó>èó2óTñp {}íºô6ô²ôÌ$íÖ éœêHçºòºç0(ç¨òð else-bodyô˜çÔïÂð. íšòhó´çVòžòpZdelec-forò&ò@çò4òV"ðr (;;) {}ì¶ó2ó® è¤ý”ìÌó¶æ¶ñ¶æ,*æ¤ñì for-controló’ ì¦ñt$ìr è8èäæVñVåÌ(æDñŒfor-bodyó4æpî^îÊ ì6ñòPåòñ:ñ ZV elec-whileðÀðÚå®ðÎðð ï ü0ëfñâò^ çTüDë|òfåfðfäÜ.åTðœ"while-conditionò> ëRð $ë æäç�åðäx*äðð8 while-bodyñÞåíít êàï®ðúäœïäï¶Zzelec-doïnïˆä\ï|ïž&íº  {} while (); ä¶æ¦ðpðìñ$ê åÖúÆãôîôãj&ãâï*do-bodyðÔäëþìj éÖî¤2é¢åh;ãxîxâî,ãfî®  do-conditionðR éfî4ï€ã"îjî<Z8 elec-switchíðî âÞíþî ì<ù`è–ïïŽ ä„ùtè¬ï–â–í–â 0â„íÌ$switch-conditionïl è€íN$èL ää¾â0í0á¦"elec-case-loop è.ìüîHáêí2íZ˜ elec-caseìºìÔá¨ìÈìê"ë :break;âbí²çÈàæòZ áÌ:ç*îáìàŠ.áìJ"case-conditioníì çëÎ$æÌ â’ý.à°ë°à&(àžëæ case-bodyíŽàÊè¸é$ æ�ë^àRëšëlZ¶þcase-colëë6à ë*ëL.ßøÿÄ"current-indent&é:  case :break; à6þ4ëðæÞDå0Z à þBåvì`ß`ê`ÞÖßNê–þPìT â2êöäZ åNê6å ààû|ë¦ îÞþÄÞìéìÞbÞÚê"þ@ëàßç çv äâé° èþÞ ß*ý(êääúÝ8ä$Z Þþý6äjëTÞTéTÝÊÞBéŠýDëH(delete-previous-word çrdefault next-lineÝÆéÿÂêÌÞåöæbÝœèäè¶Zæ elec-defaultèhè‚ÝVèvè˜ æ´:break; ݶû´épã†ÛÄâ°Z éÒéì$âö Þ¼ùXÜÚçÚÜPéà âôçÂܶçþçÐZ(setup-for-codeÜzÚ<Z,Üf left-marginZ.Ü:  right-marginZ,Ü  prefix-stringê¸@ use-local-map  elec-c-keymap,Û  abbrev-modeZ` elec-slashBÛ°ÞÈà6Z*ÜààZ/áüàÌZ/ZverbatimæåøÚìæ æ.ÚÚåÚÚPÚÈþfZÚ´þ~ZÚ ÿZ0þ°*elec-c-verbatim-keymapÚ\å¤ÿ@6é|0Type ^C to exit verbatim modeç, à@åÚåJå6ÚJײ$setup-for-commentý(ÿÚdÚåtÞ”Z/8Ùô Ý ZÙ†ý$ÙÙtýÚlÙbýÚZÙPýØ0@Ù˜×0"Ù2ý** ÙýÖ†.ý"(elec-c-comment-keymapØÐý4ZؼÖ~Zx elec-starã²VØàÛøÝfZ/.Ù>ÞZ*commentÝèZ*” elec-border old-prefixXØN ߪÕ°ÛZÜÈZ* Ø ×Èû’Z'Þ(Ôü ÝRÔ¼ãô×–û`ÖvÝ.Z.ÝLäJ¼×ÄÚÜÚêZ/RØ"ùlÝêà® * ×"ÿû×ûýâÚvÚ„Z*<×¼ÖäúÜþÊøôÝr à6ظãb݈×€ ÜRÓ¼†þHá¼zÖêÔRÝXh×PÖxá˜áºÖfá®þütãfù°ÖBáŠá\novalue¸elec-doublequoteßb"zÖ2 Ý¢Ô,hÖ Óì.֌մÓÚZÕ úZ.Ö^Õ†Ó¬ZÕrùÖZ¸elec-singlequoteÞª'zÕz ÜêÓ@hÕhÓh.ÕÔÔüÓVZÔèùLZ.Õ¦ÔÎÓ(ZÔºùZ† elec-c-mode ø¬øÆ èœé*&Ôp߸elec-c*use-syntax-tableÿÆ”ÔXBtemp-use-buffer  elec-c buffer4ÓØ&needs-checkpointingZPÓþÔ ÷¼÷Ö8Ô^& define-keymap÷ª ÷„÷ž"ç¾ÕŠ{"çœ×0}"çzãjçXÝÌZ{çDàŽZ[ç0à0Z( çå, æüüzüžæêý ýDæØànZ}æÄàZZ)æ°àFZ]æœäðZ;æˆùtZ* ætáV æTظær6Ò2ÒB õðøÒÒ’ þ8øÀ õÒø´æ ö,Z/åøù\Μ6ÑÖÑæ õ”öèÒ6 ýÜöÖ õvöÊ åfåôVdefine-local-abbrev#d#define8ÿ®#i#include@define-hooked-local-abbrevÐØÐÒæÎ*ÿÄelseÿìè(ÿšforÿîèèÿrÓÓ ê4(ÿZdoÿîëb,ÿ2switchÿêì°*ÿcaseÿìí¾þÜñ†ñ€ñôþÄä~äxâr ãtã’*þ argcÿìäÒ úØú¸@modify-syntax-entryw #_ ÿÄ(} { ÿ¤(] [ ÿ„() ( ÿd){ } ÿD)[ ] ÿ$)( ) ÿ " þä ' þÄ {}*/ þ¤\ \÷fè¶Zæ elec-defaultèhè‚ÝVèvè˜ æ´:break; ݶû´épã†ÛÄâ°Z éÒéì$âö Þ¼ùXÜÚçÚÜPéà âôçÂܶçþçÐZ(setup-for-codeÜzÚ<Z,Üf left-marginZ.Ü:  right-marginZ,Ü  prefix-stringŸ ô  ò0.electric-c.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(autoload "edit-block-comment" "comments.ml") (defun (c-paren lastp reindent (if (& (eolp) (= (last-key-struck) '}')) (progn (delete-white-space) (setq lastp (dot)) (setq reindent (bolp)))) (insert-character (last-key-struck)) (save-excursion (backward-paren) (if reindent (progn (save-excursion indent (setq indent (current-indent)) (goto-character lastp) (to-col indent)))) (if (dot-is-visible) (sit-for 5) (progn (beginning-of-line) (set-mark) (end-of-line) (message (region-to-string))) ) ) ) (c-indent old-dot old-size (setq old-dot (+ (dot) 0)) (setq old-size (buffer-size)) (save-excursion (previous-line) (re-search-forward "^}") (set-mark) (backward-paren) (beginning-of-line) (exchange-dot-and-mark) (end-of-line) (forward-character) (filter-region "indent +st") ) (goto-character (/ (* (buffer-size) old-dot) old-size)) (novalue) )  (c-nl-indent indent (setq indent (current-indent)) (delete-white-space) (if (= (preceding-char) '{') (setq indent (+ indent 4))) (newline) (to-col indent) ) (&electric-C-} (if (eolp) (progn (delete-white-space) (if (! (bolp)) (newline)) ) ) (c-paren) ) (&electric-C-{ (if (eolp) (progn (insert-string "{") (newline-and-indent) (indent-line) ) (insert-string "{") ) ) (dedent-line (beginning-of-line) (to-col (- (current-indent) 4)) (insert-string ".") (delete-white-space) (delete-previous-character) (end-of-line) ) (indent-line (beginning-of-line) (to-col (+ (current-indent) 4)) (insert-string ".") (delete-white-space) (delete-previous-character) (end-of-line) ) (&electric-C-semi (insert-string ";") (if (eolp) (newline-and-indent)) ) (skip-spaces (forward-character) (while (| (| (= (following-char) ' ') (= (following-char) ' ')) (= (following-char) 10)) (forward-character) ) ) (&electric-C-* (if (& (eolp) (= (preceding-char) '/')) (progn (delete-previous-character) (if (! (bolp)) (progn (delete-white-space) (if (bolp) (delete-previous-character)) ) ) (begin-C-comment) ) (insert-string "*") ) ) (&electric-C-/ (if (& (eolp) (= (preceding-char) '*')) (progn (delete-previous-character) (end-C-comment) ) (insert-string "/") ) ) (begin-C-comment (move-to-comment-column) (setq left-margin (current-column)) (setq right-margin 78) (setq prefix-string " ") (insert-string "/* ") ) (end-C-comment (if (!= (preceding-char) ' ') (insert-character ' ')) (insert-character '*') (insert-character '/') (setq right-margin 1000) ) (high-voltage-on (local-bind-to-key "&electric-C-semi" ';') (local-bind-to-key "&electric-C-{" '{') (local-bind-to-key "&electric-C-}" '}') (local-bind-to-key "&electric-C-*" '*') (local-bind-to-key "&electric-C-/" '/') (local-bind-to-key "high-voltage-off" "\^^") (message "high voltage on") ) (high-voltage-off (local-bind-to-key "self-insert" ';') (local-bind-to-key "self-insert" '{') (local-bind-to-key "c-paren" '}') (local-bind-to-key "self-insert" '*') (local-bind-to-key "self-insert" '/') (local-bind-to-key "high-voltage-on" "\^^") (message "high voltage off") ) (electric-c-mode (setq mode-string "electric-C") (use-syntax-table "C") (local-bind-to-key "forward-paren" "\e)") (local-bind-to-key "edit-block-comment" "\ee") (local-bind-to-key "backward-paren" "\e(") (local-bind-to-key "begin-C-comment" "\e`") (local-bind-to-key "c-nl-indent" "\n") (local-bind-to-key "c-paren" ')') (local-bind-to-key "c-paren" ']') (local-bind-to-key "c-paren" '}') (local-bind-to-key "end-C-comment" "\e'") (local-bind-to-key "c-indent" "\ej") (local-bind-to-key "high-voltage-on" "") ; CTRL-^ (use-abbrev-table "electric-c") (error-occurred (electric-c-mode-hook)) (novalue) ) ) (use-syntax-table "C") (modify-syntax-entry "() (") (modify-syntax-entry ")( )") (modify-syntax-entry "(} {") (modify-syntax-entry "){ }") (modify-syntax-entry "(] [") (modify-syntax-entry ")[ ]") (modify-syntax-entry """ '") (modify-syntax-entry """ """) (modify-syntax-entry "\\ \\") (modify-syntax-entry "w _") (novalue) o-col indent)))) (if (dot-is-visible) (sit-for 5) (progn (beginning-of-liñ ó òò0/electric-c.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã`autoload&edit-block-comment comments.mldefunfc-parenlastpreindentifj&eolp>="last-key-struckZ}–progn&delete-white-space4setqþúdot$ÿÐþðbolp*insert-characterÿ Øsave-excursion"backward-paren¨þ€þ^œþô–ÿ®indent.ÿ ÿä"current-indent(goto-characterýÊ to-colÿzìýØ"dot-is-visible"sit-forZ¢þ$beginning-of-lineset-mark end-of-line>message$region-to-stringc-indentold-dotold-size.ýXÿÈ"+ýVZ*ý*ÿ´ buffer-sizeý‚  previous-line:re-search-forward^}þ‚ý>þR(exchange-dot-and-markþd$forward-character> filter-region indent +st@ý$:/ *þ¶þ@þTnovalue¸ c-nl-indentüdû€üXüxûHVúª0úæ"preceding-charZ{ û2ü ýÞûþZnewline üFûÐd &electric-C-}>úú22ú‚ú”&ùö!úÚÿ†ù‚¶ &electric-C-{–ùªùÎ~ú4 insert-string{&newline-and-indent indent-line ÿŒÿ¦ž dedent-lineûr(úü"-ú˜Zÿ4.ùF,delete-previous-characterû8Dÿ<úìúvûÚú Z þ¼ÿŒøÜÿšúôP&electric-C-semiþz;÷ôøþˆ´ skip-spacesü&�whiler|Jÿð0÷Î"following-charZ ÷žÿÔZ ÷ŠÿÀZ û–° &electric-C-*�÷ ÷÷,÷>ü\Z/^÷hþ>0öÜ üê÷Î÷J÷\ö¾÷¶þ"begin-C-comment üöûb~ &electric-C-/^ö^ önö|öŽû¬Z*,ö¸ýŽ  end-C-comment üxúÐüÿX*move-to-comment-columnFöŽ left-margin"current-column.öH  right-marginZN<ö  prefix-string ûŒ/* nþÜ8ôþ$!=úHZ õêZ õÜZ*õÎZ/õhÿ$Zè high-voltage-on2local-bind-to-keyü"Z;ÿÒúvZ{ÿ¾ùþZ}ÿªüêZ*ÿ–ý†Z/>ÿ‚$high-voltage-off(öŽ"high voltage on¾ÿ¤,ÿ self-insertZ;þêÿØZ{þÖòòZ}þÂÿ°Z*þ®ÿœZ/þšþrÿ:*õÒ$high voltage off‚electric-c-modeBój mode-string electric-C8use-syntax-tableC<ý  forward-paren)"ý†ñFe"ýdó0("ýBû` ý ö¨ ýñZ)üìñZ]üØðôZ}"üÄû'"ü¢ô$jü€üXý Buse-abbrev-table electric-cJerror-occurred(electric-c-mode-hookõV ýæþ@modify-syntax-entry() ( ÿÄ)( ) ÿ¤(} { ÿ„){ } ÿd(] [ ÿD)[ ] ÿ$" ' ÿ" " þä\ \ þÄw _óäsert-characterÌ ò Íò0/expandX.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(defun (expand-mlisp-word (insert-string (get-tty-command ": expand-mlisp-word ")) (novalue)) (expand-mlisp-variable (insert-string (get-tty-variable ": expand-mlisp-variable ")) (novalue)) ) ÿÄ)( ) ÿ¤(} { ÿ„){ } ÿd(] [ ÿD)[ ] ÿ$" ' ÿ" " þä\ \ þÄw _óäsert-characterE ñ Fò0/expandX.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãDdefun¨expand-mlisp-wordj insert-stringJget-tty-command(: expand-mlisp-word novalue„expand-mlisp-variableVÿXPget-tty-variable,: expand-mlisp-variable ÿl [ ÿD)[ ] ÿ$" ' ÿ" " þä\ \ þÄw _óäsert-character  ð  ò00ftp-visit.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; UNIX Emacs package to simulate a "visit" on remote files ; Copyright 1982 by Nathaniel Borenstein ; Modifications Copyright 1986 by Tektronix, Inc. ; Massively redone to remove the CMU-isms. ; ; The only function here you want to use is ftp-visit. It will visit ; a file on a remote machine, more or less. It does not save the ; file automatically, but merely puts it in a buffer with no ; filename associated. Of course, you can save it with ^X^W. ; It uses the same buffer each time, so that each use trashes the ; previously visited remote file. ; ; The name of the machine to go to must be supplied, either ; interactively or as the second argument. The name of the ; machine must also have an login entry in your ~/.netrc file. ; This package implements ftp output only, if the ftp program ; prompts for input, you may be able to send it strings via ; string-to-process (process name is "ftp"). Best if you don't ; let ftp prompt for anything. ; ; Great care is taken to properly quote file names through to ftp. ; It is the author's belief that you need never quote anything in ; the file name you pass or give to ftp-visit. Just type the file ; name as you'd give it on the target machine. ; (declare-global .has-printed .machine .remotefile first-output) (defun (ftp-visit .cmdname .default .prompt (progn (save-window-excursion (list-processes)) (setq first-output "") (setq .has-printed 0) (setq .remotefile (concat "\"" (arg 1 "Remote file name? ") "\"")) (setq .default "scarecrow") (if (>= (nargs) 2) (setq .machine (arg 2 (concat "Machine name [" .default "] ? ")) ) (setq .machine (get-tty-string (concat "Machine name [" .default "] ? ")) ) ) (if (= .machine "") (setq .machine .default) ) (setq .cmdname (concat "ftp " .machine " get " .remotefile " -")) (error-occurred (delete-buffer "ftp.output")) (start-filtered-process .cmdname "ftp" ".dump-ftp-output") (save-window-excursion (progn (pop-to-buffer "ftp") (setq needs-checkpointing 0) ) ) (pop-to-buffer "ftp.output") (setq needs-checkpointing 0) (setq mode-string "Waiting...") (novalue) ) ) (.dump-ftp-output (save-window-excursion (pop-to-buffer "ftp.output") (end-of-file) (insert-string (process-output)) (if (!= 1 (process-status "ftp")) (setq mode-line-format (concat "%[%M%] " .remotefile " on " .machine " ")) ) ) ) ) "begin-C-comment üöûb~ &electric-C-/^ö^ önö|öŽû¬Z*,ö¸ýŽ  end-C-comment üxúÐüÿX*move-to-comment-columnFöŽ left-margin"current-column.öH  right-marginZN<ö  prefix-string ûŒ/* nþÜ8ôþ$!=úHZ õê' ï (ò00ftp-visit.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãœdeclare-global  .has-printed.machine .remotefile  first-outputŠdefun, ftp-visit.cmdname.default.prompt¾prognJsave-window-excursion"list-processes2setqþä.ÿÒ  .has-printed:„ÿ¤þxxconcat"Darg:&Remote file name? ÿ¬(ÿ þ‚ scarecrowòif6>=nargs:`þ¬ýdTÿ::Fþþ"Machine name [ýÒ] ? FþLý:get-tty-stringþŠÿ�ýzÿ¬8ÿ =üªþýàü˜ý<zýÎ.cmdnameXþftp üL get üJ -`error-occurred> delete-buffer ftp.outputjstart-filtered-processÿftp$.dump-ftp-outputfü@`ü"& pop-to-bufferÿž4üX&needs-checkpointing: ÿªÿüÿÄ:Bü mode-string Waiting...novalueFþþ@ûX ÿ"þˆ end-of-fileB insert-string"process-outputÎü<F!=:(process-statusþ*‚úä$mode-line-formatXû&%[%M%] ùt on ù: achine "") (setq .machine .default) ) (setq .cmdname (concat "ftp " .machine " get " .remotefile " -")) (error-occurred (delete-buffer "ftp.output")) (start-filtered-process .cmdname " § ò01generate.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(defun (gen-on (save-excursion fname (setq fname (get-tty-string "function name: ")) (temp-use-buffer "generate") (if prefix-argument-provided (erase-buffer) (progn (end-of-file) (insert-string "\n"))) (insert-string "(defun (" fname "\n") (start-generating-mlisp)))) (defun (gen-off (stop-generating-mlisp) (pop-to-buffer "generate") (end-of-file) (insert-string "))\n") (beginning-of-file) (electric-mlisp-mode))) (bind-to-key "gen-on" "\^X[") (bind-to-key "gen-off" "\^X]") "Darg:&Remote file name? ÿ¬(ÿ þ‚ scarecrowòif6>=nargs:`þ¬ýdTÿ::Fþþ"Machine name [ýÒ] ? FþLý:get-tty-stringþŠÿ�ýzÿ¬8ÿ =üªþýàü˜ý<zýÎ.cmdnameXþftp g ¦ hò01generate.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã0defungen-onþsave-excursionfnamebsetqÿÔDget-tty-string"function name: >temp-use-buffergenerateÌif,prefix-argument-provided  erase-bufferjprogn end-of-file4 insert-string .ÿÐ(defun (þ^ÿÈ*start-generating-mlispÚýÔÔgen-off(stop-generating-mlisp& pop-to-bufferþ\þìÿ)) $beginning-of-file&electric-mlisp-mode: bind-to-keyüô["ÿÊþð]ngþŠÿ�ýzÿ¬8ÿ =üªþýàü˜ý<zýÎ.cmdnameXþftp Ì ¥ Íò01global-del.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; Deletes all lines containing a target string (defun (global-delete-lines target delcnt (setq delcnt 0) (setq target (get-tty-string ": global-delete-lines containing ")) (save-excursion (error-occurred (beginning-of-file) (while 1 (search-forward target) (beginning-of-line) (kill-to-end-of-line) (kill-to-end-of-line) (setq delcnt (+ delcnt 1)) ) ) ) (message (concat delcnt " lines deleted")) ) )  .ÿÐ(defun (… ¤ †ò02global-del.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã„defunlglobal-delete-linestargetdelcnt&setqÿÒZbÿÞÿ¤Vget-tty-string4!: global-delete-lines containing .save-excursion error-occurred$beginning-of-fileÆwhileZ(search-forwardþž$beginning-of-line&kill-to-end-of-lineÿÞ.þ|þ\"+þBZ\messageBconcatþ" lines deleted pop-to-bufferþ\þìÿ)) $beginning-of-file&electric-mlisp-mode: bind-to-keyüô["ÿÊþð]ngþŠÿ�ýzÿ¬8ÿ =üªþýàü˜ý<zýÎ.cmdnameXþftp Ñ £ Òò02goto.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(defun ;*************************************************************** ; goto-line ; - moves cursor to beginning of indicated line. ; - line number is taken from prefix if provided, ; is prompted for otherwise. ; - first line of file is line 1 (goto-line line (if prefix-argument-provided (setq line prefix-argument) (setq line (arg 1 ": goto-line ")) ) (beginning-of-file) (if (> line 1) (provide-prefix-argument (- line 1) (next-line) ) ) (beginning-of-line) (novalue) ) ;*************************************************************** ; goto-percent ; - moves cursor past indicated percentage of the buffer. ; - percentage is taken from prefix if provided, ; is prompted for otherwise. ; - (goto-percent n) goes to the character closest to the ; beginning of the buffer that is reported as n% in the ; status line. This is 2 characters further into the ; buffer than you'd expect. As a result, (goto-percent 0) ; goes to character 1 in the file, since I didn't feel like ; fixing that special case. ; - (goto-percent 100) goes to the end of the buffer. ; - remember that the position of the first character ; in the buffer is 1. (goto-percent percent (if prefix-argument-provided (setq percent prefix-argument) (setq percent (arg 1 ": goto-percent ")) ) (goto-character (+ (/ (* (buffer-size) percent) 100) 2)) (novalue) ) ) novalueFþþ@ûX ÿ"þˆ7 ¢ 8ò03goto.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã6defunò goto-linelineÌif,prefix-argument-provided@setqÿ’"prefix-argumentJÿÄÿd>argZ  : goto-line $beginning-of-file�ÿ">þâZhprovide-prefix-argument"-þ–Z next-line$beginning-of-linenovalue, goto-percentpercentZþ þþBÿØþT<þ0ÿÆ0þpZ": goto-percent ’goto-characterp+T/8* buffer-sizeÿZdZþÄr closest to the ; beginning of the buffer that is reported as n% in the ; status line. This is 2 characters further into the ; buffer than you'd expect. As a result, (goto-percent« ¡ ¬ùincr-search.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; 14-Jan-83 Jerry Agin (agin) at Carnegie-Mellon University ; Added regular expression searches. Can be invoked by calling ; incremental-re-search or reverse-incremental-re-search, or by ; typing ^T within a search string. ; Modified: Jerry Agin at CMU-750R Fri Apr 30 1982 ; - fixed case fold lossage ; - added search-exit-char ; Modified: Jeffrey Mogul @ Stanford 6 November 1981 ; - original version tried to reverse by re-defuning things. This ; tended to fail quite often. The direction of search is now ; tested explicitly. ; - accepts as a "normal-character" ; A. Witkin 1/81 ; Created. ; Modified: Bill Waller Sep 1985 ; - change made to sound the bell at failure. This matches Dec 20 ; Emacs and saves users from staring at the bottom of the screen ; looking for a failure message. (declare-global I-search-string) (setq I-search-string "") (declare-global I-search-re) (setq I-search-re 0) (declare-global search-exit-char) (if (= search-exit-char 0) (setq-default search-exit-char '\033')) (defun (&inc-initial (if (& (= (length string) 0)(> (length I-search-string) 0)) (progn (setq string I-search-string) (setq is-re I-search-re)))) (&inc-message (progn (if failing (send-string-to-terminal "\007")) (message (if failing "Failing " "") (if is-forward "" "Reverse ") (if is-re "R-E " "") "I-search: " string)) ) (&inc-forward-search (setq failing (& (!= string "") (error-occurred (if is-re (re-search-forward string) (search-forward string))))) (if (! failing) (progn (if (= string "") (set-mark) (region-around-match 0) ) (setq goodlength (length string)))) (&inc-message)) (&inc-reverse-search (setq failing (& (!= string "") (error-occurred (if is-re (re-search-reverse string) (search-reverse string))))) (if (! failing) (progn (set-mark) (setq goodlength (length string)))) (&inc-message)) (&inc-normal-char  (setq string (concat string next)) (if (& failing (! is-re)) (&inc-message) (&inc-check))) (&inc-check (if is-forward (&inc-forward-check) (&inc-reverse-check))) (&inc-forward-check (exchange-dot-and-mark) (&inc-forward-search) (if failing (exchange-dot-and-mark))) (s= s1 s2 (setq s1 (arg 1)) (setq s2 (arg 2)) (if (= s1 s2) 1 (!= (length s1) (length s2)) 0 (! case-fold-search) 0 (progn (while (& (length s1) (c= (string-to-char s1) (string-to-char s2))) (setq s1 (substr s1 2 -1)) (setq s2 (substr s2 2 -1))) (! (length s1) )))) (&inc-looking-at ans (if (= string "") 1 is-re (& (! (error-occurred (setq ans (looking-at string)))) ans) (save-excursion (set-mark) (goto-character (+ (dot) (length string))) (s= (region-to-string) string)))) (&inc-reverse-check (if (&inc-looking-at string) (progn (setq failing 0) (setq goodlength (length string)) (&inc-message))  (&inc-reverse-search))) (&inc-CG (if (= nextc '') ; ^G (if failing (progn (setq string (substr string 1 goodlength)) (setq failing 0) (&inc-message)) (progn (setq ok 0)(goto-character start))))) (&inc-CS (if (= nextc '') ; ^S (progn (&inc-initial) (setq is-forward 1) (&inc-forward-search)))) (&inc-CR (if (= nextc '') ; ^R (progn (&inc-initial) (setq is-forward 0) (&inc-reverse-search)))) (&inc-DEL (if (= nextc '') ; RUBOUT (progn (setq string (substr string 1 (- (length string) 1))) (if (& failing (! is-re) (> (length string) goodlength)) ; There's a minor bug here. (Can you find it?) ; It's so obscure it's not worth fixing. (&inc-message) (&inc-check))))) (&inc-CQ (if (= nextc '') ; ^Q (progn (setq next (char-to-string (setq nextc (get-tty-character)))) (if (&inc-meta-char) (setq next (concat "" next))) (&inc-normal-char) (setq nextc '')))) (&inc-ALT (if (= nextc search-exit-char) (setq ok 0))) (&inc-CT ; use ^T to toggle regular-expression search (if (= nextc '') ; ^T (progn (setq is-re (! is-re)) (&inc-check)))) (&inc-special-char (| (= nextc '')(= nextc search-exit-char) ; ^G (= nextc '')(= nextc '') ; ^S ^R (= nextc '')(= nextc '') ; ^Q RUBOUT (= nextc ''))) ; ^T (&inc-funny-char (| (& (!= nextc ' ') (< nextc ' ')) (> nextc '~'))) ; first is ^I (&inc-meta-char (> nextc 127)) (incremental-search (&incremental-search 1 0)) (reverse-incremental-search (&incremental-search 0 0)) (incremental-re-search (&incremental-search 1 1)) (reverse-incremental-re-search (&incremental-search 0 1)) (&incremental-search string ok start failing is-forward goodlength push-back savemark is-re (setq is-forward (arg 1)) (setq is-re (arg 2)) (if (error-occurred (setq savemark (mark))) (setq savemark 0)) (set-mark) (setq start (dot)) (setq push-back -1) (setq string "") (setq ok 1) (setq failing 0) (setq goodlength 0) (&inc-message) (while ok (&inc-process-char)) (setq I-search-string string) (setq I-search-re is-re) (if (>= push-back 0) (push-back-character push-back)) (set-mark) (goto-character savemark) (exchange-dot-and-mark) ) (&inc-process-char next nextc (setq next (char-to-string (setq nextc (get-tty-character)))) (if (&inc-funny-char) (if (&inc-special-char) (progn (&inc-CS)(&inc-CR)(&inc-CG)(&inc-DEL)(&inc-CQ)(&inc-ALT) (&inc-CT)) (progn (setq push-back nextc) (setq ok 0))) (&inc-normal-char)) (if (!= nextc '') (setq I-search-string "")))) ength (length string)))) (&inc-message)) (&inc-reverse-search (setq failing (& (!= string "") (error-occurred (if is-re (re-search-reverse string) (search-reverse string))))) (if (! failing) (progn (set-mark) (setq goodlength (length string)))) (&inc-message)) (&inc-normal-char ç   èù incr-search.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãDdeclare-global"I-search-string2setqÿÊ$ÿŽ I-search-reÿ®ÿàT*ÿV$search-exit-charfif"=ÿ¶T. setq-defaultÿˆT¨defunò &inc-initialÒÿf~&Bÿb4lengthstringT(> ÿ´þ:TNprognþ6ÿœþ$þ$is-reþ>` &inc-message@ÿ–^þnfailing>send-string-to-terminalÜmessage.ýöÿŒFailing ýXFýÈ is-forwardý.Reverse *ý‚þÎR-E üè I-search: þú&inc-forward-searchÈüzþ¤¼ý¦"!=ý¾üj”error-occurredrü¸þ>re-search-forwardstring(search-forwardÿÈìif!ý¸¼prognbÿ¼üÿnûvset-mark.region-around-matchTBsetq goodlength ü$þÜ  &inc-message(&inc-reverse-searchÆÿ|üªºû¬"!=þhúp’error-occurredpþ|is-re*re-search-reverseýø(search-reverseýÐ6þ þûÞ$þ*þTþ˜þª úâýšþª&inc-normal-charDþVýd8concatýDnextBýhúHû: ýlþÞþ6 &inc-checkvÿæpý  is-forward&&inc-forward-check&&inc-reverse-checkfÿ¸(exchange-dot-and-mark&&inc-forward-searchü\ú4ÿªîs=s1s2*ü²ÿÒargTüˆÿ¾ÿÚThûÄøÿˆÿ˜Tüè øžÿh ø’ÿrT*û”$case-fold-searchTðû|Øwhile\ø ø(þòJc=(string-to-charþ´ ÿÜþ¾<û|þœ0substrþ|TTÿÿÿÿ(û@þvÿÈþjTTÿÿÿÿú„ ÷hþ2V&inc-looking-atansú$övùÖõÞTû’Höä<ú6ûX0ú–ÿ°$ looking-atù€ÿ†°save-excursionùôXgoto-character6+dot öBøú0üð$region-to-stringøÊVü4Pù þ¢ø²8ùù’öÀTù~ù� õÈø€ù¨ùÂà&inc-CGÆø–&ôènextcTšøjöBFøŽ&ùøýŠøTøúøÜö Tù HøH$ø¼okTþdstartZ&inc-CS@÷¶ôÿ$T&÷ÌôVø:útTúþZ&inc-CR@÷\ó®þÊT&÷róü÷àúTø.Æ&inc-DELª÷óRþnT�÷H÷Šö˜<üöŒT(- ó¬ödTBö˜0óxôj öœøó¶ ótö,÷*÷Nùø&inc-CQÞö<òŽýªTÄöR^öÆøšRchar-to-string0ö˜ýb$get-tty-characterFõ¾"&inc-meta-charö@ø÷îñPø÷¬öüæTf&inc-ALTJõB0ñ”ü°$search-exit-charõ¶üþTX&inc-CT>ôÞñ0üLT$ôôõhöF ôÈö:÷fÂ&inc-special-charž|ðÀûÜTð¬ûÈÿðšû¶Tð†û¢TðrûŽTð^ûzTðJûfTx&inc-funny-charVÿD<ðœôôû$T "<ûT ð¶úîT~ý²ðœúÔT\incremental-search6&incremental-searchTTDreverse-incremental-searchÿ TT>incremental-re-searchÿbTTFreverse-incremental-re-searchÿTTrÿñàúú2ïîôôòÆ push-backsavemarkis-reDsetq is-forwardõ€TÿÀÿ¢õfTTif*ò $ÿŠÿPmarkÿfÿ,Tset-mark$ÿ6start÷nÿþ¼Tÿÿÿÿ&þþstringìT$þØokT(þ´failingT,þŒ goodlengthT  &inc-message0ô¨ÿl$&inc-process-char.þ"I-search-stringþô*ýâ I-search-reý¦Vþ$>=ýLT,push-back-characterýþ(goto-characterý(exchange-dot-and-markþÜnextö^üèÿàRchar-to-string0üºõØ$get-tty-characterDüè"&inc-funny-charüÀ$&inc-special-charÀî&inc-CS&inc-CR&inc-CG&inc-DEL&inc-CQ&inc-ALT&inc-CT,íRûrûôŠû`üŒTï*<û¤$!=ôNTûýè†ckfÿ¸( Ÿ ò04ind-region.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; This function slides a region left or right by "argument prefix" spaces. ; It is useful in manually meddling with indentation in block-structured ; languages. ; "argument prefix" defaults to 4 if not provided. ; I usually bind it to ESC-^I ; Brian Reid March 82 (defun (indent-region n (if prefix-argument-provided (setq n prefix-argument) (setq n 4)) (if (> (dot) (mark)) (exchange-dot-and-mark)) (beginning-of-line) (exchange-dot-and-mark) ;;;; (end-of-line) (save-excursion  (narrow-region) (beginning-of-file) (while (! (eobp)) (indent-line n) (next-line) ) (widen-region) ) ) (indent-line (error-occurred (while (looking-at "[ ]") (forward-character)) (if (! (eolp)) (progn oc oq or (setq oc (+ (current-column) (- (arg 1) 1))) (if (< oc 0) (setq oc 0)) (beginning-of-line) (delete-white-space) (setq oq (/ oc 8)) (setq or (- oc (* oq 8))) (while oq  (insert-string "\t") (setq oq (- oq 1)) ) (while or (insert-character ' ') (setq or (- or 1)) ) (beginning-of-line) ) (progn (beginning-of-line) (delete-white-space) ) ) ) ) )  I-search-reý¦Vþ$>=ýLT,push-back-characterýþ(goto-characterý(exchange-dot-and-markþÜne© ž ªò04ind-region.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã¨defunn indent-regionn–if,prefix-argument-provided@setqÿ–"prefix-argumentÿÄÿhZpÿnB>dotmark(exchange-dot-and-mark$beginning-of-lineÿ¸ save-excursion  narrow-region$beginning-of-file„while,!eobp$ indent-lineýø next-line  widen-region"ÿ¤error-occurred`ÿ86 looking-at[ ]$forward-characteršýBþêeolpdprognocoqor|ýÿ¼p+"current-column:-argZZ<üH"<ÿ,ZübÿZý&delete-white-space.ü"þî"/þ¾Z:ûôþÖ.ÿ(þž"*þšZ`ýþ†4 insert-string ûzþFþ®þ:ZXü®þ<,insert-characterZ û"þþVýøZûÆý ûºþ¬to-characterý(exchange-dot-and-markþÜne0¸ � 0¹ò05info.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; In the distant past Andy Witkin from SRI wrote an initial ; version of the Info system. This one is a total rewrite ; by James Gosling (5/5/82). Only a few names remain the same. (extend-database-search-list "info" "/emacs/databases/info") (setq-default info-root-file "dir") (setq-default &info-file info-root-file) (setq-default &info-node "Top") (setq-default &info-camefrom "") (setq-default &info-doedit 0) (defun (info (&info "dir" "top"))) (defun (describe-command (&info "emacs" (get-tty-command ": describe-command ")))) (defun (describe-variable (&info "emacs" (get-tty-variable ": describe-variable ")))) (defun (&info m fn i (setq fn (arg 1)) (setq m (arg 2)) (save-window-excursion (delete-other-windows) (temp-use-buffer "*info-stack*") (erase-buffer) (switch-to-buffer "INFO") (setq &info-camefrom "") (find-node) (if (is-bound &info-running) (message "Recursive INFO call punted.") (progn &info-running (message "Type '^C' to resume editing, 'h' for help with INFO") (sit-for 0) (message "Type '^C' to resume editing, 'h' for help with INFO") (recursive-edit))) ) ) ) (defun (#info-enable-edit (setq &info-doedit 1) (local-bind-to-key "#info-^r" "\e\^e") (message "Database editing enabled"))) (defun (#info-^r setting-up-for-edit fn m (setq fn &info-file) (setq m &info-node) (find-node) (use-local-map "&info-editing") (setq mode-line-format (concat "  INFO edit File: " &info-file " Node: " &info-node " %M %[%p%]")) (message "Type ^C to resume info") (use-syntax-table "text-mode") (save-excursion (recursive-edit)) (use-syntax-table "info-syntax-table") (use-local-map "&info-commands") (if (& buffer-is-modified (= (substr (get-tty-string "Save changes? ") 1 1) "y")) (progn key (beginning-of-file) (set-mark) (insert-string &info-file ":" &info-node) (case-region-lower) (setq key (region-to-string)) (erase-region) (put-database-entry "info" key))) (setq mode-line-format " INFO Node: %m %M %p %") ) ) (defun (#info-g fn m s (setq s (get-tty-string "Node: ")) (setq m "Top")(setq fn 0) (save-excursion (temp-use-buffer "Hack Buffer") (setq needs-checkpointing 0) (setq case-fold-search 1) (erase-buffer) (use-syntax-table "info-syntax-table") (insert-string s) (beginning-of-line) (get-node-and-file) )  (find-node)) ) (defun (#info-h fn m (setq fn "info") (setq m "help") (find-node)) ) (defun (#info-hlp fn m (setq fn "cmds") (setq m "top") (find-node)) ) (defun (#info-d fn m (setq &info-camefrom "") (setq fn info-root-file) (setq m "Top") (find-node)) ) (defun (#info-l fn m dot (save-excursion (temp-use-buffer "*info-stack*") (end-of-file) (re-search-reverse ";\\(\\w\\w*\\),\\(\\w\\w*\\),\\(\\w\\w*\\);") (region-around-match 1) (setq dot (region-to-string)) (region-around-match 2) (setq fn (region-to-string)) (region-around-match 3) (setq m (region-to-string)) (region-around-match 0) (end-of-file) (erase-region) ) (setq &info-camefrom "") (find-node) (goto-character dot)) ) (defun (#info-@ path m (setq path (get-tty-string "Path: ")) (save-excursion (temp-use-buffer "Hack Buffer") (erase-buffer) (insert-string path " ") (beginning-of-file) (while (! (error-occurred (temp-use-buffer "Hack Buffer") (re-search-forward "[ ]*\\(.[^ ]*\\)"))) (region-around-match 1) (setq m (region-to-string)) (if (error-occurred (temp-use-buffer "INFO") (&info-goto-menu-item)) (error-message "No such menu item: " m))) ) (beginning-of-file)) ) (defun (#info-m m (setq m (get-tty-string "Menu item: ")) (&info-goto-menu-item)) ) (defun (#info-mouse-menu ldot (move-dot-to-mouse) (setq ldot (dot)) (beginning-of-line) (if (bobp) (progn (set-mark) (end-of-line) (narrow-region) (goto-character ldot) (re-search-reverse "[\t,:]") (search-forward ":") (widen-region) (get-node-and-file) (find-node) ) (if (looking-at "^* \\(\\w*\\):") (progn (re-search-forward "") (if (= (following-char) ':') (progn (setq fn "") (region-around-match 1) (setq m (region-to-string))) (get-node-and-file)) (setq &info-camefrom " Up: ") (find-node)) (error-message "No menu item on this line")) )) ) (defun (&info-goto-menu-item fn (if (error-occurred (beginning-of-file) (search-forward (concat (char-to-string 13) "* menu:"))) (error-message "This node has no menu.")) (if (error-occurred (re-search-forward (concat "^* \\(" m "\\w*\\):"))) (error-message "No such menu item: " m)) (if (= (following-char) ':') (progn (setq fn "") (region-around-match 1) (setq m (region-to-string))) (get-node-and-file)) (setq &info-camefrom " Up: ") (find-node)) ) (defun (get-node-and-file (if (looking-at "[ ]*(\\(\\w*\\))[ ]*\\(\\w*\\)") (progn (region-around-match 1) (setq fn (region-to-string)) (region-around-match 2) (if (| (= fn "dir") (= fn "Dir") (= fn "DIR")) (setq fn info-root-file)) ) (looking-at "[ ]*\\(\\w*\\)") (progn (region-around-match 1) (setq fn "") ) (error-message "Missing node specification.") ) (setq m (region-to-string)) (if (= m "") (setq m "top")) ) ) (defun (#info-f m fn (setq m (get-tty-string "Footnote: ")) (save-excursion (beginning-of-file) (if (error-occurred (re-search-forward (concat "*note \\(" m "\\w*\\):"))) (error-message "No such footnote: " m)) (if (= (following-char) ':') (progn (setq fn "") (region-around-match 1) (setq m (region-to-string))) (get-node-and-file)) ) (setq &info-camefrom "") (find-node)) ) (defun (#info-p m fn (setq m "Top") (beginning-of-file) (end-of-line) (if (error-occurred (re-search-reverse "Prev[ious]*:")) (error-message "This node has no previous.")) (search-forward "") (get-node-and-file) (setq &info-camefrom " Next: ") (find-node)) ) (defun (#info-n m fn (setq m "Top") (beginning-of-file) (end-of-line) (if (error-occurred (search-reverse "Next:")) (error-message "This node has no next.")) (search-forward "")  (get-node-and-file) (setq &info-camefrom " Previous: ") (find-node)) ) (defun (#info-u m fn (setq m "Top") (beginning-of-file) (end-of-line) (if (error-occurred (search-reverse "Up:")) (error-message "This node has no up.")) (search-forward "") (get-node-and-file) (find-node)) ) (defun (find-node dot sav file (setq dot (dot)) (setq sav 0) (if (error-occurred key keyc (switch-to-buffer "INFO") (erase-buffer) (set-mark) (insert-string (if (= "" fn) &info-file fn) ":" m) (setq keyc (region-to-string)) (case-region-lower) (setq key (region-to-string)) (erase-buffer) (if (error-occurred (fetch-database-entry "info" key)) (fetch-database-entry "info" keyc)) ) (progn (switch-to-buffer "INFO") (if (& &info-doedit (= (substr (progn (get-tty-string "Not found, should I create it? ")) 1 1) "y")) (&info-make-node) (progn lfn lm (setq lfn fn) (setq lm m) (error-occurred  (if (& (!= &info-node m) (| (= fn "") (!= &info-file fn))) (progn (setq fn &info-file) (setq m &info-node) (find-node)))) (error-message "No information on (" (if (= lfn "") &info-file lfn) ") " lm) ))) ) (if (!= fn "") (setq &info-file fn)) (setq &info-node m) (setq mode-string m) (temp-use-buffer "*info-stack*") (end-of-file) (insert-string ";" (+ dot 0) "," &info-file "," &info-node) (switch-to-buffer "INFO") (beginning-of-file) (if (& (! (is-bound setting-up-for-edit)) (looking-at " *execute: *<<")) (progn (search-forward "") (set-mark) (search-forward ">>") (backward-character) (backward-character) (narrow-region) (execute-mlisp-buffer))) (setq mode-line-format " INFO Node: %m %M %p") ) ) (defun (convert-ITS-info-file fn (setq fn (current-buffer-name)) (beginning-of-file) (setq case-fold-search 1) (error-occurred (while 1 (progn node HasCode  (re-search-forward "\^_\^_*\\|\^L") (setq HasCode (= (preceding-char) '^L')) (re-search-forward "[\^_\^L\n\t ]*") (set-mark) (if HasCode (re-search-forward "\^_[\^_\^L\n\t ]*")) (save-excursion (if (! (looking-at ".*node: *\\([^,\n\t]*\\)")) (error-message "bad format")) (region-around-match 1) (case-region-lower) (setq node (region-to-string)) (beginning-of-line) (if (looking-at ".*file:[ \t]*\\([^, \t\n]*\\)") (progn (region-around-match 1) (case-region-lower) (setq fn (region-to-string)))) ) (re-search-forward "\^L\\|\^_\\|\\'") (if (! (eobp)) (backward-character)) (copy-region-to-buffer "INFO") (save-excursion (temp-use-buffer "INFO") (put-database-entry "info" (concat fn ":" node)) ) (message "Wrote " fn ":" node) (sit-for 0) ))) ) ) (defun (&info-make-node (switch-to-buffer "INFO") (erase-buffer) (insert-string "File: " &info-file " Node: " m) (if (!= &info-camefrom "") (progn (insert-string &info-camefrom) (if (!= fn "") (progn (insert-string "(" &info-file ")") )) (insert-string &info-node) )) (insert-string "\n\n[body]\n\n* menu:\n") (search-reverse "[") (if (!= fn "") (setq &info-file fn)) (setq &info-node m) (#info-^r) ) ) (save-excursion c (temp-use-buffer "*info-stack*") (setq needs-checkpointing 0) (use-syntax-table "info-stack-syntax-table") (modify-syntax-entry "w -~") (modify-syntax-entry " ,") (erase-buffer) (temp-use-buffer "INFO") (setq needs-checkpointing 0) (define-keymap "&info-editing") (use-local-map "&info-editing") (local-bind-to-key "exit-emacs" "\^]") (local-bind-to-key "exit-emacs" "\^X\^S") (local-bind-to-key "justify-paragraph" "\ej") (setq right-margin 77) (define-keymap "&info-commands") (use-local-map "&info-commands") (setq case-fold-search 1) (use-syntax-table "info-syntax-table") (modify-syntax-entry "w -~") (modify-syntax-entry " .,:") (setq c 0) (while (<= c 0177) (local-bind-to-key "illegal-operation" c) (setq c (+ c 1))) (local-bind-to-key "execute-extended-command" 'x') (local-bind-to-key "search-forward" 's') (local-bind-to-key "search-forward" "\^s") (local-bind-to-key "search-reverse" 'r') (local-bind-to-key "search-reverse" "\^r") (local-bind-to-key "redraw-display" "\^l") (local-bind-to-key "#info-@" "@") (local-bind-to-key "scroll-one-line-down" "a") (local-bind-to-key "scroll-one-line-up" "z") (local-bind-to-key "scroll-one-line-up" "\^z") (local-bind-to-key "#info-hlp" "?") (local-bind-to-key "exit-emacs" "q") (local-bind-to-key "exit-emacs" "\^C") (local-bind-to-key "#info-m" "m") (local-bind-to-key "#info-n" "n") (local-bind-to-key "#info-p" "p") (local-bind-to-key "#info-f" "f") (local-bind-to-key "#info-u" "u") (local-bind-to-key "next-page" " ") (local-bind-to-key "next-page" "\^v") (local-bind-to-key "previous-page" "\^h") (local-bind-to-key "beginning-of-file" "b") (local-bind-to-key "end-of-file" "e") (local-bind-to-key "#info-mouse-menu" "\ePA1D") (local-bind-to-key "#info-mouse-menu" "\ePB1D") (local-bind-to-key "#info-l" "l") (local-bind-to-key "#info-d" "d") (local-bind-to-key "#info-h" "h") (local-bind-to-key "#info-g" "g") (local-bind-to-key "#info-enable-edit" "\e\") (local-bind-to-key "execute-extended-command" ":") ) (novalue) ackward-character) (narrow-region) (execute-mlisp-buffer))) (setq mode-line-format " INFO Node: %m %M %p") ) ) (defun (convert-ITS-info-file fn (setq fn (current-buffer-name)) (beginning-of-file) (setq case-fold-search 1) (error-occurred (while 1 (progn node HasCode -U œ -Vò07info.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãnextend-database-search-listinfo(/emacs/databases/infoX setq-default"info-root-filedir*ÿ¬ &info-fileÿ¨:ÿ‚ &info-nodeTop<ÿH"&info-camefrom.ÿ  &info-doeditZRdefun:þ†4&infoþêtop�ÿ²Šdescribe-commandfÿ¦emacsHget-tty-command&: describe-command ‚ÿ"|describe-variableXÿÿtLget-tty-variable(: describe-variable þ  þ¸mfni<setqÿÂargZÿÈÿ„ÿÚZpsave-window-excursion(delete-other-windowsBtemp-use-buffer  *info-stack*  erase-buffer<switch-to-bufferINFOþÀü¨üÄ find-nodeTif<is-bound  &info-runningHmessage.Recursive INFO call punted.ºprognÿ„LÿžF3Type '^C' to resume editing, 'h' for help with INFO"sit-forZ ÿ0ÿ–"recursive-editÆû�À#info-enable-editýû8ZVlocal-bind-to-key#info-^r2þn,Database editing enabled¬úʦÿš&setting-up-for-editüüü:ü ù¸ü(ûäùÐýl@ use-local-map  &info-editing´ûÐ$mode-line-formatŠconcat( INFO edit File: øî Node: øö  %M %[%p%]0üà*Type ^C to resume info@use-syntax-table text-mode(save-excursioný.*ÿœ$info-syntax-table(þN"&info-commandsû¤Ð&&buffer-is-modified–=nsubstrDget-tty-string"Save changes? ZZyBûhkey$beginning-of-fileset-mark@ insert-stringöj:öz$case-region-lower0øœÿD$region-to-string  erase-region2put-database-entryõþÎNøüNB. INFO Node: %m %M %p %Žöˆ#info-g÷‚÷hs,÷Œÿê ýÀNode: ÷`÷õ&÷N÷Zöü’$÷Ú Hack Buffer4÷&needs-checkpointingZ2öÜ$case-fold-searchZ÷’ û¼ü$ ýœþö$beginning-of-line$get-node-and-file÷šhô�b#info-hõôõÚöõâòò$öõ¼help÷2jô(d #info-hlpõŠõp$õ¨õxcmdsõ„õ@ôöÈhó¾b#info-dõ"õõ@ó(óDõ.ôþònõôØòâö`¢óVœ#info-lôºô dot ú õbõ~ end-of-fileVre-search-reverse2;\(\w\w*\),\(\w\w*\),\(\w\w*\);.region-around-matchZôÿ4ûvÿÄZóîó¾ûVÿ¤ZóÎóŠû6ÿ„Zÿû@ó¢ñŠñ¦ôæ(goto-characterþ”úñ´ô#info-@pathòì,ó$ÿà ùXPath: ŠøP ó˜ûÂóÎ ùäÿœ ù„Lwhileˆ!terror-occurred óû<Fre-search-forward"[ ]*\(.[^ ]*\)ýâZò ñÈùtŒól:ÿj ò”ó(&info-goto-menu-itemL error-message&No such menu item: ñ6ø2\ïºV#info-mñ 0ñBðþ$÷v Menu item: ÿ4Œï^†#info-mouse-menuldot$move-dot-to-mouseð¦ÿÂûÆú òbobpÈò|÷R end-of-line  narrow-region ü ÿBûŒ[ ,:](search-forward÷  widen-regionùPñ(ñ< looking-at ^* \(\w*\):´ñr ýíjtðÆ0õ`"following-charZ:8ñ*ïîèíúÎZîøî´ö`ø‚(îàìÈ Up: ð2üü,No menu item on this linevìÒpüœîJ’ïà\ûÞõ&PþdJò´*char-to-stringZ * menu:0üV*This node has no menu.bïNJûLDût>ò(^* \(ín\w*\):ûÖûðíBXîìó†þ*Z:8ïlíZí*ë^ùZí:ìöô¢öÄí"ë þFîf´ë\®ö lîp2ýZ,[ ]*(\(\w*\))[ ]*\(\w*\)¶îÒøˆZì²ì‚ôøhZ‚îj|òŠìHéÚ"òxì6Dir"òVìDIRì"ëòéb$ür [ ]*\(\w*\)&íø÷®ZëØë¨éÜ4ú.Missing node specification.ë’ëNòú*ìòñŒë6é~ëhë$éêJé¨D#info-fêøë0ë*êæ$ñ^ Footnote: ÖðRñ¸rì`:ø^4ø†.ï:*note \(ê|ý2øø&No such footnote: êDXëîðˆû,Z:8ìnê\ê,è`öZê<éøñ¤óÆê$è è(ëhòè^ì#info-pé®é¼éàéœç¦ð’ùhfë4,÷2&õ(  Prev[ious]*:4÷Ú.This node has no previous. ùdçfòì*éJç2 Next: êvçl#info-nè¼èÊèîèªæ´ï øvvêB@ö@:search-reverseNext:0öÔ*This node has no next. øbædñê.èHæ0" Previous: ép¸æf²#info-uç¶çÄçèç¤å®îš÷pVé<"õ:þþUp:.õì(This node has no up. ÷|å~ñè¸Vå®Pè¬ò|savfileçòBò<ç ÿ¾Zðèhôôfí˜keyc çÔçòç¨í¢6í¸$è ìºä²ærä æfí´æFæ~ÿ˜íæí°æfííÎç<RçÀ:ó¾4fetch-database-entryãìÂÿÐâôÿ"öè æþçäç\lë¼ä`ëêTëø>çØ8ì2Not found, should I create it? ZZì"&info-make-nodePçblfnlmå$ÿÒäîåÿÖäÈŽòvˆælRêÌ"!=âŒä”*øDêØä–âÊÿÊâ8ä~0æ®äœälâäŠäFâ2åÎlò¼&No information on ($å¸êRþîâDá¸þÜ) þÖ*åxÿãÐâãîárã¸ãÜáŠã’*ãÊ mode-stringãh äFäbîèbê’;"+îŒZ,àÈÿêàæ ä4äRéäÔäŒ@èìðp ä�æš(ó^" *execute: *<<Žäà òÖàØéªòÄ>>&backward-characterÿÞò2(execute-mlisp-buffer@âFæz4! INFO Node: %m %M %pbàX\convert-ITS-info-fileá®2áÒá¢&current-buffer-nameèdášêÂZâîüÜîÊZÎã~nodeHasCode îÞ*\| <áÿÄ0ç "preceding-charZ "î‚[ ]*ç¤.â(ÿ`"îN [ ]*ôåà^áô4íÞ.ðØ(.*node: *\([^, ]*\)$î’ bad formatëìZçZàþ¢çxévdáj2ðT,.*file:[ ]*\([^, ]*\),áÌë‚Zæðߦßvç"í8 \|\|\'*àäìÎeobpü².copy-region-to-bufferàL6är ߺà:$æÀÛîãZÞÌæý‚2à¨Wrote ÞšåèýPá(ZxÜörù* ß ß¾ßtJåŠFile: Ûð Node: ވ߮ùLÜÜ:pà0 å"ÜRß„ù"ÝÜÜ:à4äø(Ûd) äÄÛn,ä¸& [body] * menu: ôÈ[*Þàø~Ý8ÛlÝVÚÚÝ ÝDÚòÜúàZ â„c ݸÝÔÝåúZ0â *info-stack-syntax-tableBmodify-syntax-entryw -~ ÿ ,ÝH ÝÝ€ÜNåBZ& define-keymapà. àà"8ß  exit-emacs"ÞÔÿÌ@Þ²$justify-paragraphj.Ûn  right-marginZM ÿ àê ß(àÞÛ(äPZ à,à” þJþj"þ> .,:ÚÚý²Zzè$<=ýˆZ0Ý $illegal-operationýP ÚlýDöðý8Z:ÝP,execute-extended-commandZxÝêZs ÝêÜâñZr ÜÎñ<Ü®"redraw-display Üræ@BÜR(scroll-one-line-downa@Ü&scroll-one-line-upz ÛÐÿÄ Û°âÚ? Û�üˆq ÛpühÛPæèØ Û>ï$n Ûîp Úþì¨f ÚÞïÊu(Ú¾ next-pageäÈ Ú–ÿÜ:Úv  previous-page Ú<Ýöb Úâfe$ÙüåðPA1D$ÙØåÌPB1D Ù´á°l Ù”á(d Ùtà6h ÙTÞˆgÙ4ØöÙhÙ"ûÖÝ<novalueæþçäç\lë¼ä`ëêTëø>çØ8ì2Not found, should I create it? ZZì"&info-make-nodePçb  ›  ò07justify.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; Paragraph justification routines ; James Gosling (declare-buffer-specific paragraph-indent) (if (! (is-bound paragraph-indent)) (setq-default paragraph-indent 0)) (defun (justify-paragraph (error-occurred (save-excursion (beginning-of-line) (while (& (! (bobp)) (! (eolp)) (!= (following-char) '@')) (progn (previous-line)(beginning-of-line))) (if (| (eolp) (= (following-char) '@')) (progn (next-line)(beginning-of-line))) (if (& (! (eolp)) (!= (following-char) '@')) (progn last-col c-col (delete-white-space) (to-col (+ left-margin paragraph-indent)) (if (= (following-char) '@') (insert-character ' ')) (while (progn (end-of-line) (if (! (eobp)) (forward-character)) (& (! (eolp)) (!= (following-char) '@'))) (delete-previous-character) (delete-white-space) (if (& (< (preceding-char) '@') (| (= (preceding-char) '.') (= (preceding-char) '!') (= (preceding-char) '?'))) (insert-string " ")) (insert-string " ") ) (if (bolp) (backward-character)) (setq c-col (current-column)) (while (progn (setq last-col c-col) (insert-character '!') (delete-previous-character) ; (beginning-of-line) ; (if (= (following-char) '@') ; (insert-character ' ')) ; (end-of-line) (setq c-col (current-column)) (< c-col last-col)) (novalue)) ) ) ) (message "Done!") (novalue) ) ) ) ÚòÜúàZ â„c ݸÝÔÝåúZ0â *info-stack-syntax-tableBmodify-syntax-entryw -~ ÿ ,ÝH ÝÝ€ÜNåBZ& define-keymapà. àà"8ß  exit-emacs"ÞÔÿÌ@Þ²$justify-paragraphj.Ûn  right-margin£ š ¤ò08justify.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãNdeclare-buffer-specific$paragraph-indentzif6!"is-boundÿš. setq-defaultÿtZÚdefunÂjustify-paragraphžerror-occurredDsave-excursion$beginning-of-lineæwhile�&þÐbobpþ²eolp@!="following-charZ@>progn  previous-lineÿjþ<|ÿT"=ÿhZ@(ÿ„ next-lineþ–®ý–&þÆ ý þòÿÿZ@‚ÿ0last-colc-col&delete-white-spaceRto-col8+ left-marginüšFü¸þÖþHZ@,insert-characterZ –ý�’þ2 end-of-lineHüHüXeobp$forward-character&ý6 üýbýtý„Z@,delete-previous-characterþ‚Àû¨†üØ><"preceding-charZ@Býhý|ÿÎZ.ýhÿºZ!ýTÿ¦Z?4 insert-string ÿÐÿêDúÜbolp&backward-character@setqý<"current-columnpûvPüÿ¸üæüüý Z!þVÿ’üÜÿ¤þ|üÊü¨novalue2messageDone!ÿ¸x-entryw -~ ÿ ,ÝH ÝÝ€ÜNåBZ& define-keymapà. àà"8ß  exit-emacs"ÞÔÿÌ@Þ²$justify-paragraphj.Ûn  right-margin« ™ ¬ò08killring.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; killring.ml: kill and unkill text a la TOPS-20 ; HISTORY: ; 08-Dec-82 Jerry Agin (agin) at Carnegie-Mellon University ; Made some of Duane's code more efficient. ; Killing no longer moves the mark (but copying lines and ; unkilling still do). ; 03-Dec-82 Duane Williams (dtw) at Carnegie-Mellon University ; Fixed bug in forward-lines so that kill-lines works properly on ; empty lines when &kill-lines-magic is 1 and user tracks eol on ; ^N-^P. Also added kill-character and backward-kill-character, ;  and made kill-region warn the user when killing a large region. ; 28-Jul-82 Jerry Agin (agin) at Carnegie-Mellon University ; Moved the binding of append-next-kill from esc-a to ; esc-^W to avoid a conflict with backward-sentence. ; 14-Jul-82 Jerry Agin (agin) at Carnegie-Mellon University ; Created. ; This emacs macro file defines commands for killing and unkilling text. ; Commands to delete words, lines, and regions actually send the text to a ; ring of killbuffers, where they can be yanked back. Multiple killing ; commands in succession will concatenate text to the same buffer, so a ; single unkill can bring it all back. The unkill-pop command can cycle ; the kill ring to retrieve previously-killed stuff. ; The following keys are redefined: ; ^W kill-region ; ESC-w copy-region ; ^K kill-lines ; ESC-k copy-lines ; ESC-d kill-word ; ESC-h backward-kill-word ; ESC-del backward-kill-word ; ^D kill-character ; ^H backward-kill-character ; ^? backward-kill-character ; ESC-^W append next kill (pretend previous command was ^K) ; ^Y unkill ; ESC-y unkill-pop (kill the region, back up one on the kill ring, ; and unkill) ; Options: ; There are usually four buffers in the killring. If you want more buffers ; in the ring (say 8), execute the following mlisp functions BEFORE you load ; this file: ; (setq-default nrings 8) ; or else execute the following AFTER you load this file: ; (set-nrings 8) ; The ^K function will behave pretty much the same as the old ; delete-to-end-of-line did, unless you want something better. The improved ; version bases its behavior on the horizontal position of the cursor at the ; time the command is issued. If the cursor is at the beginning of the line, ; the command will assume you want to kill the entire line, including the ; return at the end. If you're at the end of the line, then it will remove ; the return separating this line from the next. Otherwise, it will kill ; just to the end of the line. To get this all to happen, execute the ; following mlisp function: ; (setq-default &kill-lines-magic 1) ; The variable &MaxKillSize is initialized to a value of zero. If you set ; it to a value such as 400 with the call ; (setq-default &MaxKillSize 400) ; then any kill function will ask the user for confirmation if the region ; being killed exceeds the size specified. (defun (region-size val (setq val (- (dot) (mark))) (if (>= val 0) val (- 0 val) ) ) (kill-region (if (| (<= &MaxKillSize 0) (<= (region-size) &MaxKillSize)  (= (substr (get-tty-string (concat "Do you really want to kill " (region-size) " characters? [no] ")) 1 1) "y") ) (progn (if (= (previous-command) -11) (progn (c-append-region) (erase-region)) (progn (next-killbuffer) (delete-region-to-buffer killbuffer))) (setq this-command -11) ) (setq this-command (previous-command)) ) ) (copy-region (if (= (previous-command) -11) (c-append-region) (progn (next-killbuffer) (copy-region-to-buffer killbuffer))) (setq this-command -11)) (c-append-region (if (>= (dot) (mark)) (append-region-to-buffer killbuffer) (progn (exchange-dot-and-mark) (yank-buffer killbuffer) (copy-region-to-buffer killbuffer)))) (append-next-kill (setq this-command -11)) (unkill ; leaves region around restored text (set-mark) (yank-buffer killbuffer) (setq this-command -25) ) (unkill-pop (if (= (previous-command) -25) (progn (delete-region-to-buffer killbuffer) (previous-killbuffer) ) ) (unkill) ) (set-up-killbuffer (setq killbuffer (concat "KB-" ringpos))) (next-killbuffer (setq ringpos (+ ringpos 1)) (if (> ringpos nrings) (setq ringpos (- ringpos nrings))) (set-up-killbuffer)) (previous-killbuffer (setq ringpos (- ringpos 1)) (if (< ringpos 1) (setq ringpos (+ ringpos nrings))) (set-up-killbuffer)) (forward-lines (if (& &kill-lines-magic (bolp)) (if (error-occurred ; beginning of line--kill whole lines (prefix-argument-loop (search-forward "\n")) ) (end-of-file) ) (error-occurred (prefix-argument-loop (if (eolp) (forward-character) ; end of line--kill crlf (end-of-line)))))) ; else--kill to end of line (kill-lines ; to append to killbuffer, set dot before killing (save-excursion (set-mark) (provide-prefix-argument prefix-argument (forward-lines)) (kill-region))) (copy-lines (set-mark) (provide-prefix-argument prefix-argument (forward-lines)) (copy-region)) (kill-word (save-excursion (set-mark) (provide-prefix-argument prefix-argument (forward-word)) (kill-region))) (backward-kill-word (save-excursion (set-mark) (provide-prefix-argument prefix-argument (backward-word)) (kill-region))) (kill-character (save-excursion (set-mark) (provide-prefix-argument prefix-argument (forward-character)) (kill-region))) (backward-kill-character (save-excursion (set-mark) (provide-prefix-argument prefix-argument (backward-character)) (kill-region))) ) (declare-global nrings) (if (= nrings 0) (setq-default nrings 4)) (declare-global ringpos) (declare-global killbuffer) (if (! (is-bound &kill-lines-magic)) (setq-default &kill-lines-magic 0)) (if (! (is-bound &MaxKillSize)) (setq-default &MaxKillSize 0)) (defun (set-nrings (save-excursion (setq nrings (arg 1 "Number of kill rings: ")) (setq ringpos (+ nrings 1)) (while (> ringpos 1) (setq ringpos (- ringpos 1)) (set-up-killbuffer) (temp-use-buffer killbuffer) (setq needs-checkpointing 0) ) ) ) ) (set-nrings nrings) (bind-to-key "kill-region" "") ; ^W (bind-to-key "copy-region" "w") ; ESC-w (bind-to-key "copy-region" "W") ; ESC-W (bind-to-key "kill-lines" " ") ; ^K (bind-to-key "copy-lines" "k") ; ESC-k (bind-to-key "copy-lines" "K") ; ESC-K (bind-to-key "kill-word" "d") ; ESC-d (bind-to-key "kill-word" "D") ; ESC-D (bind-to-key "backward-kill-word" "h") ; ESC-h (bind-to-key "backward-kill-word" "H") ; ESC-H (bind-to-key "backward-kill-word" "") ; esc rubout (bind-to-key "kill-character" "") ; ^D (bind-to-key "backward-kill-character" "") ; ^H (bind-to-key "backward-kill-character" "") ; rubout (bind-to-key "append-next-kill" "") ; ESC-^W (bind-to-key "unkill" "") ;^Y (bind-to-key "unkill-pop" "y") ; ESC-y (bind-to-key "unkill-pop" "Y") ; ESC-Y ll-region (if (| (<= &MaxKillSize 0) (<= (region-size) &MaxKillSize) ý ˜ þò09killring.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã 0defunè region-sizeval`setqÿÖB-dotmarkTif$>=ÿbZÿTÿ‚Zÿ@¸ kill-regionšÿ’L|><=  &MaxKillSizeZÿÆþ ÿÐè=Àsubstr–get-tty-stringtconcat.Do you really want to kill ýü& characters? [no] ZZy6prognðþ(2þþ$previous-commandZÿÿÿõHÿ´"c-append-region  erase-regionpÿl"next-killbufferHdelete-region-to-buffer killbuffer.üØ  this-commandZÿÿÿõüªÿÖþæŒ copy-regionZüÚý°þ¶ZÿÿÿõþÚ:þ~ÿ.copy-region-to-bufferÿ4ü ÿLZÿÿÿõ¬þ†¦üfüvü,ü<0append-region-to-bufferþÒ^ýâ(exchange-dot-and-mark$ yank-bufferþ€ ÿ"þt8append-next-killû<þhZÿÿÿõVunkillset-mark ÿfýúúæþZÿÿÿçv unkill-popRûûêüðZÿÿÿç8ü¾ ýxýœ&previous-killbufferÿ>fset-up-killbufferBú8ý@6û¸KB-ringpos’ü¸.ùðÿÞ"+ÿÄZXú"4>ÿœnringsùˆÿvùšÿjÿÒÿrþà ù^ÿLùpÿ@ZFùž"<ÿZùÿÿ*þøÿ`þ † forward-linesfù2P&$&kill-lines-magicbolp¤øÜ€error-occurred^prefix-argument-loop6search-forward  end-of-filelÿffÿ‚`ø,eolp$forward-character end-of-linež kill-lines€save-excursionü"Rprovide-prefix-argument"prefix-argumentýì÷ˆ< copy-linesû¦ÿˆÿ¬ý°úZ kill-word>ÿ,ûf,ÿHÿl  forward-wordöòdbackward-kill-word>þÈû,þäÿ  backward-wordöŽFkill-character$þhú¢þ„þ¨ýðöHnbackward-kill-characterDþúT2þ6þZ&backward-characterõÚ(declare-globalû`HõXö.ûNZ. setq-defaultû Z ÿ”úž ÿˆ÷¬Pôø6!"is-boundû®ÿ‚û¢Z,ô¨ÿ´ ÿÂõ8ÿVõ,ZLóÐF set-nrings(ü®TóòúNHargZ*Number of kill rings: óžùŒù²ùîZ®whileù®ùTZ óRù@ódù4ZøÚ(temp-use-bufferö4ó&needs-checkpointingZ þ¾ù,8 bind-to-keyóZ"ÿÌõòw"ÿªõÐW ÿˆúÚ "ÿhûXk"ÿFû6K"ÿ$ûPd"ÿû.D"þàûfh"þ¾ûDH"þœû" þzûd þZûŠ þ:ûj"þõx ýøõŽ"ýØõÄy"ý¶õ¢Yte — ò09learn.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; Package for the emacs tutorial (defun (learn (save-window-excursion (delete-other-windows) (switch-to-buffer "emacs-tutorial") (erase-buffer) (insert-file "/emacs/databases/tutorial.txt") (setq needs-checkpointing 0) (recursive-edit) ) )) l-regionšÿ’L|><=  &MaxKillSizeZÿÆþ ÿÐè=Àsubstr–get-tty-stringtconcat.� – žò0:learn.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãœdefun„learnlsave-window-excursion(delete-other-windowsFswitch-to-buffer"emacs-tutorial  erase-bufferN insert-file0/emacs/databases/tutorial.txtFsetq&needs-checkpointingZ"recursive-editÀsubstr–get-tty-stringtconcat.ì • íò0:lines.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl" (defun (display-line-number orig page line pagetop (save-excursion (setq orig (dot)) (beginning-of-file) (setq page 1) (setq pagetop (dot)) (while (& (! (error-occurred (search-forward " "))) ;^L (<= (dot) orig)) (setq page (+ page 1)) (setq pagetop (dot)) ) (goto-character pagetop) (setq line 1) (while (& (! (error-occurred (search-forward "\n"))) (<= (dot) orig)) (setq line (+ line 1)) ) ) (message "Line " line (if (> page 1) (concat " in page " page) "" ) ", " (- (dot) 1) " of " (buffer-size) " characters" ) ) (beginning-of-next-line (if (error-occurred (prefix-argument-loop (search-forward "\n"))) (end-of-file))) )  erase-regionpÿl"next-killbufferHdelete-region-to-buffer killbuffer.üØ  this-commandZÿÿÿõüªÿÖþæŒ copy-regionZüÚý°þ¶ZÿÿÿõþÚ:þ~¯ ” °ò0:lines.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã®defundisplay-line-numberorigpagelinepagetop:save-excursion4setqÿhdot$beginning-of-fileÿ¬ÿ:Zÿ˜ÿVÿªúwhile¢&l!Xerror-occurred6search-forward "<=þöþN.þÌþZ"+þ@Zþžþ\þ°(goto-characterþ.þdþ ZdþÎ>þà&þî þüÿ ÿ4þ6ýŽ þ ý²ÿDý¦ZLmessageLine ýfˆif">ýZ<concat in page üÚ, "-ý Z of  buffer-size charactersˆbeginning-of-next-line^þÆ:ý.4prefix-argument-loop ý"þ end-of-fileange-dot-and-mark$ yank-bufferþ€ ÿ"þt8append-next-killû<þhZÿÿÿõVunkillset-mark ÿfýúúæþZÿÿÿçv unkill-popRûûêüðZÿÿÿç8ü¾ ýxýœ&previous-killbufferÿ>f¸ “ ¹ò0;lisp.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl" (defun (paren-pause dot instabs temp (if (eolp) (delete-white-space)) (setq instabs (bolp)) (setq dot (dot)) (insert-character ')') (save-excursion (if (| (error-occurred (setq temp (ucb-backward-paren))) (! temp)) (message "Can't find balancing paren") (progn (if instabs (save-excursion descol (setq descol (current-column)) (goto-character dot) (to-col descol))) (if (dot-is-visible) (sit-for 5) (progn (beginning-of-line) (set-mark) (end-of-line) (message (region-to-string)) ) ) ) ) ) ) (nl-indent col dot bal (delete-white-space) (setq dot (dot)) (setq col (current-indent)) (save-excursion (beginning-of-line) (while (< (current-column) col) (forward-character)) (if (looking-at "elseif") (re-indent-thenelse 1) (| (looking-at "then") (looking-at "else")) (re-indent-thenelse 3))) (save-excursion (if (setq bal (ucb-backward-balanced-paren-line)) ; bal = 1 means hit beginning of line with ; paren count = 0; ; bal = -1 means hit too many left parens (progn (if (= bal -1) (if (bolp) (setq col 4) (progn (setq col (current-column)) (forward-character) (if (= (following-char) '(') (setq col (+ col 1)) (| (looking-at "prog ") (looking-at "let") (looking-at "bind") (looking-at "lambda") (looking-at "caseq")) (setq col (+ col 3)) (progn (use-syntax-table "wordall") (forward-skip-word) (forward-skip-non-word) (use-syntax-table Current-syntax-table) (if (| (> (dot) dot) (= (following-char) ';')) (setq col (+ col 3)) (setq col (current-column))))))) ; bal = 0 so we are at line with matching ; paren or on same line if no parens (progn (setq col (current-indent)) (while (< (current-column) col) (forward-character))  (if (| (looking-at "then") (looking-at "else")) (setq col (+ col 5)))))))) (newline) (to-col col)) ; arg 1 is amount past "(If" to skip (re-indent-thenelse col (set-mark) (setq col (current-indent)) (insert-character ')') (if (ucb-backward-paren) (progn (if (| (looking-at "(If") (looking-at "(if")) (setq col (+ (current-column) (arg 1)))))) (goto-character (mark)) (delete-next-character) (delete-white-space) (to-col col)) (re-indent-line (beginning-of-line) (delete-white-space) (if (looking-at "elseif") (re-indent-thenelse 1) (| (looking-at "then")(looking-at "else")) (re-indent-thenelse 3) (! (bobp)) (progn (backward-character) (nl-indent) (delete-next-character)))) (indent-sexpr start end (save-excursion (if (! (= (following-char) '(')) (error-message "Not sitting on left parenthesis") (progn (setq start (dot)) (ucb-forward-paren) (end-of-line) (setq end (dot)) (goto-character start) (next-line) (while (& (! (eobp)) (<= (dot) end)) (re-indent-line) (next-line) (if (! (eobp)) (beginning-of-line))))))) (indent-lisp-function (save-excursion (if (error-occurred (re-search-reverse "^(def")) (error-message "Can't find function")) (indent-sexpr) (message "Done!"))) (re-indent-funcs arg (progn (setq arg (get-tty-character)) (if (= arg '=') (re-indent-line) (= arg '%') (indent-sexpr) (= arg 'f') (indent-lisp-function) (error-message "Bad = option")))) (back-function (re-search-reverse "^(de")) (forw-function (re-search-forward "^(de")) (forward-sexpr (search-forward "(") (ucb-forward-paren)) (backward-sexpr (search-reverse ")") (ucb-backward-paren)) (semi-colon-comment (if (eolp) (progn (if (! (bolp)) (to-col comment-column)) (setq left-margin comment-column) (setq right-margin 77) (setq prefix-string "; ") (insert-string "; ")) (insert-character ';')) ) (ml-paren ; may be bound to the left paren "(" ; for mlisp command expansion (insert-character '(') (insert-string (get-tty-command " (")) (insert-character ' ') (novalue)) (lisp-mode (local-bind-to-key "paren-pause" ')') (local-bind-to-key "forward-paren" "\e)") (local-bind-to-key "backward-paren" "\e(") (local-bind-to-key "nl-indent" "\n") (local-bind-to-key "forward-sexpr" "\^x)") (local-bind-to-key "backward-sexpr" "\^x(") (local-bind-to-key "re-indent-funcs" "\^x=") (local-bind-to-key "indent-lisp-function" "\ej") (local-bind-to-key "re-indent-line" "\ei") (local-bind-to-key "back-function" "\^x[") (local-bind-to-key "forw-function" "^x]") (local-bind-to-key "semi-colon-comment" ";") (setq mode-string "lisp") (use-syntax-table "lisp") (setq Current-syntax-table "lisp") (novalue)) (mlisp-mode (lisp-mode) ; set up local keys (use-syntax-table "mlisp") (setq Current-syntax-table "mlisp") (local-bind-to-key "expand-mlisp-word" "\^x~") (local-bind-to-key "execute-mlisp-buffer" "\^x`") (setq mode-string "mlisp") (novalue)) ) ; the mlisp syntax table is like lisp except vertical bar is not quoting (use-syntax-table "mlisp") (modify-syntax-entry "() (") (modify-syntax-entry ")( )") (modify-syntax-entry """ '") (modify-syntax-entry """ """) (modify-syntax-entry "\\ \\") (modify-syntax-entry "w -+!$%^&=_~:/?|*<>") ; lisp syntax table (use-syntax-table "lisp") (modify-syntax-entry "() (") (modify-syntax-entry ")( )") (modify-syntax-entry """ |") (modify-syntax-entry """ """) (modify-syntax-entry "\\ \\") (modify-syntax-entry "w -+!$%^&=_~:/?*<>") ; this syntax table makes almost everything a word, making it easy ; to skip white space (use-syntax-table "wordall") (modify-syntax-entry "w -+!$%^&=_~:/?*<>|()""';") (declare-global Current-syntax-table) ) (while (< (current-column) col) (forward-character)) ¯ ’ °ò0;lisp.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãÀdefun² paren-pausedotinstabstempTifeolp&delete-white-space6setqÿfbolpÿÎÿ,ÿ&,insert-characterZ)„save-excursionbÿ‚|Terror-occurred2ÿ2þÀ&ucb-backward-paren!þ€Hmessage.Can't find balancing paren’progn¢þ2ýú–þîdescol.þZÿä"current-column(goto-characterýn to-colÿzØý�"dot-is-visible"sit-forZŽÿ$beginning-of-lineset-mark end-of-line*þT$region-to-string` nl-indentcolü>balü˜ü¸üü.ü¦ÿ´"current-indent$üìþâ\while <ýöÿN$forward-character¼û¼8 looking-atelseif.re-indent-thenelseZBü@ÿ˜thenÿzelseÿ”Z‚ûÈ|úú@ûHþr4 ucb-backward-balanced-paren-line6ün0ú®"=þZÿÿÿÿŽú†úòúÎýÜZnü ú´ýÂü^þrPúH0ÿž"following-charZ(.úfýt"+ýZZœúÔþ,prog þletýòbind ýÔlambdaý´caseq ùœüªÿ:üžZ0úâ>use-syntax-tablewordall$forward-skip-word(forward-skip-non-word.ÿz(Current-syntax-tablerøj:ùT >ø÷üýšþZ; ø~ûŒþû€Zø^ûlúzù²øFûTû¤ûÌûÞùÞû6ûìD÷Âø¬ üüp ûøü‚ ÷òûý�úôZnewline ù¸úÆûÞúºú4÷šú¨úø÷ÐZ)Œ÷&øR€øÔz÷>÷þûV(Ifû:(if6÷$ú2*üÂøÈargZøÆmark(delete-next-characterö‚ ø¢ù°Ðre-indent-lineøäöH¢ö ú\útúˆZöä ú<ú¨ ú0úºú\Z÷ bobp8÷d&backward-characterøÊÿÀ indent-sexprstartendrõìlõöpúnúÔZ(R error-message2Not sitting on left parenthesisúöfôúÿRôR$ucb-forward-paren÷tô¾ÿ.ô ö„ÿ next-line~øT&õneobp"<=óšþ¦ý˜ÿˆóÊ õÿ²ö|Æindent-lisp-functionžôRtó„Bô‚<re-search-reverse^(def,þB&Can't find functioný¢ô|Done!Øre-indent-funcsü°ô~0óü$get-tty-characterzòŽ÷äûÎZ=ü6÷Êû´Z%üì÷°ûšZfþ’&ý@  Bad = option> back-functionþ€^(deJ forw-function*re-search-forwardÿ¨\ forward-sexpr6search-forward(ü¦^backward-sexpr6search-reverse)ò :semi-colon-commentð¬ð¼úòZ:ðš ñìñ(òÜ"comment-column*ð´ left-marginÿ¾.ðŠ  right-marginZM<ð\  prefix-string; & insert-stringÿÎðBZ;�ml-parenðZ(>ÿ¦8get-tty-command (ïÌZ novalueV lisp-mode2local-bind-to-keyîbZ)<ÿÒ  forward-paren)>ÿ–"backward-paren( ÿXñ† "ÿ8ü’)"ÿüÌ("þôúî="þÒúj"þ°÷Ti"þŽû`["þlû|^x] þJü^;<íf mode-stringlisp ó¸ÿæíô6ÿÔýšð mlisp-modeý�ópmlispìÄóÜÿà@ýv$expand-mlisp-word~Dý6(execute-mlisp-buffer`ì.þÌÿJüª ò¤ÿ8@modify-syntax-entry() ( ÿÄ)( ) ÿ¤" ' ÿ„" " ÿd\ \0ÿD*w -+!$%^&=_~:/?|*<> ñ¨ýÖ ÿÿ( þüÿ< þð" | þÐÿP þÄÿd.þ¸(w -+!$%^&=_~:/?*<> ññ<4þ~.w -+!$%^&=_~:/?*<>|()"';(declare-globalñLprog þletýòbind ýÔlambdaý´caseq ùœüªÿ:üžZ0úâ>use-syntax-tablewordall$forward-skip-word(forward-skip-non-word.ÿz(ô ‘ õò1mark-ring.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(declare-global mark-number top-mark mark-ring-size Mark-0 Mark-1 Mark-2 Mark-3 Mark-4 Mark-5 Mark-6 Mark-7 Mark-8 Mark-9) (setq mark-number 0) (setq top-mark "Mark-0") (setq mark-ring-size 10) (defun (mark-cycle-ring (setq top-mark (concat "Mark-" (setq mark-number (% (+ mark-number (arg 1)) mark-ring-size))))) (mark-push (error-occurred (execute-mlisp-line (concat "(setq " (mark-cycle-ring 1) " (mark))"))) (set-mark)) (mark-pop n (setq n (execute-mlisp-line top-mark)) (if n (progn (pop-to-buffer n) (goto-character n) (exchange-dot-and-mark) (mark-cycle-ring -1)) (goto-character (mark)))) (mark-set/pop (if prefix-argument-provided (mark-pop) (mark-push))) ) ÷Ti"þŽû`["þlû|^x] þJü^;<íf mode-stringlisp ó¸ÿæíô6ÿÔýšð mlisp-modeý�óp � ò1mark-ring.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã‚declare-global mark-numbertop-mark"mark-ring-sizeMark-0Mark-1Mark-2Mark-3Mark-4Mark-5Mark-6Mark-7Mark-8Mark-9&setqþŒZÿÞþ–þÎÿÌþ Z Hdefun¾mark-cycle-ringœÿ~þ6�concatMark-^ÿ@ýÚR%8+ý¬argZýÂÊ mark-push’error-occurredpexecute-mlisp-lineJÿ(setq þÂZ (mark))set-mark4mark-popn.ýèÿê"ÿ<top-markÖifÿ¬œprogn& pop-to-bufferÿn(goto-characterÿF(exchange-dot-and-markýtZÿÿÿÿÿ¦markt mark-set/popTÿ,prefix-argument-providedþ~ mark-push)( ) ÿ¤" ' ÿ„" " ÿd\ \0ÿD*w -+!$%^&=_~:/?|*<> ñ¨ýÖ ÿÿ( þüÿ< þð" |¡ � ¢ò1newtime.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; This package simply adds a time-of-day clock to the status line ; of every window. Uses a separate process /emacs/lib/emacstime to ; actually get the time, so therefore needs the process control facilities. ; Simply load this file and execute "time". The corresponding procedure ; "notime" will turn it back off and kill the emacstime process. (declare-global time-running) (setq time-running 0) (defun (time dead (if (| (setq dead (< (process-status "newtime") 0)) (! time-running)) (save-excursion (if (! dead) (kill-process "newtime")) (setq global-mode-string "time") (setq time-running 0) (save-excursion (temp-use-buffer "newtime") (erase-buffer) (setq needs-checkpointing 0)) (start-filtered-process "/emacs/lib/emacstime +n 60" "newtime" "newtime-filter"))) (novalue) ) ) (defun (notime (if (= (process-status "newtime") 1) (progn (kill-process "newtime") (setq global-mode-string "") (message """time"" killed"))  (error-message """time"" already dead")))) (defun (newtime-filter (setq global-mode-string (process-output)) (setq time-running 1) (sit-for 0) ) ) t mark-set/popTÿ,prefix-argument-providedþ~ mark-push)( ) ÿ¤" ' ÿ„" " ÿd\ \0ÿD*w -+!$%^&=_~:/?|*<> ñ¨ýÖ ÿÿ( þüÿ< þð" |— Ž ˜ò1newtime.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãBdeclare-global  time-running&setqÿÌZ¬defun”timedeadJif’|dÿlÿ¼X<<process-statusnewtimeZ!þÔ¢save-excursion8ÿ: ÿÂÿ& kill-processÿt2þ”&global-mode-stringþ¦þbþ<Z‚ÿd(temp-use-bufferÿ  erase-buffer4þ&needs-checkpointingZ€start-filtered-process./emacs/lib/emacstime +n 60þN"newtime-filternovalueýX notimeòý€(= ý°ýÌZ~progn þý  üÀþ0:message  "time" killedF error-message&"time" already deadpüFjþ°.üý„"process-outputûæûÀZ"sit-forZ) ) ) t mark-set/popTÿ,prefix-argument-providedþ~ mark-push)( ) ÿ¤" ' ÿ„" " ÿd\ \0ÿD*w -+!$%^&=_~:/?|*<> ñ¨ýÖ ÿÿ( þüÿ< þð" |µ � ¶ò1normal-mode.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(defun (normal-mode (setq right-margin 1000) (setq left-margin 1) (use-abbrev-table "normal-mode") (remove-all-local-bindings) (setq mode-string "Normal") (novalue) )) if’|dÿlÿ¼X<<process-statusnewtimeZ!þÔ¢save-excursion8ÿ: ÿÂÿ& kill-processÿt2þ”&global-mode-stringþ¦þbþ<Z‚ÿdQ Œ Rò1normal-mode.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãPdefun8 normal-mode@setq  right-marginZè,ÿÄ left-marginZ*use-abbrev-tableÿV,remove-all-local-bindings>ÿB mode-stringNormalnovalue!þÔ¢save-excursion8ÿ: ÿÂÿ& kill-processÿt2þ”&global-mode-stringþ¦þbþ<Z‚ÿd — ‹  ˜ò1occur.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(progn ; this code was modified on or about Thu Apr 9 06:36:37 1981 ; by Doug Philips to add the &occurrences-extra-lines variable. ; ; this code was written on or about Mon Feb 2 06:11:03 1981 ; by Doug Philips to imitate the $Xoccurrences command in Twenex Emacs ; Unfortunately, this emacs doesn't allow one to scribble on the screen, and ; then have emacs restore the screen, which would be the way to go with ; this command. ; ; What the global variable is used for: ; ; &occurrences-extra-lines is a global variable that controls how many extra ; surrounding lines are printed in addition to the line containing the ; string found. If this variable is 0 then NO additional lines are printed. ; If this variable is greater than 0 then it will print that many lines ; above and below the line on which the string was found. When printing ; more than one line per match in this fashion, it will also print a ; separator of '----------------' so you can tell where the different ; matches begin and end. At the end of the buffer it prints ; '<<>>'. ; (declare-global &occurrences-extra-lines) (if (= "" &occurrences-extra-lines)(setq &occurrences-extra-lines 0)) (defun (occurrences occ-string c buf-name bpp o-count l-count temp-pos Occur-String (setq o-count (setq l-count 0))(setq buf-name (current-buffer-name)) (setq bpp (dot)) (setq occ-string (get-tty-string "Search for all occurrences of: ")) (switch-to-buffer "excursions")(erase-buffer) (switch-to-buffer buf-name)(goto-character bpp) (while (! (error-occurred (search-forward occ-string))) (setq o-count (+ 1 o-count))(setq l-count &occurrences-extra-lines) (beginning-of-line)(setq temp-pos (dot)) (while (> l-count 0) (&PL-Begin) (setq l-count (- l-count 1))) (set-mark) (goto-character temp-pos) (&NL-Begin) (setq temp-pos (dot)) (setq l-count &occurrences-extra-lines) (while (> l-count 0) (&NL-Begin) (setq l-count (- l-count 1))) (setq Occur-String (region-to-string)) (switch-to-buffer "excursions") (end-of-file) (if (< 0 &occurrences-extra-lines) (progn (insert-string "----------------") (newline))) (insert-string Occur-String) (switch-to-buffer buf-name)(goto-character temp-pos) ) ;;; End of while loop searching (switch-to-buffer "excursions") (save-excursion (end-of-file)(insert-string "<<>>") (newline)) ; (setq user-mode-line 1) (setq mode-line-format (concat "Found " o-count " occurrences of '" occ-string "' after position: " bpp " in: " buf-name)) (beginning-of-file) (while (! (eobp)) (message "--More?--(space=next page, ^G=abort, anything else is executed)") (setq c (get-tty-character)) ; grab a character (if (= c ' ') (progn (end-of-window) ; keep going (if (! (eobp)) ; but not if on last page! (next-page) ) ) (= c 7) (end-of-file) ; quit (progn (push-back-character c); execute-it (end-of-file) ) ) ) (switch-to-buffer buf-name) (goto-character bpp) o-count ) ;;; End of occurrences (&NL-Begin (next-line) (beginning-of-line)) (&PL-Begin (previous-line) (beginning-of-line)) ) ) <=óšþ¦ý˜ÿˆóÊ õÿ²ö|Æindent-lisp-functionžôRtó„Bô‚<re-search-reverse^(def,þB&Can't find functioný¢ô|Done!Øre-indent-funcsü°ô~0óü$get-tty-characterzòŽ © l  ªò1occur.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã ¨prognNdeclare-global,&occurrences-extra-linesjif.=ÿš&setqÿ|ZØdefunl occurrences occ-stringcbuf-namebppo-countl-counttemp-pos  Occur-String þÔÿŽþÈÿœZ2þ´ÿ<&current-buffer-name"þ‚ÿ&dot`þ`þ¶Tget-tty-string2Search for all occurrences of: Bswitch-to-buffer excursions  erase-buffer ÿ¢þ&(goto-characterþwhile^!Jerror-occurred(search-forwardýV.üôý®"+ZýŒüÆýšüJ$beginning-of-lineü�ý~þrÿ">ý>Z &PL-Begin.ü:ý"-üôZset-mark þbüÞ &NL-BeginûÈü¶ýJû¶üŠû:@þ>ÿ*ürZÿª û„üXÿNüLZ0ûdün$region-to-string ý8ýV end-of-fileŒúÆ"<Zúxdú8D insert-string$----------------newline ÿ¦ûˆ üvúú üØûT ü^ü|Zsave-excursionÿ,ÿN&<<>>ÿfØùô$mode-line-format®concatFound úV$ occurrences of 'ùÈ&' after position: ùê in: ù°$beginning-of-file€û’û¤eobplmessageR?--More?--(space=next page, ^G=abort, anything else is executed)0øhøÜ$get-tty-characterÀ÷ôøø¦Z T÷t  end-of-window.÷´ ú¤ÿ next-page÷œø>Zü’8÷,push-back-character÷þüZ ù|ø ùÞøø (ûz next-lineúˆ,úà  previous-lineú\mat (concat "Found " o-count " occurrences of '" occ-string "' after position: o k pò1paragraphs.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(if (! (is-bound paragraph-delimiters)) (progn (declare-global paragraph-delimiters) (setq paragraph-delimiters "^\n\\|^[@.' \t].*\n") )) (defun (forward-paragraph (beginning-of-line) (re-search-forward paragraph-delimiters) (while (looking-at "") (search-forward ""))) ) (defun (backward-paragraph (beginning-of-line) (previous-line) (while (& (looking-at paragraph-delimiters) (! (bobp))) (progn (previous-line) (beginning-of-line))) (if (error-occurred (re-search-reverse "")) (beginning-of-file)) (while (looking-at "") (search-forward ""))) ) t-tty-string2Search for all occurrences of: Bswitch-to-buffer excursions  erase-buffer ÿ¢þ&(goto-characterþwhile^!Jerror-occurred(search-forwardýV.üôý®"+ZýŒüÆýšüJ$' j (ò1paragraphs.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãîifX!Dis-bound(paragraph-delimiters€progn(declare-globalÿ¢@setqÿ„"^ \|^[@.' ].* üdefunäforward-paragraph$beginning-of-line*re-search-forwardþØrwhile2 looking-at(search-forwardÿÎ<ÿ6backward-paragraphÿ  previous-lineVÿ@>& ÿ>ýîý¸bobpýòÿšþ¢výrLerror-occurred*re-search-reverseþÔ$beginning-of-fileþt þ†þž þ¬þ’goto-characterþwhile^!Jerror-occurred(search-forwardýV.üôý®"+ZýŒüÆýšüJ$)À i )Áø +process.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; This package provides assistance for using the process control facilities ; of emacs to run interactive programs in windows. ; marker for typeahead (declare-buffer-specific process-output-marker) ; for grab-last-line function (declare-buffer-specific last-line) (setq-default &shell-command "/bin/shell +e") (if (| (! (is-bound shell-prompt-template)) (= shell-prompt-template "")) (setq-default shell-prompt-template "^++ ")) ; Bound to carriage return. This function sends the last line of input to ; the current process. If we are in the middle of the buffer, we guess ; about how much to send to the process, then we copy it to the end and send ; it. If we're at the end of the buffer, we send the current region. (defun (pr-newline (pr-do-newline 0) ) ) ; Similar to pr-newline except that if it is invoked on a line in the middle ; of the buffer, that line is set to the subprocess and the rest of the ; buffer is erased. (defun (pr-newline-kill (pr-do-newline 1) ) ) ; Shared code for pr-newline and pr-newline-kill (defun (pr-do-newline (end-of-line) (if (eobp) (progn (newline) (if (= (dot) process-output-marker) (progn ; hack for special case (backward-character) (beginning-of-line) (if (looking-at shell-prompt-template) (region-around-match 0)) ) (goto-character process-output-marker)) (set-mark) (end-of-file) (setq last-line (region-to-string)) ) (progn (beginning-of-line) (if (look ing-at shell-prompt-template) (region-around-match 0)) (set-mark) (end-of-line) (forward-character) (setq last-line (region-to-string)) (if (= (arg 1) 0) (progn (end-of-file) (set-mark) (insert-string last-line) ) (progn (set-mark) (end-of-file) (erase-region) ) ) ) ) (string-to-process (active-process) last-line) (setq process-output-marker (dot)) (set-mark) ) ) ; Expand a file name inline (defun (expand-inline-filename (save-excursion (set-mark) (push-back-character ' ') (while (& (! (bolp)) (| (>= (preceding-char) 'A') (= (preceding-char) '$') (& (>= (preceding-char) '.') (<= (preceding-char) '9')))) (backward-character)) (push-back-string (region-to-string)) (erase-region)) (insert-string (get-tty-file ": file ") " "))) ; Send an end-of-file signal to the process if we're at the end of the ; buffer, else just do what this key normally does. (defun (send-eot (if (eobp) (progn (setq process-output-marker (dot)) (string-to-process (current-buffer-name) "\^d") ) (prefix-argument-loop (execute-mlisp-line (concat "(" (global-binding-of (last-key-struck)) ")")) ) ) ) ) ; Simulate keyboard interrupts. (defun (send-int-signal (end-of-file) (setq process-output-marker (dot)) (int-process (active-process)))) (defun (send-quit-signal (end-of-file) (setq process-output-marker (dot)) (quit-process (active-process)))) ; Insert the last line the user sent to the process in this buffer. (defun (grab-last-line (end-of-file) (insert-string last-line) (delete-previous-character) ) ) ; Insert this line at end of buffer for user. (defun (grab-current-line prompt line ; Find current prompt. (save-excursion (end-of-file) (set-mark) (beginning-of-line) (setq prompt (region-to-string))) ; If this line has same prompt, skip it. (beginning-of-line) (if (looking-at (quote prompt)) (provide-prefix-argument (length prompt) (forward-character))) ; Now grab text and insert it at end. (set-mark) (end-of-line) (setq line (region-to-string)) (end-of-file) (set-mark) (insert-string line) (novalue) ) ) ; Clever hook to cd emacs with shell cds. (defun (shell-cd (if (= (- (dot) (mark)) 2) (progn (if (error-occurred (cd (get-tty-file ": cd "))) (progn (delete-previous-word) (message "There is no such directory")) (progn (insert-string " " (working-directory)) (pr-newline))) 0) 1))) (defun (shell-chd (if (= (- (dot) (mark)) 3) (progn (if (error-occurred (cd (get-tty-file ": chd "))) (progn (delete-previous-word) (message "There is no such directory")) (progn (insert-string " " (working-directory)) (pr-newline))) 0) 1))) (defun (lisp-kill-output (end-of-file) (beginning-of-line) (set-mark) (previous-line) (re-search-reverse "^[0-9][0-9]*\.") (next-line) (erase-region) (backward-character) (insert-string " [output flushed]") (end-of-file) (setq process-output-marker (dot)) ) ) (defun (generic-kill-output prompt (end-of-file) (save-excursion (set-mark) (beginning-of-line) (setq prompt (region-to-string))) (beginning-of-line) (set-mark) (re-search-reverse (concat "^" (quote prompt))) (if (! (dot-is-visible)) (line-to-top-of-window)) (next-line) (erase-region) (insert-string "[output flushed]\n") (end-of-file) (setq process-output-marker (dot)) ) ) ; Go to a shell buffer and run a shell there. (defun (new-shell name (setq name (arg 1 ": new-shell (buffer name) ")) (pop-to-buffer name) (if (< (process-status name) 0) (progn (use-abbrev-table "shell") (use-syntax-table "shell") (setq abbrev-mode 1) (setq needs-checkpointing 0) (setq wrap-long-lines 0) (local-bind-to-key "generic-kill-output" "\^X\^K") (local-bind-to-key " expand-inline-filename" "\^J") (local-bind-to-key "pr-newline" "\^M") (local-bind-to-key "pr-newline-kill" "\e\^M") (local-bind-to-key "send-eot" "\^d") (local-bind-to-key "send-int-signal" "\^c") (local-bind-to-key "send-quit-signal" "\^\") (local-bind-to-key "grab-last-line" "\e=") (local-bind-to-key "grab-current-line" "\e+") (if (= shell-prompt-template "") ; hack for setq-default (setq shell-prompt-template "^++")) (error-occurred (shell-hook)) (end-of-file) (setq process-output-marker (dot)) (set-mark) (start-filtered-process &shell-command name "process-filter" "nothing") )) (end-of-file) (novalue) ) ) (defun (shell (new-shell "shell") ) ) ; Like the shell command for lisp (franz lisp) (defun (lisp (pop-to-buffer "lisp") (setq &lisp-process 1) (message "Starting up a franz-lisp process") (sit-for 10) (setq needs-checkpointing 0) (if (bobp)  (progn (lisp-mode) (local-bind-to-key "lisp-kill-output" "\^X\^K"))) (if (< (process-status "lisp") 0) (progn (local-bind-to-key "pr-newline" "\^M") (local-bind-to-key "pr-newline-kill" "\e\^M") (local-bind-to-key "send-eot" "\^d") (local-bind-to-key "send-int-signal" "\^c") (local-bind-to-key "send-quit-signal" "\^\") (local-bind-to-key "grab-last-line" "\e=") (local-bind-to-key "grab-current-line" "\e+") (error-occurred (shell-hook)) (end-of-file) (setq process-output-marker (dot)) (set-mark) (start-filtered-process "lisp" "lisp" "process-filter" "nothing") ) ) (end-of-file) (novalue) ) ) ; Like the shell command for common-lisp (defun (cl (pop-to-buffer "cl") (setq &cl-process 1) (message "Starting up a common-lisp process") (sit-for 10) (setq needs-checkpointing 0) (if (bobp) (progn (lisp-mode) (local-bind-to-key "lisp-kill-output" "\^X\^K"))) (if (< (process-status "cl") 0) (progn (local-bind-to-key "pr-newline" "\^M") (local-bind-to-key "pr-newline-kill" "\e\^M") (local-bind-to-key "send-eot" "\^d") (local-bind-to-key "send-int-signal" "\^c") (local-bind-to-key "send-quit-signal" "\^\") (local-bind-to-key "grab-last-line" "\e=") (local-bind-to-key "grab-current-line" "\e+") (error-occurred (shell-hook)) (end-of-file) (setq process-output-marker (dot))  (set-mark) (start-filtered-process "cl" "cl" "process-filter" "nothing") ) ) (end-of-file) (novalue) ) ) (defun (update-processes n1 n2 (setq n1 (current-file-name)) (if (string-suffix-equal n1 ".cl") (progn (if buffer-is-modified (write-current-file) ) (if (= &cl-process 0) (progn (cl) ) ) (pop-to-buffer "cl") (setq n1 (substr n1 1 (- (length n1) 3))) (insert-string (concat ":ld " n1)) (pr-newline) ) ; else not ".cl" (if (string-suffix-equal n1 ".l") (progn (if buffer-is-modified (write-current-file) ) (if (= &lisp-process 0) (progn (lisp) ) ) (pop-to-buffer "lisp") (insert-string (concat "(load \"" n1 "\")")) (pr-newline) ) ; else not ".cl" and not ".l" (message "This is not a \".cl\" nor a \".l\" buffer") ) ) ) ) (defun (string-suffix-equal s1 s2 n match (setq s1 (arg 1)) (setq s2 (arg 2)) (setq n (length s2)) (setq s1 (substr s1 (- 0 n) n)) (setq match 1) (while (> n 0) (setq match (& match (= (string-to-char s1) (string-to-char s2)))) (setq n (- n 1)) (setq s1 (substr s1 2 n)) (setq s2 (substr s2 2 n)) ) (+ match 0) ) ) ; insert output at process-output-marker (defun (process-filter pr-dot pr-buff (setq pr-buff (dot)) (temp-use-buffer MPX-process) (setq pr-dot (dot)) (goto!-character process-output-marker) (insert-string (process-output)) (if (= pr-dot process-output-marker) (setq pr-dot (dot)) ; move dot after new text ) ; if was at output-marker (if (= (mark) process-output-marker) (set-mark) ; drag mark along too ) (setq process-output-marker (dot)) ; move our mark after new text (goto-character pr-dot) ; where users dot was (pop-to-buffer pr-buff) (sit-for 0) ) ) ; Set up global stuff. (save-excursion (temp-use-buffer "shell") (use-abbrev-table "shell") (setq abbrev-mode 1) (define-local-abbrev "~" (getenv "HOME")) (define-hooked-local-abbrev "cd" "cd" "shell-cd") (define-hooked-local-abbrev "chd" "chd" "shell-chd") (use-syntax-table "shell") (modify-syntax-entry "w ~") (setq right-margin 10000) (bind-to-key "update-processes" "\e\m") (declare-global &lisp-process) (declare-global &cl-process) (novalue)) or 10) (setq needs-checkpointing 0) (if (bobp) $ h $ø process.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãRdeclare-buffer-specific(process-output-marker"ÿ² last-lineb setq-default"&shell-command  /bin/shell +eÔifš|X!Dis-bound(shell-prompt-template.=ÿÈ$þòÿ¨^++ ^defunF pr-newline( pr-do-newline:6ÿ¦0pr-newline-killÿ´:\ÿpVÿ  end-of-lineÎþreobp¦prognnewlineøþ""þždotýT¨ÿª&backward-character$beginning-of-lineXýª$ looking-atýà.region-around-match:(goto-characterü„set-mark end-of-fileBsetqüZ$region-to-string þ^þÞ ü¢ þüüðÿ:ÿ\ýð$forward-characterÿfûÎÿxœü@,ü¼arg::8ý¾þþþÜ& insert-stringû^2ý†þªþÀ  erase-regionLstring-to-process"active-processúàþlú¦ý:þ òüìexpand-inline-filenamensave-excursionýÈ.push-back-character: èwhileÊ&ú¸bolp˜ú†@>="preceding-char:Aú¬ÿÔ:$>ÿxÿªÿº:.$<=ÿ–:9ûè*push-back-stringüàýèTýª: get-tty-file: file  \ú"Vsend-eot:ù,ú¾XúÐü.øhúü@ýh&current-buffer-nameÖprefix-argument-loop®execute-mlisp-lineˆconcat(Fglobal-binding-of"last-key-struck)døÆ^send-int-signalúÀúØ÷ù¦$ int-processühøbbsend-quit-signalúZúrö¬ù@& quit-processû°–÷ú�grab-last-lineùô< insert-str!ing last-line,delete-previous-characterúdefunâgrab-current-linepromptlinevsave-excursionøöøÔø*Bsetqÿ†$region-to-string÷âÀif< looking-atquoteÿ nprovide-prefix-argument lengthþÀ$forward-character÷ÀöTþðþžÿ÷¾÷œ ýÈþ€novalue¶þ °shell-cd”þÒ@ôð2-öBmark:Fprogn&þtVerror-occurred4cdú@: cd vÿ�(delete-previous-wordHmessage.There is no such directoryTÿ0üJùÚ$working-directory pr-newline::ÆüTÀ shell-chd¤ý ó:þNôšþ\:vþnhüð,þ€&þœ øè: chd þ6þª þÌþàþûNøÞÿÿ&::0ûŽ*lisp-kill-outputôæô ô¾  previous-lineDre-search-reverse  ^[0-9][0-9]*. next-lineõžóh.ú^( [output flushed]ô4û4(process-output-markeròÞ8ú^2generic-kill-outputúnó®$ú”ó†òÜú¶úJúÈòÄób,þÈ&ø^ úôú Vú´(ðz"dot-is-visible(line-to-top-of-windowþŠô:*ù$[output flushed] òÀùÚþªñ¦>ù&8 new-shellnameHùŽÿæ<ó<:.: new-shell (buffer name) & pop-to-bufferÿ„vùhD<(process-statusÿB:,ú–<use-abbrev-tableshell*use-syntax-tableÿÈ,øj abbrev-mode:4ø>&needs-checkpointing:0ø "wrap-long-lines:@local-bind-to-keyüÀ DÿÄ*expand-inline-filename ÿ€ú0 >ÿ`"pr-newline-kill (ÿ"send-eotóè<þú"send-int-signal þ¾ôô>þž"grab-last-line="þ`õ¦+~if4ìj(shell-prompt-templateìV4setqÿ¾^++$÷t shell-hookîR4ÿ¦(process-output-markeríset-markrstart-filtered-processêšûJ"process-filternothingíŠnovalue@defun(ûÊ" new-shellû¨¨ÿÄ¢lisp& pop-to-bufferÿÌ.þ@  &lisp-process:Nmessage4 Starting up a franz-lisp process"sit-for: 4ý¢&needs-checkpointing:bý$bobpDôÖ lisp-mode"ûöÈ $üÂù¶ ùÄþ€:ôrúÖõ†ûZ.úÄ"pr-newline-killûhú–ûxïr.ú„"send-int-signalûŽúVðŒûœúDûªûÆú2ñxûÖ óÔüdêÊüü|é°üžü´ý†ý€üØüôêŽýÒýÌcl ý^ÿè,û´ &cl-process::ýz4!Starting up a common-lisp processýŽ: û@ý¢:"*úâýÂò¦ýÔùô®ýêìú¸÷¬ ÷ºÿ:ÌòhøÌó|ùPøºýúùzø¨ùŠí„ø–þù¼ø„îºùÊørùØùôø`ï¦ú òú’èøúLúªçÞúÌúâþ\þVûû"è¼û6èûJâupdate-processesn1n20ù´ÿÒ$current-file-namebù:Bstring-suffix-equalÿ|.cl"ðÂRøì&buffer-is-modified&write-current-file&øšåý.: ðPüò ú\üæNø²þÐBsubstrþ°:ïÊ ïþ–:D insert-string$ë~:ld þJðÆø÷Ð"þšþ2.l’ïx÷¢þºþÚ&÷�äù˜: ïFù@ ùRù4BÿH<êÜ(load "ý¦")ð >ùR8%This is not a ".cl" nor a ".l" bufferþøbøý¢s1s2nmatchö¾ÿ¦æ2:ö¤ÿ¢æ:öŠÿž íÿ|2örÿZ&ýÄÿNí¦:ÿfÿ`ö@ÿh:æç&">ÿ,:Röÿ,Fç ÿ :â(string-to-charþ² ÿÜþ¼ õ²þÆìòþº:&õ’þzüäþn:þŒ&õlþjü¾þ^:þf"+þ`:tödnöpr-dotpr-buffôäÿäâv@temp-use-buffer MPX-processô’ÿxâ$(goto-characterôÂ(ûø"process-output*óæà\ÿô‚ôþþáªó¼à2ë`ôXô€óèôFáz ÿZþ¼ õhþÊõþ:ˆsave-excursion þÀð¦*use-abbrev-tableð|óXð¸:ldefine-local-abbrev~2getenvHOMEfdefine-hooked-local-abbrevcdÿîshell-cd>ÿžchdÿî shell-chd*use-syntax-tableï.@modify-syntax-entryw ~.ñÊ  right-margin:': bind-to-key÷~m(declare-globaló ÿÜõŠòTsend-eotóè<þú"send-int-signal þ¾ôô>þž"grab-last-line="þ`õ¦+~if4ìj(shell-prompt-templateìV4setqÿ¾^++$÷t shell-hookîR4ÿ¦(process-output-markeríset-markrstart-filtered-process g ø profile.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(defun (help (info))) (autoload "info" "info.ml") (autoload "dired" "dired.ml") (autoload "incremental-search" "incr-search.ml") (autoload "reverse-incremental-search" "incr-search.ml") (autoload "electric-c-mode" "electric-c.ml") (autoload "lisp-mode" "lisp.ml") (autoload "mlisp-mode" "lisp.ml") (autoload "lisp" "process.ml") (autoload "cl" "process.ml") (setq quick-redisplay 1) (setq default-mode-line-format " %[Buffer: %b%* File: %f %M (%m) %p%]") (setq backup-before-writing 1) (setq backup-by-copyi"ng-when-linked 1) (load "killring") (load "buffer-edit") (setq-default &kill-lines-magic 1) (auto-execute "electric-c-mode" "*.c") (auto-execute "electric-c-mode" "*.h") (auto-execute "mlisp-mode" "*.ml") (auto-execute "lisp-mode" "*.l") (auto-execute "mlisp-mode" "*.emacs_pro") leï.@modify-syntax-entryw ~.ñÊ  right-margin:': bind-to-key÷~m(declare-globaló ÿÜõŠé f êù (6profile.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãHdefun0helpinfo<autoloadÿÐinfo.ml:ÿÈdireddired.mlNÿŽ&incremental-search"incr-search.ml:ÿ@.reverse-incremental-searchÿ®Hÿ"electric-c-mode  electric-c.ml<þ¾ lisp-modelisp.ml*þ‚ mlisp-modeÿÆ<þXlisp process.ml"þclÿÊBsetq"quick-redisplay:nÿÂ,default-mode-line-format<( %[Buffer: %b%* File: %f %M (%m) %p%]6ÿT(backup-before-writing:>ÿ0backup-by-copying-when-linked:4loadkillring$ÿÐ buffer-editL setq-default$&kill-lines-magic:< auto-executeý*.c"ÿÈüô*.h$ÿ¦ýV*.ml"ÿ‚üö*.l*ÿ`ý *.emacs_proif4ìj(shell-prompt-templateìV4setqÿ¾^++$÷t shell-hookîR4ÿ¦(process-output-markeríset-markrstart-filtered-processŒ e �ò1pwd.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(if (! (is-bound cdpath)) (setq-default cdpath ".:~")) (defun (path (pwd)(novalue))) (defun (pwd cwd cue (if (interactive) (setq cue ": pwd => ") (setq cue ": path => ")) (setq cwd (working-directory)) (message cue (if (& (= (substr cwd -1 1) "/") (> (length cwd) 1)) (substr cwd 1 -1) cwd)) (novalue)) (chd dir (setq dir (if (interactive) (get-tty-file ": chd ") (arg 1))) (cd dir) (novalue)) (cd dir path still-looking (setq dir (if (interactive) (get-tty-file ": cd ") (arg 1))) (if (= dir "") (setq dir "~")) (if (| (= (substr dir 1 1) "/") (= (substr dir 1 1) "~")) (setq still-looking (error-occurred (change-directory dir))) (save-excursion (temp-use-buffer "Scratch Stuff") (setq needs-checkpointing 0) (erase-buffer) (insert-string cdpath) (beginning-of-file) (while (progn (re-search-forward "[^:]*") (region-around-match 0) (setq path (region-to-strin#g)) (erase-region) (delete-next-character) (setq still-looking (error-occurred (change-directory (if (= path "") dir (concat path "/" dir))))) (& still-looking (! (eolp)))) (novalue)))) (if still-looking (error-message "There is no such directory") (progn (quietly-read-abbrev-file ".abbrevs") )) (novalue)) ) (process-output-markeríset-markrstart-filtered-processs d tò1pwd.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãœifJ!6is-boundcdpath< setq-defaultÿÊ.:~`defunHpathpwdnovaluevÿ¤àÿÎcwdcueˆþÐ interactive:setqÿ² : pwd => *ÿÊÿŠ : path => 0ÿ ÿJ$working-directoryðmessageÿÐýø¨&X=0substrþ¸ZÿÿÿÿZ/<> lengthþ`Zÿ„þLZZÿÿÿÿþ6þ ¾chddirpþNÿèdüêþ: get-tty-file: chd argZcdÿhýLÒÿâÿVý  still-lookingDýŠÿ$8ü&ýZÿ@: cd ÿ\ZFûî þþÚ ý þº~hû¨d|(ý´ýÂþzZZýÖ(ýŒýšþRZZÿŒXü–þêLerror-occurred*change-directoryýä¦save-excursionBtemp-use-buffer  Scratch Stuff4ûÚ&needs-checkpointingZ  erase-buffer& insert-stringúT$beginning-of-file¤while†progn<re-search-forward[^:]*.region-around-matchZ0ú¢ùø$region-to-string  erase-region(delete-next-characterbú*ü~Vý˜Pý´JøºúÚùbüÐûš,concatù6úæûn*ú‚üøzeolpù(¨ø@ûìN error-message.There is no such directoryNþHquietly-read-abbrev-file.abbrevsøzewline-killûhú–ûxïr.ú„"send-int-signalûŽúVðŒûœúDûªûÆú2ñxûÖ óÔüdêÊüü|é°üžü´ý†ý€üØüôêŽýÒýÌcl ý^ÿè,û´ &cl-process::ýz4!Starting up a common-lisp processýŽ: û@ý¢:à c áò1readonly.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"#; Make the current buffer read only (defun (read-only (if read-only (progn (setq read-only 0) (if (= (substr mode-line-format -3 3) " RO") (setq mode-line-format (substr mode-line-format 1 -3))) (message "Buffer is now writable") ) (progn (setq read-only 1) (if (!= (substr mode-line-format -3 3) " RO") (setq mode-line-format (concat mode-line-format " RO"))) (message "Buffer is read-only") ) ) (novalue) ) ) ng-directoryðI b Jò1readonly.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãHdefun0 read-onlyúifÿÒ(progn&setqÿœZ¦ÿªx=Nsubstr$mode-line-formatZÿÿÿýZ RO(ÿ`ÿ´ÿ”ÿ¨ZZÿÿÿýDmessage*Buffer is now writable¶þÜþîþ˜Zpþ¦8!=þþÿZÿÿÿýZÿ02þœþð&concatþÐþþ,ÿ6&Buffer is read-onlynovaluesubstrþ¸ZÿÿÿÿZ/<> lengthþ`Zÿ„þLZZÿÿÿÿþ6þ ¾chddirpþNÿèdüêþ: get-tty-file: chd argZcdÿhýLÒÿâÿVý  still-lookingDýŠÿ$8ü&ýZÿ@O a Pò1sentences.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"(if (! (is-bound sentence-delimiters)) (progn (declare-global sentence-delimiters) (setq sentence-delimiters "[.!?][ \n\t][ \n\t]*") )) (defun (forward-sentence (prefix-argument-loop (re-search-forward sentence-delimiters) (while (looking-at "") (search-forward ""))) ) ) (defun (backward-sentence stpos searchp (prefix-argument-loop (setq stpos (dot)) (preceding-char) (if (error-occurred (re-search-reverse sentence-delimiters))  (beginning-of-file)) (setq searchp (dot)) (while (looking-at "") (search-forward "")) (if (>= (dot) stpos) (progn (goto-character searchp) (if (error-occurred (re-search-reverse "")) (beginning-of-file)) (while (looking-at "") (search-forward ""))) ) ) ) ) : chd argZcdÿhýLÒÿâÿVý  still-lookingDýŠÿ$8ü&ýZÿ@Í ` Îò1 sentences.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"$ãîifV!Bis-bound&sentence-delimiters‚progn(declare-globalÿ¤Bsetqÿ†$[.!?][ ][ ]*defunèforward-sentenceÄprefix-argument-loop*re-search-forwardþÔrwhile2 looking-at(search-forwardÿÎÞÿØbackward-sentencestpossearchp‚þä"þ`ÿÆdot"preceding-charvýpLerror-occurred*re-search-reverseýj$beginning-of-fileý¦ÿ$ÿJþd þvþŽ þœþ‚’üÊ">=ÿ þÀjý(goto-characterþªütÿ ÿ$þÿBýÒ ýäýü þ ýðokingDýŠÿ$8ü&ýZÿ@– _ —ò1 shift.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; shift the current window left or right (defun (dot-to-left-margin (setq left-offset (- (current-column) 1))) (dot-to-right-margin (setq left-offset (- (current-column) (window-width)))) (dot-to-centre (setq left-offset (- (current-column) (/ (window-width) 2)))) ) (bind-to-key "dot-to-left-margin" "\^x<") (bind-to-key "dot-to-right-margin" "\^x>") (bind-to-key "dot-to-centre" "\^x=") 2 looking-at(search-forwardÿÎÞÿØé ^ êò1 shift.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãjdefunšdot-to-left-margintsetq left-offset>-"current-columnZ^dot-to-right-margin8ÿjÿ|,ÿ”ÿ¢  window-widthZ dot-to-centre:ÿÿ$.ÿ<ÿJ"/ÿ˜Z: bind-to-keyþ”<"ÿÊÿ >"ÿ¨ÿH=ÿÎÞÿØ× ] Øò1 srccom.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; srccom: compare text in two windows ; To begin the comparison, place the dot at the beginning of one of the ; two pieces of text to be compared, switch to the other window, and place ; the dot at the beginning of the other piece of text. (If there are more ; than two windows, the two windows to be compared must be adjacent, and ; the dot must be left in the upper one.) When this function is invoked, ; it will search forward, stopping when either a difference is encountered ; or the end of the buffer is$ reached. ; HISTORY: ; Dec 14 1982 -- agin -- Completely rewritten for increased efficiency ; 1 June 1982 -- Jerry Agin at Carnegie-Mellon University -- created (defun (srccom m1 size (setq m1 (dot)) (setq size 1) (while (& (! (eobp)) (compare-strings size) ) (setq size (* size 2)) ) (if (! (eobp)) (while (> size 0) (compare-strings size) (setq size (/ size 2)) ) ) (if (= (dot) m1) (error-message "First characters are different!") ; ring the bell if dot didn't move ) ) (compare-strings csize s1 s2 cm1 cm2 (setq csize (arg 1)) (set-mark) (setq cm1 (dot)) (goto-character (+ cm1 csize)) (setq s1 (region-to-string)) (next-window) (set-mark) (setq cm2 (dot)) (goto-character (+ cm2 csize)) (setq s2 (region-to-string)) (if (= s1 s2) (progn (previous-window) 1 ) (progn (goto-character cm2) (previous-window) (goto-character cm1) 0 ) ) ) ) & insert-stringúT$y \ zò1 srccom.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãxdefun:srccomm1size4setqÿ¾dotÿÐÿ²Z®whileh&,!eobp(compare-stringsÿ*.ÿ<ÿ"*ÿZ„if ÿlÿzbÿ4">þºZ ÿdþ¦.þ¸þš"/þ€Zxÿ€ =þŽþ<R error-message2First characters are different!&þ²csizes1s2cm1cm2*ýœÿŽargZset-markýVÿŒýhBgoto-character +ÿJÿ0ýÿ $region-to-string next-windowÿFü®þúüÀÿ\ÿxþâþ‚ü„þ¤ÿ††ýhýìþvþ†Bprogn"previous-windowZ,ÿ þÒþ^ÿÈ þÀþ6Z)) (goto-character (+ cm1 csize)) (setq s1 (region-to-string)) (next-window) (set-mark) (setq cm2 (dot)) (goto-character (+ cm2 csize)) (setq s2 (region-to-string)) (if (= s1 s2) (progn (previous-window) 1 ) (progn (goto-character cm2) (previous-window) (goto-character cm1) 0 ) ) ) ) & insert-stringúT$ [ Ãò1 tags.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; Edit 7 ; Fri Jul 16 18:05:28 1982 ; twenex-like tags package J. Gosling, November 81 ; ; A tag file is a sequence of lines of the following forms: ; ^_filename ; ^Atagline^Bposition ; A tagline/position pair refers to the preceeding file (declare-global last-search-tag) (defun (to-tag-buffer (temp-use-buffer "*TAG*") (if (& (= (buffer-size) 0) (= (current-file-name) "")) (progn (if (error-occurred (read-file ".tags")) (progn (write-named-file ".tags") (messa%ge "New tag file"))) (beginning-of-file))) )) (defun (visit-tag-table tagfn (setq tagfn (arg 1 ": visit-tag-table ")) (save-excursion (temp-use-buffer "*TAG*") (read-file tagfn)) )) (defun (goto-tag fn str pos restart (setq restart 0) (if (! prefix-argument-provided) (progn (setq last-search-tag (concat "\^A[^\^B]*" (quote (arg 1 ": goto-tag ")))) (setq restart 1))) (save-excursion (to-tag-buffer) (if restart (beginning-of-file)) (re-search-forward last-search-tag) (beginning-of-line) (re-search-forward "\^A\\([^\^B]*\\)\^B\\(.*\\)") (region-around-match 1) (setq str (region-to-string)) (region-around-match 2) (setq pos (- (region-to-string) 300)) (save-excursion (re-search-reverse "\^_\\(.*\\)") (region-around-match 1) (setq fn (region-to-string))) ) (visit-file fn) (goto-character pos) (if (error-occurred (search-forward str)) (search-reverse "")) (beginning-of-line) (line-to-top-of-window) )) (defun (find-pos-str (beginning-of-line) (setq pos (+ (dot) 0)) (set-mark) (end-of-line) (setq str (region-to-string)))) (defun (store-pos-str (insert-character '^A') (insert-string str) (insert-character '^B') (insert-string pos) (newline))) (defun (add-tag (save-excursion pos str fn (find-pos-str) (setq fn (current-file-name)) (to-tag-buffer) (beginning-of-file) (if (error-occurred (re-search-forward (concat "\^_" fn "[^\^_]*"))) (progn (beginning-of-file) (insert-character '^_') (insert-string fn) (newline))) (store-pos-str) (beginning-of-file)))) (defun (add-tag* pos str (find-pos-str) (save-excursion (temp-use-buffer "*TAG*") (store-pos-str)))) (defun (add-all-tags pattern fn (setq pattern (arg 1 ": add-all-tags (pattern) ")) (setq fn (current-file-name)) (save-excursion (to-tag-buffer) (if (error-occurred (search-forward (concat "\^_" fn "\n"))) (progn (beginning-of-file) (insert-character '^_') (insert-string fn) (newline)) (progn (set-mark) (while (= (following-char) '^A') (next-line)) (erase-region)) ) ) (save-excursion (error-occurred (beginning-of-file) (while 1 (re-search-forward pattern) (add-tag*)))) (novalue) ) ) (defun (add-typed-tags ext pattern (setq ext (substr (current-file-name) -2 2)) (add-all-tags (if (= ext ".l") "^(def" (= ext ".c") "^[A-z].*(.*)" (= ext "ml") "^(defun[ \t\n]*(" (= ext "ss") "@section\\|@chapter\\|@subsection" (= ext ".p") "function\\|procedure" (error (concat "Can't tag " (current-file-name))) ) ) )) (defun (tag-file fn (setq fn (arg 1 ": tag-file (filename) ")) (message (concat "Tagging " fn)) (save-window-excursion (error-occurred (visit-file fn) (add-typed-tags) (delete-buffer fn))))) ; deletes current buffers if they ; are also having tags computed (defun (recompute-all-tags (save-window-excursion (to-tag-buffer) (beginning-of-file) (error-occurred (while 1 (re-search-forward "\^_\\(.*\\)") (region-around-match 1) (tag-file (region-to-string))) ) (write-named-file ".tags")))) (defun (make-tag-table fns (setq fns (arg 1 ": make-tag-table (from filenames) ")) (save-window-excursion (temp-use-buffer "*TEMP*") (erase-buffer) (set-mark) (filter-region (concat "dir " fns)) (beginning-of-file) (while (! (eobp)) (set-mark) ; (end-of-line) (search-forward " ") (backward-character) (tag-file (region-to-string)) (next-line%) (beginning-of-line)) (delete-buffer "*TEMP*") (temp-use-buffer "*TAG*") (write-named-file ".tags")) (novalue) )) (defun (visit-function func (save-window-excursion (forward-character) (backward-word) (set-mark) (forward-word) (setq func (region-to-string)) (goto-tag func) (message "Type ^C to go back") (recursive-edit) ) )) (save-excursion (to-tag-buffer) (if restart' Z (ò1 tags.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãDdeclare-global"last-search-tagdefunþ to-tag-buffer:temp-use-buffer*TAG*¤ifŒ&:= buffer-sizeZ>ÿÊ$current-file-nameprognÆÿJVerror-occurred4 read-file.tagsjÿ�*write-named-fileÿÂ:message  New tag file$beginning-of-fileÜýîÖvisit-tag-tabletagfnbsetqÿÔDargZ&: visit-tag-table :save-excursion ýbý~ þrÿVàýÚgoto-tagfnstrposrestartþêÿäZäüò@!,prefix-argument-providedžýN„þŠü xconcat[^]*Dquote,þPZ : goto-tag þÿZ”þTû®üþàýv*re-search-forwardû8$beginning-of-line*ÿ¶$\([^]*\)\(.*\).region-around-matchZ0ý.ýü$region-to-stringÿ¦Z.üðýÔ"-ÿ²Z,dý$>re-search-reverse\(.*\)ÿ&Züpý(ÿF$ visit-fileüþ(goto-characterý\ú..úè(search-forwardü¸(search-reverseúfþ(line-to-top-of-window¶ù2° find-pos-strý¼>û\ü@2+dotZset-mark end-of-lineúäû²ýº¬ø|¦ store-pos-str,insert-characterZ& insert-stringû4ÿ²Z ÿÐû0newlineÞ÷ÐØadd-tag¾úhúêúÎú²þpùèú øb÷˜ùlv÷æDø >ûî8û>ú\[^]*,ø>ùþÌZ þêúÿþŒøêLöòFadd-tag*úùôýœùv öð÷ þ:êö¦ä add-all-tagspatternùzFø¶ÿÞ:øÈZ,: add-all-tags (pattern) øpù(öêøÀöôön2÷(,üD&ùÆþŒøò ,öØ÷°ýfZ ý„ø¸ý¸�ö¬üÎdwhile0ö"following-charZ next-line  erase-region2÷À,ö4öî ÿnZ ùnþfýônovalue*ô¼$add-typed-tagsextþ<öÎÿâ0substrõ.&ZÿÿÿþZªý ¤ô¨"ôÌÿš.l^(def"ô’ÿ`.c  ^[A-z].*(.*)"ôPÿml"^(defun[ ]*("ô þÚss2@section\|@chapter\|@subsection"ó¸þ†.p&function\|procedureBerror*ö˜ Can't tag ótò’útag-fileõ„DôÀõx8ôÒZ*: tag-file (filename) .óÞ(õüTagging õfsave-window-excursion>ó ÷ÆôØý & delete-bufferô¬„ñ’~recompute-all-tagsXÿrñxóL:ò†4ûÆZ õÆöüö2Z þžöX ò¨ò„ÐñÊmake-tag-tablefnsPó&ÿèDó8Z6": make-tag-table (from filenames) <þŒ ð²*TEMP*  erase-buffer÷vD filter-region$óðdir ÿñâ‚úbóneobp÷ö &backward-character üøô²ú4ô ý´þò ï”ï° ðÞðºúrï>visit-functionfuncÜý $forward-character  backward-wordõð  forward-wordðäÿvóº ñtÿd,ð(&Type ^C to go back"recursive-edit New tag file$beginning-of-fileÜýîÖvisit-tag-tabletagfnbsetqÿÔDargZ&: visit-tag-table :save-excursion ýbý~ þrÿVàýÚgoto-tagfnstrposrestartþêÿäZäüò@!,prefix-argô Y õò;tek-fnkeys.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl" ; Bind a couple of the function keys, just to show how they work (bind-to-key "beginning-of-file" "\eOE") ; f1 (bind-to-key "end-of-file" "\eOF") ; f2 ; Bind the break key so that is aborts (bind-to-key "illegal-operation" "\eO@") ; break ï° ðÞðºúrï>visit-functionfuncÜý $forward-character  backward-wordõð  forward-wordðäÿvóº ñtÿd,ð(&Type ^C to go Ó ¨ Ôò;tek-fnkeys.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãX bind-to-key$beginning-of-fileOE:ÿ¬ end-of-fileOF@ÿr$illegal-operationO@egal-operation" "\eO@") ; break ï° ðÞðºúrï>visit-functionfuncÜý $forward-character  backward-wordõð  forward-wordðäÿvóº ñtÿd,ð(&Type ^C to go &í Ù îò;tek-joydisk.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; Bind the joydisk in all its modes (bind-to-key "previous-line" "\eOA") ; joydisk up (bind-to-key "next-line" "\eOB") ; joydisk down (bind-to-key "backward-character" "\eOD") ; joydisk left (bind-to-key "forward-character" "\eOC") ; joydisk right (bind-to-key "previous-page" "\eO!") ; shift joydisk up (bind-to-key "next-page" "\eO\"") ; shift joydisk down (bind-to-key "backward-word" "\eO$") ; shift joydisk left (bind-to-key "forward-word" "\eO#") ; shift joydisk right (bind-to-key "illegal-operation" "\eO1") ; control joydisk up (bind-to-key "illegal-operation" "\eO2") ; control joydisk down (bind-to-key "illegal-operation" "\eO4") ; control joydisk left (bind-to-key "illegal-operation" "\eO3") ; control joydisk right sit-tag-table :save-excursion ýbý~ þrÿVàýÚgoto-tagfnstrposrestartþêÿäZäüò@!,prefix-arg¡ Ø ¢òtek-joydisk.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ãT bind-to-key  previous-lineOA8ÿ° next-lineOBBÿx&backward-characterOD@ÿ6$forward-characterOC<þö  previous-pageO!8þº next-pageO"<þ‚  backward-wordO$<þF  forward-wordO#@þ $illegal-operationO1"ýÊÿÄO2"ý¨ÿ¢O4"ý†ÿ€O3disk left (bind-to-key "illegal-operation" "\eO3") ; control joydisk right sit-tag-table :save-excursion ýbý~ þrÿVàýÚgoto-tagfnstrposrestartþêÿäZäüò@!,prefix-argƒ × „òtek-mouse.ml/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿl"; Tek 4400 Series mouse bindings and functions (declare-global cursor-type) ; 'b' or 'u' for block or underline, ; 'B' or 'U' for flashing b or u (setq cursor-type 'U') (declare-global xmouse) ; 'x' position of mouse cursor (declare-global ymouse) ; 'y' position of mouse cursor ; general mouse functions (defun (convert-to-decimal num ch (setq num 0) (while (& (>= (setq ch (get-tty-character)) '0') (<= ch '9')) (setq num (+ (- ch '0') (* num 10)))) (push-back-character ch) num ) ' (move-dot-to-mouse err (if (= ymouse 1) (previous-page) (= ymouse 30) (next-page) ) (if (error-occurred (move-dot-to-x-y xmouse ymouse)) ) ) (enable-mouse-down (send-string-to-terminal "Q1;1J") ) (enable-mouse-up (send-string-to-terminal "Q2;1J") ) (disable-mouse (send-string-to-terminal "Q0;1J") ) (enable-mouse-both-up-down (send-string-to-terminal "Q3;1J") ) (parse-mouse ; parse a mouse position report (setq ymouse (convert-to-decimal)) ; get row value (get-tty-character) ; throw away ';' (setq xmouse (convert-to-decimal)) ; get column value (get-tty-character) ; throw away the ESC (get-tty-character) ; throw away the BACKSLASH ) (mouse-ignore-button t (setq t (convert-to-decimal)) ; get row value and ignore it (get-tty-character) ; throw away ';' (setq t (convert-to-decimal)) ; get column value and ignore it (get-tty-character) ; throw away the ESC (get-tty-character) ; throw away the BACKSLASH ) ; left button functions (left-button (enable-mouse-both-up-down) ; activate mouse for both up and down (parse-mouse) (if (move-dot-to-mouse) (bind-to-key "left-up-out" "PA1U") (bind-to-key "left-up-in" "PA1U") ) (message "^^^|^^^1^^^|^^^2^^^|^^^3^^^|^^^4^^^|^^^5" "^^^|^^^6^^^|^^^7^^^|^^^8^^^|^^^9^^^|^^^" ) (novalue) ) (left-up-in xold yold (setq xold xmouse)  (setq yold ymouse) (parse-mouse) (if (&(= xold xmouse)(= yold ymouse)) (novalue) (move-dot-to-mouse) (move-%-buffer) (progn (set-mark) (move-dot-to-x-y xold yold) (exchange-dot-and-mark) (show-region) (send-string-to-terminal "=") (sit-for 3) ) ) (message "") (bind-to-key "mouse-ignore-button" "PA1U") ) (left-up-out (parse-mouse) (if (move-dot-to-mouse) (novalue) (move-%-buffer) ) (message "") (bind-to-key "mouse-ignore-button" "PA1U") ) (move-%-buffer (if (= xmouse 1) ; test (1) (beginning-of-file) ; (1) is true, otherwise next statement (= xmouse (window-width)) ; test (2) (end-of-file) ; (2) is true, otherwise: (goto-character ; the 100s are there for emacs integer math (/ (* (/ (* xmouse 100) (window-width)) (buffer-size)) 100) ) ) ) (l-ctrl-button (message " still block |  still u-line " "| flashing block | flashing u_line ") (mouse-ignore-button) (bind-to-key "cursor-menu" "PC1U") ) (cursor-menu (bind-to-key "mouse-ignore-button" "PC1U") (parse-mouse) (if (< 30 ymouse) (if (< 60 xmouse) (underline-flash-cursor) (< 40 xmouse) (block-flash-cursor) (< 20 xmouse) (underline-still-cursor) (block-still-cursor) ) ) ) ; middle button functions (middle-button (enable-mouse-both-up-down) (parse-mouse) (message "| show region | copy region | kill region | paste |") (bind-to-key "middle-up" "PA2U") ) (middle-up xold yold (setq xold xmouse) (setq yold ymouse) (parse-mouse) (if (= 32 ymouse) (progn (if (< 60 xmouse) (unkill) (< 40 xmouse) (kill-region) (< 20 xmouse) (copy-region) ) ) (if (& (= xold xmouse)(= yold ymouse)) (show-region) (exchange-dot-and-mark) (send-string-to-terminal "=") (sit-for 3) ) ) (message "") (bind-to-key "mouse-ignore-button" "PA2U") ) (show-region tmp (setq tmp cursor-type) (setq cursor-type 'b') (set-cursor) (exchange-dot-and-mark) (sit-for 9) (exchange-dot-and-mark) (sit-for 9) (setq cursor-type tmp) (set-cursor) (redraw-screen) (send-string-to-terminal "=") ' (sit-for 3) (message "") ) ; Cursor control from emacs (set-cursor ; set the cursor to cursor-type (if (= cursor-type 'U') (progn (send-string-to-terminal (concat "[>32l" ; blink it "[>31l") ; and underline ) (sit-for 5) ) (if (= cursor-type 'u') (progn (send-string-to-terminal (concat "[>32h" ; make it still "[>31l") ; and underline ) (sit-for 5) ) (if (= cursor-type 'B') (progn (send-string-to-terminal (concat "[>32l" ; blink it "[>31h") ; make it a block cursor ) (sit-for 5) ) (if (= cursor-type 'b') (progn (send-string-to-terminal (concat "[>32h" ; make it still "[>31h") ; make it a block cursor ) (sit-for 5) ) ) ) ) ) (novalue) ) ; We haven't anything fancy for the right button yet' (right-button (mouse-ignore-button) (bind-to-key "mouse-ignore-button" "") ) (block-flash-cursor (setq cursor-type 'B') (set-cursor) ) (block-still-cursor (setq cursor-type 'b') (set-cursor) ) (underline-flash-cursor (setq cursor-type 'U') (set-cursor) ) (underline-still-cursor (setq cursor-type 'u') (set-cursor) ) ) ; ; (set-cursor) ; put the cursor to our type (enable-mouse-both-up-down) ; activate mouse for both up and down ; normally, we want to ignore the upstroke on mouse-buttons (bind-to-key "mouse-ignore-button" "PA1U") ; left-up (bind-to-key "mouse-ignore-button" "PB1U") ; left-shift-up (bind-to-key "mouse-ignore-button" "PC1U") ; left-ctrl-up (bind-to-key "mouse-ignore-button" "PA2U") ; mid-up (bind-to-key "mouse-ignore-button" "PB2U") ; mid-shift-up (bind-to-key "mouse-ignore-button" "PC2U") ; mid-ctl-up (bind-to-key "mouse-ignore-button" "PA3U") ; rt-up (bind-to-key "mouse-ignore-button" "PB3U") ; rt-shift-up (bind-to-key "mouse-ignore-button" "PC3U") ; rt-ctl-up ; ignore downstroke on shift and control, too (bind-to-key "mouse-ignore-button" "PB1D") ; l-shift-down) (bind-to-key "mouse-ignore-button" "PB2D") ; mid-shift-down) (bind-to-key "mouse-ignore-button" "PC2D") ; mid-ctl-down) (bind-to-key "mouse-ignore-button" "PB3D") ; rt-shift-down) (bind-to-key "mouse-ignore-button" "PC3D") ; rt-ctl-down) ; now bind the three normal buttons (bind-to-key "left-button" "PA1D") (bind-to-key "l-ctrl-button" "PC1D") (bind-to-key "middle-button" "PA2D") (bind-to-key "right-button" "PA3D") (bind-to-key "left-button" "PA1D") 1U") ) (cursor-menu (bind-to-key "mouse-ignore-button" "PC1U") (parse-mouse) (if (< 30 ymouse) (if (< 60 xmouse) (underline-flash-cursor) (< 40 xmouse) (block-flash-cursor) (< 20 xmouse) (underline-still-cursor) (block-still-cursor) ) ) ) ; middle buttonÿ Ö òòtek-mouse.mo/emacs/maclibí_ ```ÈÜü¤Èì0(í` daaaÉ ü¤É0(-z-z bÉ<ü¤ÉL0(íb üÉdü¤Czÿÿÿo"ã@declare-global cursor-type&setqÿÎüU ÿžxmouse ÿ~ymouse|defunšconvert-to-decimalnumchÿ4ÿÒüwhile†&N>=0þÞÿ’$get-tty-characterü0$<=ÿJü9dþ‚ÿ X+"-ÿ