IMD 1.17: 19/01/2010 20:57:09 4404 emacs v1.1 2 of 3 Tektronix 4400P32 Emacs -- Version 1.1V 2' UniFLEX Backup.dö¸AäBBBßÛüþˆÜ .dö¸B0CCCßÜ,þˆÜ<.dö¸C|DDDßÜ\þˆÜl.dö¸DÈEEEßÜŒþˆÜœ.dö¸EFFFßܼþˆÜÌ1¥h 1¦L96buffer-edit.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zºpîºpîj–2  !"#$%&'()*+,-./01234('&%$#"!  ; 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 tha g  L94buff.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zt 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 "Bufferluedefun first-non-blank$beginning-of-line¢whilef|>="following-charÞ ÿÆÿÔÞ $forward-character"current-columnžskip-forward-matchingchar$setqÿÔÿ"ÿZ.þÖ"!=þúÿ ÿ,ÿ&pone-line-buffer-listmsg 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 r) ) (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 (dethe 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) ) ) lete-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) (d ; 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 (! (| (belete-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-olp) (= (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-chaclose (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-lingn (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 e (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))  (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-l (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-currenine) ) (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"t-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 (pro " 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 (<= lkey "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-binoop '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"d-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 ) ) command, you will see the contents of the file in your EMACS. You can edit the contents.  "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-'÷i 'øL97buffer-edit.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zkey "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-ã@declare-global &old-buffer\defunn buffer-editbufnkeeplineDsetqÿP&current-buffer-nameÿÀÿrÿ  list-buffers> pop-to-buffer Buffer listzÿP$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ÿ &ý^keepÞ|ifR!=$ebuf-buffer-typeFileüÐÿvfollowing-char~ebuf-next-lineøT$ø’ø¸ýÊþâøôø0,ù,øâ  previous-lineûú\ebuf-previous-lineÿ¸ùò$ø ø0ýBþZøl÷¨ûžr ebuf-editVø‚þ  ùx(delete-other-windows õòøØHmessage.Beginning recursive edit..."sit-forÞ"recursive-edit> pop-to-bufferÞTÿˆ:=  ebuf-get-nameýü|ÿ"ÞHÿ4ÿDÿÞ(prognsave-excursion$beginning-of-lineýâ end-of-line$forward-character0û¨ûŠ$region-to-string  erase-region2þ$þ ýøÞþôüf ü~ûüð(delete-next-characterÿÜ(exchange-dot-and-mark´ Buffer listúl@ error-message  not a bufferP ebuf-exitwhereif&ebuf-is-real-bufferÔ÷¦>setqÿ’  ebuf-get-name^message&Exiting to buffer ÿ, ...  ebuf-cleanup þNþèý‚ þ€þšF ebuf-quit$þ &old-bufferý0¤error-occurredjre-search-forwardFconcat&^..................ùü(position-within-linenovaluežû¢hüÂý>üâýPý”$ ebuf-gotoÞ*&ûÂûü þxÿºÞúÌ ýTzüVtý&ÿ~Þ û6Tgoto-character2+dotÞýRPüFJü¬ÿÞú¼ ebuf-openþn‚þ€þ�vöRþ°þPþ ý¤ÿ”üØLþJõºþ&ÿv(split-current-window ýRýìldefunR ebuf-close4ebuf-flag-columnÞÞC4 ebuf-deleteÿ²ÞÞD2 ebuf-saveÿ€ÞÞS2 ebuf-markÿNÞÞN4 ebuf-revertÿÞÞR6 ebuf-undeleteþäÞüÞŽúÌbúò\|bolp0ûÔ"preceding-charÞ &backward-character2ú>&úP ú^ÿ„ûfÿ–Þ ÿ²2ú &ú2 ÿDÿRû4ÿdÞ ÿ€2ùÚ&ùì ùúÿ ûÿ2Þ ÿNüšebuf-is-real-bufferv÷ZÿêúFNùn$ú$ÿÒType$úÿ®----N ebuf-statusýÞ"Þ ²þÎ(temp-use-bufferûÒ$ö¸argÞ(delete-next-character2insert-characterÿšÞõÔfö4$beginning-of-line<goto-characterö¤ö²ÿ.ÞõhõÈÞXmouse-position-within-line$move-dot-to-mouseõNmouse-ebuf-exit&mouse-ignore-buttonú’.mouse-ebuf-openÿ¶ûúÌü˜Š message-charFúì@ôþÞ, Press to continue.$get-tty-character°úàbstat ebuf-name ùù*$beginning-of-file next-lineÿè$ï¬ïÒeobpù”ÿTöxù‚ÿZù”Öù.ðžÿ*ÞD¢ðòjù,òj& delete-bufferÿ8þT2ò~þð& cannot be deleted.üÎ&1 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 kill-to-end-of-lineü<ïèþtÞSÞð<Òsave-excursion°ø60ï¦$ebuf-buffer-typeïJšïÞ ûrþˆ÷îBñJ&write-current-fileùøÞÞ @ý:ñHýº. cannot be written to file.àïD úØýzÎ÷Tˆð°‚write-named-file^ get-tty-file>ð¬ File for ý: @ü>:ðhüÚ.cannotwith 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 õÆî|Þ next-windowR bind-to-key buffer-edit VæØloop 8öˆ òNî8> define-keymap be written to file.üòíöü‚ÞC¨îJ¢öf<ïÂ6þ0öTíÄþ"í†î ù®üPþL<ûœ6ïÆü8þ‚$ Closing fails.$íÆ üäûüúý6ùŽí:ûÆÞNhíŽFýV ùû¾4õÚ&buffer-is-modifiedÞ÷ ÞÞ ûºì¾ûJÞRÖíÊüÚÄõ(ì˜üöìZ¬ìî ø‚û$šôþ\îZ@ read-file$current-file-nameöîÞÞ  ebuf-keymap& use-local-mapÿÆî¨ÿpÞzäˆ$<=ÿFÞ0local-bind-to-keyù¶ÿ î:ÿèüþöÞîþâÞ0^ãúÿvþÈÞ9$ÿ†digitþœ íÈþ�èŠþ„Þ ÿBù¤? ÿ"ï°d ÿï�D þâïp @þÂ&ebuf-previous-linep þ‚8ú2î>ú°& cannot be reread.úÐúÊø‚Œ ebuf-beeppóÂjVCmds: Next, Prev, Save, Close, Delete, Reread, Mark, Unmark, Edit, Goto, Open, Quit, ?zõÌt ebuf-helpòìHelp  erase-bufferèèÚL9 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 DÿÄP þbÿ¤ þBÿ„<þ""ebuf-next-linen ýæÿÈN ýÆÿ¨ý¦ÿˆæB ý”íÐc ýtí°C6ýT ebuf-edite ýÿÎE üþîXu üÞî8U ü¾ê¨g üžêˆG ü~í@s ü^í S ü>í2m üíM ûþí$r ûÞíR û¾êøq ûžêØQ û~êþo û^êÞOû>õúJ<û,"redraw-display <úð"search-forward<ú´"search-reverse(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-comme<úx"argument-prefix>ú<"previous-windowp"ùþÿÆP:ùÜ next-windown"ù¢ÿÊNDù€(delete-other-windows16ù< next-page<ù  previous-pagev"øÊÿÈV@ø¨&scroll-one-line-upnt" "'") (local-bind-to-key "indent-C-procedure" "j") (novalue) ) ) beginning-of-file$ebuf-pretty-line next-lineÿÄÿâset-markÖwhilez&H!4 looking-at^x$ÿ¼eobpÿ &ý^keepÞ|ifR!=$ebuf-buffer-typeFileüÐÿvDøh(scroll-one-line-downZ@ø$$beginning-of-file<"÷äÛX>>÷Â$return-to-monitor8÷„ exit-emacsL÷L.mouse-position-within-linePA1D@÷"mouse-ebuf-exitPA2D@öÀ"mouse-ebuf-openPA3Dle (<= l‹ð ŒL98c-mode.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zNj OL98c-mode.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zã\defunDbegin-C-comment*move-to-comment-columnXsetq left-margin"current-column.ÿ¬  right-marginÞN<ÿ~  prefix-string 6 insert-string/* Æþ¨À end-C-commentþæÿ>Þèpif@!="preceding-charÞ ÿ> ÿ$*/hýâbc-modeþ&þ~Þèþþ˜þ²8þ mode-stringC,remove-all-local-bindings@local-bind-to-keyý,`"ÿÄþT'Bÿ¢&indent-C-procedurejnovalue|ifR!=$ebuf-buffer-typeFileüÐÿvword-capitalize)) (forward-word) (backward-word)) ) uf-get-nameýü|ÿ"ÞHÿ4ÿDÿÞ(prognsave-excursion$beginning-of-lineýâ end-of-line$forward-character0û¨ûŠ$region-to-string  erase-region2þ$þ ýøÞþôüf ü~ûüð(delete-next-characterÿÜ(exchange-dot-and-mark´5ï 6L98capword.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z î  L99capword.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z; ; 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)ã 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-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-þÂþœ"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í hL99case-char.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zÞZ"+þ,Þ þnovalue, bind-to-keyý¸ÞýúýÈþ þþ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-(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:ÿ0¶ë ·L99centre-line.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zsì tL99case-char.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z; 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)) ) ) ) "-þ|Þ .ÿ–ÿ¤ÞAþZÿ�þNãFdefun.case-character-invertcØprefix-argument-loop°if,!eobpnprogn@setqÿV"following-char(delete-next-characterîinsert-characterÊÿL&$<=ÞaþªÿàþžÞz"-þ|Þ .ÿ–ÿ¤ÞAþZÿ�þNEê FL9:centre-line.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zã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-marginÞÈÿÜ6ÿÀ(acs++ ") (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-default-right-marginÞÈÿÔÞPþÞe, bind-to-keyý¸ÞýúýÈþ þþ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-#è $L9:cheap.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zé L9:cheap.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zã@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; 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 "em 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- ]ç  ^L9:comments.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z(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) (messa(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-characterge "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) ))) v÷ZÿêúFNùn$ú$ÿÒType$úÿ®----N ebuf-statusýÞ")) (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)  )æ  *L9;comments.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z (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]*\\*$" "")))))) ãrdefunZ box-regionlongestlen save-excursion  narrow-region$beginning-of-file˜whileX&eolp,!eobp(delete-next-character4 insert-string &setqþŠÞæerror-occurredÄþð ÿ.ÿ< end-of-linepifH>.ÿbþ"current-columnýÒÿ.ýÆýÚ$forward-character end-of-file”þbþ þFbobp>="preceding-charÞ ,delete-previous-characterþ ý:ýð/*þüºÞný( <ü’ürýš*.ý´üf"ýþ2ö¢ý~ø’û:õúebuf-next-lineøT$ø’ø¸ýÊþâøôø0,ù,øâ  previous-lineûú\ebuf-previous-lineÿ¸ùò$ø ø0ýBþZøl÷¨ûžr ebuf-editVø‚þ  ùx(delete-other-windows õòøØHmessage.Beginning recursive edit..."sit-forÞ"recursive-edit> pop-to-buffer+üLÞýR*\ Šý�„ü˜ üÖüäý* ý�.to-colÿrû®ÞüÎ *ýÎýìü¦\*ü¾ûpÞDûÞþºûVû6 ü^þÈ ü†û8þÖû,Þü2*/  widen-regionRú’L debox-region,úÒ&save-restrictionúÊúäZûôTre-replace-stringNå OL:debug.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z/\*[\*]*ûìúÎû 2ûˆ,ÿ˜  [\*]*\*/[ ]*ÿ²*ûV$ÿf^\* ÿˆ.û,(ÿ<[ ]*\*$ÿZdù@^edit-block-comment8save-window-excursionesc-jmodeú®<re-search-reverse^/\*set-markúÞúØ8search-forward*/ú*ù úŽ; 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))) ý€Fùšÿ:local-binding-ofjNlocal-bind-to-key$justify-paragraphÿ¦,ù left-marginÞ.øÚ  right-marginÞK,ø¬  prefix-stringý÷pFmessage,Type ^C to resume editing*ø4ýÆ mode-string,ø ÿà  Comment edit(ö¬"recursive-edit÷¶ÿŒýBþT (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 (&sttionþþâ.=ÿ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ü>ep-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*/ú*ù úŽý|ý¬ü,ý€ýÈ þ€ýX þ¸ýbüÿbÞ€whileÿ<dü2^KSingle stepping... space->continue, s->skip, l->look, r->recurse, p->print0ûlþŠ$get-tty-characterÎûîýþTÞ .ýpûþfÞûþhÞüÎþÞs.ý.úÚþ$ÞúÆþ&ÞüŒýÐÞl€þB& pop-to-bufferý° ýý¤&úÈ  Dot is here."Qä RL:debug.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zsit-forÞ ûøý<Þr(ý®"recursive-editû¼ýÞpÞerror-occurredvLù˜ÿê@get-tty-variable: print Nù®ÿž = ,execute-mlisp-lineÿ\þÂÞ úÊüÞ< error-message Giving up2úîøüHuh?þ@Þ Pù û¸&&step-through-arg-1ã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-posiargÞ: bind-to-keyù&slocal-bind-to-key$justify-paragraphÿ¦,ù left-marginÞ.øÚ  right-marginÞK,ø¬  prefix-stringý÷pFmessage,Type ^C to resume editing*ø4ýÆ mode-string,ø ÿà  Comment edit(ö¬"recursive-edit÷¶ÿŒýBþTã L:des-word.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zription") (novalue) ) ) øý<Þr(ý®"recursive-editû¼ýÞpÞerror-occurredvLù˜ÿê@get-tty-variable: print Nù®ÿž = ,execute-mlisp-lineÿ\þÂÞ úÊüÞ< error-message Giving up2úîøüHuh?þ@Þ Pù û¸&&step-through-arg-1 (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 (reg™â šL:des-word.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zion-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 (rãzextend-database-search-list subr-names./emacs/databases/quickinfošerror-occurredxÿhÿ�lconcat2getenvHOME  /.subr-names„defun”describe-word-in-buffer subr-name4if>>"prefix-argumentÞæprogn*þ $forward-egion-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 desccharacter  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^þÿâRargÞ4 : edit-description (of routine) D pop-to-buffer$Edit descriptionýÔBûìúîýîú–ÿ($þÖ New entry.`ý* mode-string<ú¼0rrent-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%] ? fo Editing database entry for þ¤(üŠ"recursive-edit2put-database-entryù¸þJ ý8þØþvLù˜ÿê@get-tty-variable: print Nù®ÿž = ,execute-mlisp-lineÿ\þÂÞ úÊüÞ< error-message Giving up2úîøüHuh?þ@Þ Pù û¸&&step-through-arg-1r 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-!½á !¾L:dired.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zto-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) (beginn; 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 (cuing-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"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-opt " 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 "/"tions) (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 (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)) -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 "previo (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 us-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" "mà nL:dired.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z\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-bã”declare-global(Dired-keymap-defined"Dired-directory(&dired-return-buffer&setqÿzÞ0ÿÞÿŽ$working-directorydefunödired directory2ÿbÿ4&current-buffer-nameŠÿ0ÿ°~argÞ`concat*: dired on directory? [þx] Vind-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)) if.=ÿþbþâþ Èÿ®š&Jÿª/0substrþˆÞÿÿÿÿÞ<> lengthþDÞ(ý°þ0ÿŒþ$ÞÞÿÿÿÿýˆý8þ*switch-to-bufferýÀ@ use-local-map  &dired-keymap˜ý $mode-line-formatnýà* Editing directory: ý88$ ) (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") ) ) ü¾ê¨g üžêˆG ü~ %M %[%p%] ? for options  erase-bufferset-markNmessage4ý(Getting contents of üv"sit-forÞvfast-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ÊúÌ,úÜÞ buffer-size,ÿ &dired already done!lþ&$beginning-of-lineTgoto-character2+dot6þ®òFô^$region-to-stringŽ&dired-done-optionshöbNd-do deletions; q-query each deletion; e-exit,do not delete; r-return to dired&dired-exit-without-deleting<õn6#Really exit without deleting? [y/n]@ñfans$get-tty-characterfò„<|ò€ÿªÞyòlÿ–ÞY exit-diredþjÚ&dired-query-deletioÞ(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ø„Þý¬ üàýÄ8üýäþÆþè ÿý¸¸&dired-backunsªwhileúeobpnñ¾0ñÎ"following-charÞD8prognthisfileþšïðÿÜû¬Fóª@ûðDelete ÿª? [y/n]ï˜þ6þF”ðä.þdðîþÞyðÚþÞY`ð°$ unlink-fileÿ 6û 0û:$Couldn't delete þê÷0þ ¦&dired-do-deletionszþ. øTþ@bð ðþRp-unmarkr÷î÷þÞý& ü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-windowsjõ*d&dired-read-fileÞDHþnþ€îˆþtúD*ïÔ ÿ(þ\ú\úvÿ@þDöŠýf &dired-returnB erase-buffer"dired deletions<switch-to-bufferdired$beginning-of-file2 &dired-doneÿÂñ ó.copy-region-to-bufferÿ* ÿFÿJ use-local-map*&dired-deletions-keymapÿ,Bre-replace-stringfname"save-excursionõÎ^error-occurred0ôHÿœ$&dired-get-fname þˆÿlb message-charBconcat"Unable to get ÿ :÷v4ÿ¼þø( read to emacs bufferþxPóÀ0 &dired-hideú@ønøhÔþüÎþ ú"6goto-characterú@úNÞöœ(search-forwardûð(ÿ "-ùøÞ^ .* î6íà$!=Þóùüûr’ûl,÷à& delete-bufferþ$ ÿÞþ^.þ4(&dired-return-buffer&ï¬  Dired exitedR÷²Fï€@÷ÆìˆÞ, Press to continue.ú(Nmouse-go-to-line$move-dot-to-mouseòîúôloopÐön(temp-use-bufferý& define-keymapí† ý˜íz êœÿ†Þ–ùö$<=ÿ\ÞLlocal-bind-to-key"&dired-summaryÿ êþüñFþðÞéòþÜÞ0^ùLÿZþÂÞ9$ÿjdigitþ– é þŠðÔþ~ÞFÿ&,&dired-Mark-file-deleteddþàÿ¾ñX þÎÿ¬"þ®òN7:þŒ  previous-line þRÿÊþ*ø>ñÖýøø,ñÄýÆøóŒê’øózù ÷öôþ÷äóüþ-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)) p þ2ÿªP þÿŠ ýòð„n ýÒðdN ý²ðDý’ð$Þ ý~ðÞ ýjïüðä<ýX"argument-prefix>ý"previous-windowp"üÞÿÆP:ü¼ next-windown"ü‚ÿÊN<ü`  delete-wdß dL:elec-c.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zindowd"ü$ÿÈD"üñ^1>ûà"&dired-examine6û¢ next-page<ûl  previous-pagev"û0ÿÈV"û÷Ä<"úìë> úÊíÞu úªí¾U úŠóþ új÷Dq úJ; 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÷$Q ú*þNe ú þ.E ùêïtR ùÊïTr ùªðžh ùŠð~H$ùjøZPA1D ø®õž øÊöž öxö’ã|øfÞLòÖøäøLÞøôðìø2 ã<ø&êpøÞãøÞ0Lòvø„÷ìÞ9ø”ù.÷Ò âÜ÷Æê÷ºÞøbðèþ\øPðÖ 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 expressio n 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 eblock 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 existnters ; 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. Semicoing 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 delon 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 clarations. ; ; 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 (dtwthe &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-) 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-com ment 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 insiment 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 wde 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-fhite 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)) (savorward "*/")) (< 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!"e-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 )) (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-argu (!= (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 (do ; 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-t-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 (buffeabbrev-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 ) 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) (p (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-inrovide-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 " (){}") dent) (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 constine-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) (ruct (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-isetq 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-ps-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)osition (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 ; pre (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 "}") (newlpare 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-p osition 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-editcter 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) (s) ; 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-etq 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-margreverse "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) in (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 (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-chara-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-comaren" '(') (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 (ment (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 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") 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-t(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-hookable "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-ped-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)   ) ) f (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 (doerror-occurred8search-reverse/*ÞXû°<ÿ,ÿ0þŽÞ"current-column�ÿJv looking-atXconcat/\*(char-to-stringûØþtüªÞ†þºr|>þ¶8search-forward*/ <ý¸ý8ýÈÞÈbackward-bracelevelrýú þ þ&5ÁÞ 5ÂL: elec-c.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z}L error-message,Can't find end of block!ý.ÿtÞwhile">ÿ:Þ<re-search-reverse[{}]’üþ>="following-charÞ{.ü`þ¦"-þŒÞ ü2þxû”þlÞR forward-braceþ>^üF üVý¤{8þP2Can't find beginning of block!ûŽã5ÀprognV setq-default.&elec-c-split-declarationsÞ6ÿ®(&elec-c-indent-widthÞ6ÿx(&elec-c-right-marginÞK4ÿB&&elec-c-border-charÞ-4ÿ&&elec-c-border-sizeÞKFþÚ*&elec-c-comment-prefix 0þ”"&elec-c-commentÞ4þd&&elec-c-box-commentÞ4þ0&ýÔÞºþdþvýºÞ*re-search-forwardþ„vû�0þ–"preceding-charÞ{ ûýFúbý:Þ úàý&þ„ýÞ~ expand-abbrev"space-positionú~ÿÜùô,insert-characterÞ#&backward-characterÿ²Þ Êsave-window-excursion(goto-characterÿ&zúýý*Þ Zprovide-inside-double-quoteÞ4ýü&inside-single-quoteÞ`declare-buffer-specificýúÿÿ8þþNþ|þªÿNÿ| šdefunVcurrent-position2+dotÞŠinside-c-commentposition  star-position&setqþ(ÞÿÞÿœÿòsave-excursionÐifZprefix-argumentÞ(delete-next-characterÿÜ’ pause-or-exitrù|0û"recursion-depthÞ pause-emacs exit-emacs, pop-recursionýÔÿL¼skip-white-space˜ûJn&,!eolp.ùÄûzûˆÞ ûfûtÞ $forward-characterrthis-line-is-blankL÷Ú$be ginning-of-lineþø÷Ìÿ>ÞÞpkill-current-lineÿšF÷†þø&kill-to-end-of-lineý\ÞÿÐàbeginning-of-blockmymark& insert-stringøüö€ÿ¾õöhöÈ öØøŒ>òÚ üvÿ”,delete-previous-characteröV ü8ÿVÿÆ, end-of-blockÿùÒ¢preceding-word  backward-wordÿ buffer-size ï ü*ô^}ù¬ñd÷œ(exchange-dot-and-markúr÷² filter-region’ðindent -st -ië~>îàë6 -bc  -nbc @ôh:/ *þ˜þ0þDý(Done!,úÒùPú$ô:êÄódÞ D elec-linefeed$íøõj êset-mark  forward-word$region-to-string ÞôjŒelec-left-brace  next-positionold-mode*ôÔÿâ mode-string0õ übüp end-of-linepôÔ\üü,bolp$!=ùÞ ÿàùÞ ù°Þ *ô ÿ@ block-bodyý>{}ùˆ&newline-and-indentû°DóìùÒ êúhTelec-semicoloní² õõø²üèòÒÞ;ùr– elec-main÷þøìþø ø.õTüŽøLö8 (){}óÞòrù>ôºù2ô®ù&í)$òh î.ðŽì^÷LëÔ.ìL÷‚"main-parametersJuse-abbrev-table&elec-c-main-abbrevs>local-bind-to-keyóøœ(ÿv"eobp&ïònewlineùóNþ<òÄ  previous-line elec-indent"recursive-editó6ûû~ øêý¸ÿò¸ýîýÀJelec-left-parenýxûÜ()ø&Lelec-left-bracketý,û�[]÷ÚLelec-right-parenlineüÈ(÷f"last-key-struckÂñÞ"backwaelec-c-abbrevsÿ˜ò$ÿ¶ ñvöD÷àø,Tñ66ë’$ë¢ë¾main ë ÿæîôêüõêêr(êêö  main-body÷È ðÜõª÷Fêªõàõ²Þ® elec-argc ì8ýîð,óÀ,argvõ°öÔ"ó– int argc;ö¬&ón  char *argv[];Þnelec-ifô¼ôÖé¼ôÊôì ó () {}rd-parenšñØ"dot-is-visibleHíÔ ñPÿb"sit-forÞ *íŒùpûnühðöÿû’ messageþâ´elec-tabnewcolðŽÿäïðñníhöÞ.ö&&delete-white-spaceöÊ to-colÿr&elec-function-formatold-dotold-size ï²ÿÈïï"Þ*ï’ïNõÊöFë<(ïVö@éRô@èÈ,é@ôv  if-conditionö ï.óü$îú êÀëlèðóÞèf&èÞôif-bodyõ¾é ðèñT îÀóŽôÚèŽóÄó–Þþ elec-elseóLófèLóZó|ñ˜ {}íâô^ôÚôô$íþ éÄêpçôòâçj(çâó else-bodyôÀèïêðV íÂò�óÜç� òÆò˜Þdelec-foròNòhçNò\ò~"ðš (;;) {}ìÞóZóÖ èÌý”ìôóÞæðñÞæf*æÞò for-controlóº ìÎñœ$ìš è`é æ�ñ~æ(æ~ñ´for-bodyó\æªî†îò ì^ñ,òxæ,ñbñ4ÞV elec-whileðèñåèðöñ ï4ü0ëŽò ò† ç|üDë¤òŽå ðŽå.åŽ߈ê¾þPì| âZëä>Þ åvêD6åB áû|ëÎ ïþÄß&êÞœßêJþ@ìßVç2çž å éØ è<þÞ ßdý(ë å"Û¬äLÞ ß8ý6ä’ë|ÞŽé|ÞÞ|é²ýDëp(delete-previous-word çšdefault next-lineÞé6ÿÂêôÞBææŠÝÖé èÞÞæ elec-defaultè�èªÝ�ðÄ"while-conditionòf ëzðH$ëF ç ç¸å<ð*ä²*å*ð` while-bodyòåTí0íœ ëïÖñ"äÖð ïÞÞzelec-doï–ï°ä–ï¤ïÆ&íâ  {} while (); äðæÎð˜ññ.$ê8 åþúÆä.ïã¤&äïRdo-bodyðüäJì&ì’ éþîÌ2éÊå�;ã²î ã(,ã îÖ èžèÀ æÜ:break; Ýðû´é˜ã®Ú8âØÞ éúê$ã ÞäùXÝèÜŠê ãçêÜðè&çøÞ(setup-for-codeÜ´ÚºÞ,Ü  left-marginÞ.Üt  right-marginÞ,ÜF  prefix-stringêà@ use-local-map  elec-c-keymap,ÛÚ abbrev-modeÞ` elec-slashBÛê do-conditionðz éŽî\ï¨ã\î’îdÞ8 elec-switchîî2ãî&îH ìdù`è¾ï:ï¶ ä¬ùtèÔï¾âÐí¾âF0â¾íô$switch-conditionï” è¨ív$èt ä:äæâjíXáà"elec-case-loop èVí$îpâ$íZí,Þ˜ elec-caseìâìüáâìðí"ë. :break;â@bíÚçðÞðà^Þ*×ôáÞ/â$àôÞ/ZverbatimæFæ Û&æ4æVÛæÚŠÛþfÞÚîþ~ÞÚÚÿÞ0þ°*elec-c-verbatim-keymapÚ–åÌÿ@6é¤0Type ^C to exit verbatim modeçT àhå6Ú<åråD6Ú„Ø0$setup-for-commentý(ÿÚdÚHåœÞ¼Þ/8Ú. Ý4ÞÙÀý$ÙTÙ®ýÚ”ÙœýÚ‚ÞzçÞ â:çRî<áNì<àÄ.á<ìr"case-conditionî ç(ëö$æô âºý.àêëØà`(àØì case-bodyí¶áèàéL æ¸ë†àŒëÂë”Þ¶þcase-colëDë^àDëRët.à2ÿÄ"current-indent&éb  case :break; àpþ4ìæ.ܸåXÞ àDþBåžìˆßšêˆßÙŠýÖ¦@ÙÒ×®"Ùlý** ÙJý×.ý"(elec-c-comment-keymapÙ ý4ÞØöÖüÞx elec-starãÚVÙÜ ÝŽÞ/.Õ$Þ8Þ*commentÞÞ*” elec-border old-prefixX؈ ßÒÖ.Û‚ÜðÞ* Ô†Øû’Þ'ÞPÕz ÝzÕ:ä×Ðû`ÔìÝVÞ.Ýtär¼×þÛÛÞ/RÔùlÞàÖ * ×\ÿû×JûýâÚžÚ¬Þ*<Ó¢×úÜþÊøôÝš à^ØàãŠݰÓf ÜzÔ:†þHáäz×$ÔÐÝ€hÓ6Ö²áÀáâÖ áÖþütãŽù°Ö|á²á„novalue¸elec-doublequoteߊ"zÖl ÝÊÔªhÖZÔj.ÒrÕîÔXÞÕÚúÞ.ÒDÕÀÔ*ÞÕ¬ùÖÞ¸ã’*þ argcÿìäÒ úØú¸@modify-syntax-entryw #_ ÿÄ(} { ÿ¤(] [ ÿ„() ( ÿd){ } ÿD)[ ] ÿ$)( ) ÿ " þä ' þÄ {}*/ þ¤\ \÷f 0 ) (elec-for next-position old-mode ; insert for constelec-singlequoteÞÒ'zÕ´ ÝÓ¾hÕ¢Óæ.ѺÕ6ÓÔÞÕ"ùLÞ.ÑŒÕÓ¦ÞÔôùÞ† elec-c-mode ø¬øÆ èœé*&Ôªßàelec-c*use-syntax-tableÿƔԒBtemp-use-buffer  elec-c buffer4Ô&needs-checkpointingÞPÔ8ÔH ÷¼÷Ö8ÐD& define-keymap÷ª ÷„÷ž"ç¾ŸÝ  L: electric-c.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zÕ²{"çœ×X}"çzã8jçXÝôÞ{çDà¶Þ[ç0àXÞ( çå, æüüzüžæêý ýDæØà–Þ}æÄà‚Þ)æ°ànÞ]æœäðÞ;æˆùtÞ* ætá~ æTØàær6ÒlÒ| õðøÒÎx þ8øÀ õÒø´æ ö,Þ/åøù\Ï6ÒÒ õ”öèÎ ýÜöÖ (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-liõvöÊ åfåôVdefine-local-abbrev#d#define8ÿ®#i#include@define-hooked-local-abbrevÑÑ æÎ*ÿÄelseÿìè(ÿšforÿîèèÿrÓ8Ó2ê4(ÿZdoÿîëb,ÿ2switchÿêì°*ÿcaseÿìí¾þÜñ†ñ€ñôþÄä~äxâr ãtne) (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-libind-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") (une) (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) ' ')) (= (follose-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 "electwing-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) ) (inserric-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) lineüÈ(÷f"last-key-struckÂñÞ"backwat-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-ñÜ òL: electric-c.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zã`autoload&edit-block-comment comments.mldefunfc-parenlastpreindentifj&eolp>="last-key-struckÞ}–progn&delete-white-space4setqþúdot$ÿÐþðbolp*insert-characterÿ4.ùF,delete-previous-characterû8Dÿ<úìúvûÚú Þ þ¼ÿŒøÜÿšúôP&electric-C-semiþz;÷ôøþˆ´ skip-spacesü&�whiler|Jÿð0÷Î"following-charÞ ÷žÿÔÞ ÷ŠÿÀÞ û–° &electric-C-*�÷ ÷÷,÷>ü\Þ/^÷hþ>0öÜ üêÿ Øsave-excursion"backward-paren¨þ€þ^œþô–ÿ®indent.ÿ ÿä"current-indent(goto-characterýÊ to-colÿzìýØ"dot-is-visible"sit-forÞ¢þ$beginning-of-lineset-mark end-of-line>message$region-to-stringc-indent÷Î÷J÷\ö¾÷¶þ"begin-C-comment üöûb~ &electric-C-/^ö^ önö|öŽû¬Þ*,ö¸ýŽ  end-C-comment üxúÐüÿX*move-to-comment-columnFöŽ left-margin"current-column.öH  right-marginÞN<ö  prefix-string ûŒ/* nþÜ8ôþ$!=úHÞ õêold-dotold-size.ýXÿÈ"+ýVÞ*ý*ÿ´ buffer-sizeý‚  previous-line:re-search-forward^}þ‚ý>þR(exchange-dot-and-markþd$forward-character> filter-region indent +st@ý$:/ *þ¶þ@þTnovalue¸ c-nl-indÞ õÜÞ*õÎÞ/õhÿ$Þè high-voltage-on2local-bind-to-keyü"Þ;ÿÒúvÞ{ÿ¾ùþÞ}ÿªüêÞ*ÿ–ý†Þ/>ÿ‚$high-voltage-off(öŽ"high voltage on¾ÿ¤,ÿ self-insertÞ;þêÿØÞ{þÖòòÞ}þÂÿ°Þ*þ®ÿœÞ/þšþrÿ:*õÒ$high voltage off‚entüdû€üXüxûHVúª0úæ"preceding-charÞ{ û2ü ýÞûþÞnewline üFûÐd &electric-C-}>úú22ú‚ú”&ùö!úÚÿ†ù‚¶ &electric-C-{–ùªùÎ~ú4 insert-string{&newline-and-indent indent-line ÿŒÿ¦ž dedent-lineûr(úü"-ú˜Þelectric-c-modeBój mode-string electric-C8use-syntax-tableC<ý  forward-paren)"ý†ñFe"ýdó0("ýBû` ý ö¨ ýñÞ)üìñÞ]üØðôÞ}"üÄû'"ü¢ô$jü€üXý Buse-abbrev-table electric-cJerror-occurred(electric-c-mode-hookõV ýæþ@modify-syntax-entry() ( ÿÄ)( ) ÿ¤(} { ÿ„){ } ÿd(] [ ÿD)[ ] ÿ$" ' ÿ" " þä\ \ þÄw _óäbackwaãDdefun¨expand-mlisp-wordj insert-stringJget-tty-command(: expand-mlisp-word novalue„expand-mlisp-variableVÿXPget-tty-variable,: expand-mlisp-variable ÿl}–progn&delete-white-space4setqþúdot$ÿÐþðbolp*insert-characterÌÛ ÍL: expandX.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zÄ L:generate.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z(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)) ) ifj&eolp>="last-key-struckÞ}–progn&delete-white-space4setqþúdot$ÿÐþðbolp*insert-character(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 "geEÅ FL: expandX.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zn-off" "\^X]") save-excursion"backward-paren¨þ€þ^œþô–ÿ®indent.ÿ ÿä"current-indent(goto-characterýÊ to-colÿzìýØ"dot-is-visible"sit-forÞ¢þ$beginning-of-lineset-mark end-of-line>message$region-to-stringc-indentg² hL:generate.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z; 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 (ã0defungen-onþsave-excursionfnamebsetqÿÔDget-tty-string"function name: >temp-use-buffergenerateÌif,prefix-argument-provided  erase-bufferjprogn end-of-file4 insert-string .ÿÐ(defun (…° †L:global-del.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zþ^ÿÈ*start-generating-mlispÚýÔÔgen-off(stop-generating-mlisp& pop-to-bufferþ\þìÿ)) $beginning-of-file&electric-mlisp-mode: bind-to-keyüô["ÿÊþð]set-mark end-of-line>message$region-to-stringc-indentã„defunlglobal-delete-linestargetdelcnt&setqÿÒÞbÿÞÿ¤Vget-tty-string4!: global-delete-lines containing .save-excursion error-occurred$beginning-of-fileÆwhileÞ(search-forwardþž$beginning-of-line&kill-to-end-of-lineÿÞ.̱ ÍL:global-del.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zþ|þ\"+þBÞ\messageBconcatþ" lines deleted pop-to-bufferþ\þìÿ)) $beginning-of-file&electric-mlisp-mode: bind-to-keyüô["ÿÊþð]set-mark end-of-line>message$region-to-stringc-indentѯ ÒL:goto.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z7® 8L:goto.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z(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) ) ) (beginninã6defunò goto-linelineÌif,prefix-argument-provided@setqÿ’"prefix-argumentJÿÄÿd>argÞ  : goto-line $beginning-of-file�ÿ">þâÞhprovide-prefix-argument"-þ–Þ next-line$beginning-of-lineg-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-percentnovalue, goto-percentpercentZþ þþBÿØþT<þ0ÿÆ0þpÞ": goto-percent ’goto-characterp+T/8* buffer-sizeÿÞdÞþÄ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 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) ) ) novalue¸ c-nl-ind•­ –L:incr-search.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z ; 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 ling (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) is now ; tested explicitly. ; - accepts as a "normal-character" ; A. Witkin 1/81 ; Created. (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 (message  (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 (pro(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 "") gn (&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  (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 fai(= 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 oãDdeclare-global"I-search-string2setqÿÊ$ÿŽ I-search-reÿ®ÿàÞ*ÿV$search-exit-charfif"=ÿ¶Þ. setq-defaultÿˆÞìdefunò &inc-initialÒÿf~&Bÿb4lengthstringÞ(> ÿ´þ:ÞNk 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 saprognþ6ÿœþ$þ$is-reþ> &inc-messageðmessageBþZfailingFailing ý¨Fþ is-forwardý~Reverse *ýÒÿR-E ý8 I-search: þb˜&inc-forward-search´üÊÿ¨ýö"!=þüº€error-occurred^ýþT*re-search-fovemark) (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 "")))) Done!,úÒùPú$ô:êÄódÞ D elec-linefeed$íøõj êrwardý°(search-forwardýˆ¸üª!þ@˜ý¬bü„ü”ýPûüset-mark.region-around-matchÞ0ûŽ goodlength ü¼üÐýbê&inc-reverse-searchˆû2ýp|ü^þlü†û2dþ|^ûœüè*re-search-reverseüD(search-reverseü6û> þ˜üâ$üNþ¾úŒÿ ûÒûæüxª&inc-normal-char+¬ ,L:incr-search.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zDúJû°8concatû�nextBúšû8ü> ýèûÔûì &inc-check^ÿæXúRü>&&inc-forward-check&&inc-reverse-checkFÿ¸(exchange-dot-and-marküLùÆûpÿÊîs=s1s2*øÞÿÒargÞø´ÿ¾ÿÚÞhù.ù>ÿˆÿ˜ÞûÆ ùÆÿh ùºÿrÞ*üH$case-fold-searchÞðùØØwhile\ù< ùPþòJc=(string-to-charþ´ ÿÜþ¾<÷¨þœ0substrþ|ÞÞÿÿÿÿ(÷lþvÿÈþjÞÞÿÿÿÿû8 ø�þ2V&inc-looking-atans÷Ž÷žøZ÷ÞøÀHø <úÂ6ú60öÂÿ°$ looking-atøÿ†°save-excursionú–Xgoto-chaúòÞ\incremental-search6&incremental-searchÞÞDreverse-incremental-searchÿ ÞÞ>incremental-re-searchÿbÞÞFreverse-incremental-re-searchÿÞÞ"ÿð‚ú2úPñHñ„ót push-backsavemarkð î´ñ4õÚÞîšðzõÀÞDï*ñè$îtÿœmarkîPracter6+dot ÷j÷~0üð$region-to-string÷NVüTPöj þ¢÷68÷zõ¾÷üÞõªú öð÷÷–ú8à&inc-CGÆö&önextcÞšõÔ÷~Föê&õ.ö”ýŠöˆÞùŠõ÷FÞöøHö¤$ôèokÞþdstartZ&inc-CS@õ õ0ÿ$Þ&ö(õ~ôföæÞ÷fZÿxÞòhî6ùvøî$ÿ0Þÿÿÿÿîïvî"íþùÞíêð(ÞíÖòLÞïÆ0õ¤øØ$&inc-process-charíŒídîìízí¬ïTVíü$>=þ^Þ,push-back-characterþ*ñ> ö¬þ4ó¤ÜÿNòÚ÷’$ìèòÈùúìÖ÷túzíXûðhíLû"0îbøøX÷ø¦ùfúXúš,î2ìvý‚÷ìd÷€Þñæ&inc-CR@ôÆôÖþÊÞ&õÎõ$ô öŒÞø¤Æ&inc-DELªôjôzþnÞ�õrHó¶õ<üõÞ(- ôÔôèÞBô0ô õ¦ ÷Põ<ôÞ ôœô°÷ºõ<ùTø&inc-CQÞó¦ó¶ýªÞÄô®^òòøÒRchar-to-string0òÄýb$get-tty-characterFó("&inc-meta-charòløLø&òxø:,ìÞï�öâÞì0ììBcess-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 "")))) Done!,úÒùPú$ô:êÄódÞ D elec-linefeed$íøõj ê÷äòHüæÞH&inc-ALT,ò¬ò¼ü°òvòýÞX&inc-CT>òfòvüjÞ$ónñ²ó’ õšó†÷¼Â&inc-special-charž|òûúÞñòûæñ¬ñàûÔÞñÌûÀÞñ¸û¬Þñ¤û˜Þñ�û„Þx&inc-funny-charVÿD<ñâóðûBÞ "<û Þ ñüû Þ~ýÐñâ« L:ind-region.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z; 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 ã¨defunn indent-regionn–if,prefix-argument-provided@setqÿ–"prefix-argumentÿÄÿhÞpÿnB>dotmark(exchange-dot-and-mark$beginning-of-lineÿ¸ save-excursion  narrow-region$beginning-of-file„while, (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 !eobp$ indent-lineýø next-line  widen-region"ÿ¤error-occurred`ÿ86 looking-at[ ]$forward-characteršýBþêeolpdprognocoqor|ýÿ¼p+"current-column:-argÞ (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) ) ) ) ) ) ˆû2ýp|ü^þlü†û2dþ|^ûœüè*re-search-reverseüD(search-reverseü6û> þ˜üâ$üNþ¾úŒÿ ûÒûæüxª&inc-normal-charÞ<üH"<ÿ,ÞübÿÞý&delete-white-space.ü"þî"/þ¾Þ:ûôþÖ.ÿ(þž"*þšÞ`ýþ†4 insert-string ûzþFþ®þ:ÞXü®þ<,insert-characterÞ û"þþVýøÞûÆý ûºþ¬þ˜üâ$üNþ¾úŒÿ ûÒûæüxª&inc-normal-char©ª ªL:ind-region.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z0¸© 0¹L:info.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z; 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-commsetq 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) ) and ": 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 ( (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-mmessage "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 " atch 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-occurr 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) (ed (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-me 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 "") ssage "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 (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 (= ""  &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-strfn) &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 ing)) (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 (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 fer "*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  (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]*\"&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') (loc\)") (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-tal-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 "#o-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-bufinfo-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)  æüüzüžæêý ýDæØà–Þ}æÄà‚Þ)æ°ànÞ]æœäðÞ;æˆùtÞ* ætá~ æTØàær6ÒlÒ| õðøÒÎx þ8øÀ õÒø´æ ö,Þ/åøù\Ï6ÒÒ õ”öèÎ ýÜöÖ -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-forÞ ÿ0ÿ–"recurs-U¨ -VL:info.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zive-editÆû�À#info-enable-editýû8ÞVlocal-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: øî Nãnextend-database-search-listinfo(/emacs/databases/infoX setq-default"info-root-filedir*ÿ¬ &info-fileÿ¨:ÿ‚ &info-nodeTop<ÿH"&info-camefrom.ÿ  &info-doeditÞRdefun:þ†4&infoþêtop�ÿ²Šode: øö  %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? ÞÞyBûhdescribe-commandfÿ¦emacsHget-tty-command&: describe-command ‚ÿ"|describe-variableXÿÿtLget-tty-variable(: describe-variable þ  þ¸mfni<setqÿÂargÞÿÈÿ„ÿÚÞpsave-window-excursion(delete-other-windowsBtempkey$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÷Þöü’$÷Ú Hack Buffer4÷&needs-checkpointingÞ2öÜ$case-fold-searchÞ÷’ û¼ü$ ýœþö$beginning-of-line$get-node-and-file÷šhô�b#info-hõôõÚöõâòò$öõ¼help÷2jô(d #info-hlpõŠõp$õ¨õxcmdsõ„õ@ôöÈhó¾b#info-d"following-charÞ:8ñ*ïîèíúÎÞîøî´ö`ø‚(îàìÈ Up: ð2üü,No menu item on this linevìÒpüœîJ’ïà\ûÞõ&PþdJò´*char-to-stringÞ * menu:0üV*This node has no menu.bïNJûLDût>ò(^* \(ín\w*\):ûÖûðíBXîìó†þ*Þ:8ïlíZí*ë^õ"õõ@ó(óDõ.ôþònõôØòâö`¢óVœ#info-lôºô dot ú õbõ~ end-of-fileVre-search-reverse2;\(\w\w*\),\(\w\w*\),\(\w\w*\);.region-around-matchÞôÿ4ûvÿÄÞóîó¾ûVÿ¤ÞóÎóŠû6ÿ„Þÿû@ó¢ñŠñ¦ôæ(goto-characterþ”úñ´ô#iùÞí:ìöô¢öÄí"ë þFîf´ë\®ö lîp2ýZ,[ ]*(\(\w*\))[ ]*\(\w*\)¶îÒøˆÞì²ì‚ôøhÞ‚îj|òŠìHéÚ"òxì6Dir"òVìDIRì"ëòéb$ür [ ]*\(\w*\)&íø÷®ÞëØë¨éÜ4ú.Missing node specification.ë’ëNòú*ìòñŒë6é~ëhë$éêJé¨Dnfo-@pathòì,ó$ÿà ùXPath: ŠøP ó˜ûÂóÎ ùäÿœ ù„Lwhileˆ!terror-occurred óû<Fre-search-forward"[ ]*\(.[^ ]*\)ýâÞò ñÈùtŒól:ÿj ò”ó(&info-goto-menu-itemL error-message&No such menu item: ñ6ø2\ïºV#info-m#info-fêøë0ë*êæ$ñ^ Footnote: ÖðRñ¸rì`:ø^4ø†.ï:*note \(ê|ý2øø&No such footnote: êDXëîðˆû,Þ:8ìnê\ê,è`öÞê<éøñ¤óÆê$è è(ëhòè^ì#info-pé®é¼éàéœç¦ð’ùhfë4,÷2&õ(  Prev[ious]*:4÷Ú.This node has no previous. ùdçfòì*ñ 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õ`é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ò<ç ÿ¾Þðèhôôfí˜keyc çÔçòç¨í¢6í¸$è ìºä²ærä æfí´æFæ~ÿ˜íæí°æfííÎç<RçÀ:ó¾4fetch-database-entryãìÂÿÐâôÿ"öè æþçäç\lë¼ä`ëêTëø>çØ8ì2Not found, should I create it? ÞÞì"&info-make-nodePçb.copy-region-to-bufferàL6är ߺà:$æÀÛîãZÞÌæý‚2à¨Wrote ÞšåèýPá(ÞxÜörù* ß ß¾ßtJåŠFile: Ûð Node: ވ߮ùLÜÜ:pà0 å"ÜRß„ù"ÝÜÜ:à4äø(Ûd) äÄÛn,ä¸& [body] * menu: ôÈ[*Þàø~Ý8ÛlÝVÚÚlfnlmå$ÿÒäîåÿÖäÈŽòvˆælRêÌ"!=âŒä”*øDêØä–âÊÿÊâ8ä~0æ®äœälâäŠäFâ2åÎlò¼&No information on ($å¸êRþîâDá¸þÜ) þÖ*åxÿãÐâãîárã¸ãÜáŠã’*ãÊ mode-stringãh äFäbîèbê’;"+îŒÞÝ ÝDÚòÜúàZ â„c ݸÝÔÝåúÞ0â *info-stack-syntax-tableBmodify-syntax-entryw -~ ÿ ,ÝH ÝÝ€ÜNåBÞ& define-keymapà. àà"8ß  exit-emacs"ÞÔÿÌ@Þ²$justify-paragraphj.Ûn  right-margin,àÈÿêàæ ä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ášêÂÞâîüÜîÊÞÎã~nodeÞM ÿ àê ß(àÞÛ(äPÞ à,à” þJþj"þ> .,:ÚÚý²Þzè$<=ýˆÞ0Ý $illegal-operationýP ÚlýDöðý8Þ:ÝP,execute-extended-commandÞxÝêÞs ÝêÜâñÞr ÜÎñ<Ü®"redraw-display Üræ@BÜRHasCode îÞ*\| <áÿÄ0ç "preceding-charÞ "î‚[ ]*ç¤.â(ÿ`"îN [ ]*ôåà^áô4íÞ.ðØ(.*node: *\([^, ]*\)$î’ bad formatëìÞçZàþ¢çxévdáj2ðT,.*file:[ ]*\([^, ]*\),áÌë‚Þæðߦßvç"í8 \|\|\'*àäìÎeobpü²(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Ù"ûÖÝ<novalueey "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 "#ing-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 §  L:justify.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z) ) ) ) û�À#info-enable-editýû8ÞVlocal-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: øî N; 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)) (!= (fol£¦ ¤L:justify.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zlowing-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) '!') (= (precedãNdeclare-buffer-specific$paragraph-indentzif6!"is-boundÿš. setq-defaultÿtÞÚdefunÂjustify-paragraphžerror-occurredDsave-excursion$beginning-of-lineæwhile�&þÐbobpþ²eolp@!="following-charÞ@>progn  previous-lineÿjþ<|ÿT"=ÿhÞ@(ÿ„ next-lineþ–®ý–&þÆ ý þòÿÿÞ@‚ÿ0last-colc-col&delete-white-spaceRto-col8+ left-marginüšFü¸þÖþHÞ@,insert-characterÞ –ý�’þ2 ; 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, ; end-of-lineHüHüXeobp$forward-character&ý6 üýbýtý„Þ@,delete-previous-characterþ‚Àû¨†üØ><"preceding-charÞ@Býhý|ÿÎÞ.ýhÿºÞ!ýTÿ¦Þ?4 insert-string ÿÐÿêDúÜbolp&backward-character@setqý<"current-columnp 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. MulûvPüÿ¸üæüüý Þ!þVÿ’üÜÿ¤þ|üÊü¨novalue2messageDone!ÿ¸,Database editing enabled¬úʦÿš&setting-up-for-editüüü:ü ù¸ü(ûäùÐýl@ use-local-map  &info-editing´ûÐ$mode-line-formatŠconcat( INFO edit File: øî Ntiple 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 («¥ ¬L:killring.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zpretend 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 fun-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 ction: ; (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) 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-arg (= (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 (nument (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-markext-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) (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-killDo you really want to kill ýü& characters? [no] ÞÞy6prognðþ(2þþ$previous-commandÞÿÿÿõHÿ´"c-append-region  erase-regionpÿl"next-killbufferHdelete-region-to-buffer killbuffer.üØ  this-commandÞÿÿÿõüªÿÖþæŒ copy-regionZüÚý°þ¶ÞÿÿÿõþÚ:þ~-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 (This node has no up. ÷|å~ñè¸Vå®Pè¬ò|ÿ.copy-region-to-bufferÿ4ü ÿLÞÿÿÿõ¬þ†¦üfüvü,ü<0append-region-to-bufferþÒ^ýâ(exchange-dot-and-mark$ yank-bufferþ€ ÿ"þt8append-next-killû<þhÞÿÿÿõVunkillset-mark ÿfýúúæþÞÿÿÿçv unkill-popRûûêüðÞÿÿÿç8ü¾ ýxýœ&previous-killbufferÿ>fý¤ þL:killring.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zset-up-killbufferBú8ý@6û¸KB-ringpos’ü¸.ùðÿÞ"+ÿÄÞXú"4>ÿœnringsùˆÿvùšÿjÿÒÿrþà ù^ÿLùpÿ@ÞFùž"<ÿÞùÿÿ*þøÿ`þ † forward-linesfù2P&$&kill-lines-magicbolp¤øÜ€error-occurred^ã 0defunè region-sizeval`setqÿÖB-dotmarkTif$>=ÿbÞÿTÿ‚Þÿ@¸ kill-regionšÿ’L|><=  &MaxKillSizeÞÿÆþ ÿÐè=Àsubstr–get-tty-stringtconcat.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ö.ûNÞ. setq-defaultû Þ ÿ”úž ÿˆ÷¬Pôø6!"is-boundû®ÿ‚; 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|><=  &MaxKillSizeÞÿÆþ ÿÐè=Àsubstr–get-tty-stringtconcat.û¢Þ,ô¨ÿ´ ÿÂõ8ÿVõ,ÞLóÐF set-nrings(ü®TóòúNHargÞ*Number of kill rings: óžùŒù²ùîÞ®whileù®ùTÞ óRù@ódù4ÞøÚ(temp-use-bufferö4ó&needs-checkpointingÞ þ¾ù,8 bind-to-keyóZ"ÿÌõòw"ÿªõÐ�¢ žL:learn.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zW ÿˆúÚ "ÿhûXk"ÿFû6K"ÿ$ûPd"ÿû.D"þàûfh"þ¾ûDH"þœû" þzûd þZûŠ þ:ûj"þõx ýøõŽ"ýØõÄy"ý¶õ¢Yteãœdefun„learnlsave-window-excursion(delete-other-windowsFswitch-to-buffer"emacs-tutorial  erase-bufferN insert-file0/emacs/databases/tutorial.txtFsetq&needs-checkpointingÞ"recursive-editÀsubstr–get-tty-stringtconcat.£ L:learn.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zì¡ íL:lines.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z (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þÌþZ"+þ@Þþžþ\þ°(goto-characterþ.þdþ ÞdþÎ>þà&þî þüÿ ÿ4þ6ýŽ þ ý²ÿDý¦ÞLmessageLine ýfˆif">ýÞ<concat in page üÚ, "-ý Þ of  bu 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-commandÞÿÿÿõüªÿÖþæŒ copy-regionZüÚý°þ¶ÞÿÿÿõþÚ:þ~ffer-size charactersˆbeginning-of-next-line^þÆ:ý.4prefix-argument-loop ý"þ end-of-fileange-dot-and-mark$ yank-bufferþ€ ÿ"þt8append-next-killû<þhÞÿÿÿõVunkillset-mark ÿfýúúæþÞÿÿÿçv unkill-popRûûêüðÞÿÿÿç8ü¾ ýxýœ&previous-killbufferÿ>f¯  °L:lines.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z¸Ÿ ¹L:lisp.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zã®defundisplay-line-numberorigpagelinepagetop:save-excursion4setqÿhdot$beginning-of-fileÿ¬ÿ:Þÿ˜ÿVÿªúwhile¢&l!Xerror-occurred6search-forward "<=þöþN. (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-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 (dparen-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)) (ot)) (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 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)) '%') (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  (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 (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ãÀdefun² paren-pausedotinstabstempTifeolp&delete-white-space6setqÿfbolpÿÎÿ,ÿ&,insert-characterÞ)„save-excursionbÿ‚|Terror-occurred2ÿ2þÀ&ucb-backward-paren!þ€H 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-syntaxmessage.Can't find balancing paren’progn¢þ2ýú–þîdescol.þZÿä"current-column(goto-characterýn to-colÿzØý�"dot-is-visible"sit-forÞŽÿ$beginning-of-lineset-mark end-of-line*þT$region-to-string` nl-indentcol-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) l rings: ")) (setq ringpos (+ nrings 1)) (while (> ringpos 1)ü>balü˜ü¸üü.ü¦ÿ´"current-indent$üìþâ\while <ýöÿN$forward-character¼û¼8 looking-atelseif.re-indent-thenelseÞBü@ÿ˜thenÿzelseÿ”Þ‚ûÈ|úú@ûHþr4 ucb-backward-balanced-paren-line6ün0ú®"=þÞÿÿÿÿޝž °L:lisp.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zú†úòúÎýÜÞnü ú´ýÂü^þrPúH0ÿž"following-charÞ(.úfýt"+ýZÞœúÔþ,prog þletýòbind ýÔlambdaý´caseq ùœüªÿ:üžÞ0úâ>use-syntax-tablewordall$forward-skip-word(forward-skip-non-word.ÿz(Current-syntax-tablerøj:ùT >ø÷üýšþÞ; ø~ûŒþû€Þø^ûlúzù²øFûTû¤ûÌûÞùÞû6ûìD÷Âø¬ üüp ûøü‚ ÷òûý�úôÞnewline ù¸úÆûÞúºú4÷šú¨úø÷ÐÞ)Œ÷&øR€øÔz÷>÷þûV(Ifû:(if6÷$ú2*üÂøÈargÞøÆòÜ"comment-column*ð´ left-marginÿ¾.ðŠ  right-marginÞM<ð\  prefix-string; & insert-stringÿÎðBÞ;�ml-parenðÞ(>ÿ¦8get-tty-command (ïÌÞ novalueV lisp-mode2local-bind-to-keyîbÞ)<ÿÒ  forward-parenmark(delete-next-characterö‚ ø¢ù°Ðre-indent-lineøäöH¢ö ú\útúˆÞöä ú<ú¨ ú0úºú\Þ÷ bobp8÷d&backward-characterøÊÿÀ indent-sexprstartendrõìlõöpúnúÔÞ(R error-message2Not sitting on left parenthesisúöfôúÿRôR$)>ÿ–"backward-paren( ÿXñ† "ÿ8ü’)"ÿüÌ("þôúî="þÒúj"þ°÷Ti"þŽû`["þlû|^x] þJü^;<íf mode-stringlisp ó¸ÿæíô6ÿÔýšð mlisp-modeý�ópucb-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òŽmlispìÄóÜÿà@ýv$expand-mlisp-word~Dý6(execute-mlisp-buffer`ì.þÌÿJüª ò¤ÿ8@modify-syntax-entry() ( ÿÄ)( ) ÿ¤" ' ÿ„" " ÿd\ \0ÿD*w -+!$%^&=_~:/?|*<> ñ¨ýÖ ÿÿ( þüÿ< þð" |÷äûÎÞ=ü6÷Êû´Þ%üì÷°ûšÞfþ’&ý@  Bad = option> back-functionþ€^(deJ forw-function*re-search-forwardÿ¨\ forward-sexpr6search-forward(ü¦^backward-sexpr6search-reverse)ò :semi-colon-commentð¬ð¼úòZ:ðš ñìñ( þÐÿP þÄÿd.þ¸(w -+!$%^&=_~:/?*<> ññ<4þ~.w -+!$%^&=_~:/?*<>|()"';(declare-globalñLmodify-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) l rings: ")) (setq ringpos (+ nrings 1)) (while (> ringpos 1)ô� õL:mark-ring.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zã‚declare-global mark-numbertop-mark"mark-ring-sizeMark-0Mark-1Mark-2Mark-3Mark-4Mark-5Mark-6Mark-7Mark-8Mark-9&setqþŒÞÿÞþ–þÎÿÌþ Þ defun¾mark-c(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-liycle-ringœÿ~þ6�concatMark-^ÿ@ýÚR%8+ý¬argÞýÂÊ mark-push’error-occurredpexecute-mlisp-lineJÿ(setq þÂÞ (mark))set-markmark-popnýèÿê ÿ<ü”Öifÿœprogn& pone 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))) ) Øý�"dot-is-visible"sit-forÞŽÿ$beginning-of-lineset-mark end-of-line*þT$region-to-string` nl-indentcolp-to-bufferÿ„(goto-characterÿ\(exchange-dot-and-markýŠÞÿÿÿÿÿ¦mark^ mark-set/pop>ÿ,prefix-argument-providedþ”ýÄelseif.re-indent-thenelseÞBü@ÿ˜thenÿzelseÿ”Þ‚ûÈ|úú@ûHþr4 ucb-backward-balanced-paren-line6ün0ú®"=þÞÿÿÿÿŽëœ ìL:mark-ring.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zµ› ¶L: normal-mode.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z(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) )) Mark-2Mark-3Mark-4Mark-5Mark-6Mark-7Mark-8Mark-9&setqþŒÞÿÞþ–þÎÿÌþ Þ defun¾mark-c(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 globQš RL: normal-mode.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zal 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ãPdefun8 normal-mode@setq  right-marginÞè,ÿÄ left-marginÞ*use-abbrev-tableÿV,remove-all-local-bindings>ÿB mode-stringNormalnovalueMark-8Mark-9&setqþŒÞÿÞþ–þÎÿÌþ Þ defun¾mark-c 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 bp —™  ˜L:!occur.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zp) (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: ã àprognNdeclare-global,&occurrences-extra-linesjif.=ÿš&setqÿ|Þ defun¤ occurrences occ-stringcbuf-namebppo-countl-counttemp-pos  Occur-String þÔÿŽþÈÿœÞH" 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þ´buf-name&current-buffer-name"þlÿdot`þJþ Tget-tty-string2Search for all occurrences of: Bswitch-to-buffer excursions  erase-buffer ÿ¢þØ(goto-characterþ2while^!Jerror-occurred(search-forwardý@.üÞý˜"+Þýv 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òŽü°ý„ü4$beginning-of-lineüzýhþrÿ">ý(Þ &PL-Begin.ü$üø"-üÞÞset-mark þbüÈ &NL-Beginû²ü ýJû ütû$@þ>ÿ*ü\Þÿª ûnüBÿNü6Þ0ûNüX$region-to-string ý8ýV end-of-file®if"<ÞúRv ᘠ âL:!occur.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zprognD insert-string$----------------newline ÿ¦ûP üTûŠ ü¶û ü<üZZsave-excursionþæ,ÿN&<<>>ÿfØù¼$mode-line-format®concatFound ú$ occurrences of 'ù�&' after position: ù² in: ú@$beginning-of-file€ûpû‚eobplmessageR?--More?--(space=next page, ^G=abort, anything else is executed)0ø0ø¤$get-tty-characterÀý÷ÌønÞ Tý.  end-of-window.üÐ ú‚ÿ next-page÷døÞüp8üÀ,push-back-character÷Æü8 ùZø� ù¼÷Ø÷è(ûX next-lineúf,ú¾  previous-lineú:c-string "' after position: '– (L:#paragraphs.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zo— pL:"paragraphs.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zãîifX!Dis-bound(paragraph-delimiters€progn(declare-globalÿ¢@setqÿ„"^ \|^[@.' ].* üdefunäforward-paragraph$beginning-of-line*re-search-forwardþØrwhile2 looking-at(search-forwardÿÎ<ÿ6(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 backward-paragraphÿ  previous-lineVÿ@>& ÿ>ýîý¸bobpýòÿšþ¢výrLerror-occurred*re-search-reverseþÔ$beginning-of-fileþt þ†þž þ¬þ’ ÿ¢þØ(goto-characterþ2while^!Jerror-occurred(search-forwardý@.üÞý˜"+Þýv(re-search-reverse "")) (beginning-of-file)) (while (looking-at "") (search-forward ""))) ) þ Tget-tty-string2Search for all occurrences of: Bswitch-to-buffer excursions  erase-buffer ÿ¢þØ(goto-characterþ2while^!Jerror-occurred(search-forwardý@.üÞý˜"+ÞývÙ• ÚL:#profile.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z(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") (setq quick-redisplay 1) (setq default-mode-line-format " %[Buffer: %b%* File: %f %M (%m) %p%]") (setq backup-before-writing 1) (setq backup-by-copying-when-linked 1) (load "killring") (load "buffer-edit") (setqsetq"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ýt*.c"ÿÈ-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") verseþÔ$beginning-of-fileþt þ†þž þ¬þ’ ÿ¢þØ(goto-characterþ2while^!Jerror-occurred(search-forwardý@.üÞý˜"+ÞývýR*.h$ÿ¦ý´*.ml"ÿ‚ýT*.l*ÿ`ýn *.emacs_pro.ü$üø"-üÞÞset-mark þbüÈ &NL-Beginû²ü ýJû ütû$@þ>ÿ*ü\Þÿª ûnüBÿNü6Þ0ûNüX$region-to-string ý8ýV end-of-file®if"<ÞúRv‹” ŒL:$profile.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zŒ“ �L:$pwd.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zã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ÿÆB(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-strinmessageÿÐýø¨&X=0substrþ¸ÞÿÿÿÿÞ/<> lengthþ`Þÿ„þLÞÞÿÿÿÿþ6þ ¾chddirpþNÿèdüêþ: get-tty-file: chd argÞcdÿhýLÒÿâÿVý  still-lookingDýŠÿ$8ü&ýZÿ@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)) ) ing ý8ýV end-of-file®if"<ÞúRv: cd ÿ\ÞFûî þþÚ ý þº~hû¨d|(ý´ýÂþzÞÞýÖ(ýŒýšþRÞÞÿŒXü–þêLerror-occurred*change-directoryýä¦save-excursionBtemp-use-buffer  Scratch Stuff4ûÚ&needs-checkpointingÞ  erase-buffer& insert-stringúT$s’ tL:%pwd.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zbeginning-of-file¤while†progn<re-search-forward[^:]*.region-around-matchÞ0ú¢ùø$region-to-string  erase-region(delete-next-characterbú*ü~Vý˜Pý´JøºúÚùbüÐûš,concatù6úæûn*ú‚üøzeolpù(¨ø@ûìN error-message.ãœifJ!6is-boundcdpath< setq-defaultÿÊ.:~`defunHpathpwdnovaluevÿ¤àÿÎcwdcueˆþÐ interactive:setqÿ² : pwd => *ÿÊÿŠ : path => 0ÿ ÿJ$working-directoryðThere is no such directoryNþHquietly-read-abbrev-file.abbrevsøzs executed)0ø0ø¤$get-tty-characterÀý÷ÌønÞ Tý.  end-of-window.üÐ ú‚ÿ next-page÷døÞüp8üÀ,push-back-character÷Æü8 ùZø� ù¼÷Ø÷è(ûX next-lineúf,ú¾  previous-lineú:c-string "' after position: à‘ áL:&readonly.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zþþ,ÿ6&Buffer is read-onlynovaluesubstrþ¸ÞÿÿÿÿÞ/<> lengthþ`Þÿ„þLÞÞÿÿÿÿþ6þ ¾chddirpþNÿèdüêþ: get-tty-file: chd argÞcdÿhýLÒÿâÿVý  still-lookingDýŠÿ$8ü&ýZÿ@; 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ðO� PL:'sentences.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zI� JL:&readonly.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z(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)) ãHdefun0 read-onlyúifÿÒ(progn&setqÿœÞ¦ÿªx=Nsubstr$mode-line-formatÞÿÿÿýÞ RO(ÿ`ÿ´ÿ”ÿ¨ÞÞÿÿÿýDmessage*Buffer is now writable¶þÜþîþ˜Þpþ¦8!=þþÿÞÿÿÿýÞÿ02þœþð&concatþÐ (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 argÞcdÿhýLÒÿâÿVý  still-lookingDýŠÿ$8ü&ýZÿ@ÍŽ ÎL:(sentences.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z; 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ÿÎÞÿØãîifV!Bis-bound&sentence-delimiters‚progn(declare-globalÿ¤Bsetqÿ†$[.!?][ ][ ]*defunèforward-sentenceÄprefix-argument-loop*re-search-forwardþÔrwhile2 looking-at(search-forwardÿÎÞÿØéŒ êL:(shift.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zbackward-sentencestpossearchp‚þä"þ`ÿÆdot"preceding-charvýpLerror-occurred*re-search-reverseýj$beginning-of-fileý¦ÿ$ÿJþd þvþŽ þœþ‚’üÊ">=ÿ þÀjý(goto-characterþªütÿ ÿ$þÿBýÒ ýäýü þ ýðokingDýŠÿ$8ü&ýZÿ@ãjdefunšdot-to-left-margintsetq left-offset>-"current-columnÞ^dot-to-right-margin8ÿjÿ|,ÿ”ÿ¢  window-widthZ dot-to-centre:ÿÿ$.ÿ<ÿJ"/ÿ˜Þ: bind-to-keyþ”<"ÿÊÿ >"ÿ¨ÿH=ÿÎÞÿØ–� —L:(shift.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z×q ØL:)srccom.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z; 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ãxdefun:srccomm1size4setqÿ¾dotÿÐÿ²Þ®whileh&,!eobp(compare-stringsÿ*.ÿ<ÿ"*ÿÞ„if ÿlÿzbÿ4">þºÞ ÿdþ¦.þ¸þš"/þ€Þxÿ€ =þŽ 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 bþ<R error-message2First characters are different!&þ²csizes1s2cm1cm2*ýœÿŽargÞset-markýVÿŒýhBgoto-character +ÿJÿ0ýÿ $region-to-string next-windowÿFü®þúüÀÿ\ÿxþâþ‚ü„þ¤ÿ††ýhýìell 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$þvþ†Bprogn"previous-windowÞ,ÿ þÒþ^ÿÈ þÀþ6Þ)) (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$yp zL:*srccom.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zÂo ÃL:+tags.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z; 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") (messame)) (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 ": addge "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-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 (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-fo (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 (argrward 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-na 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-linemessage  New tag file$beginning-of-fileÜýîÖvisit-tag-tabletagfnbsetqÿÔDargÞ&: visit-tag-table :save-excursion ýbý~ þrÿVàýÚgoto-tagfnstrposrestartþêÿäÞäüò@!,prefix-arg) (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) ) )) ô6ÿÔýšð mlisp-modeý�ópument-providedžýN„þŠü xconcat[^]*Dquote,þPÞ : goto-tag þÿÞ”þTû®üþàýv*re-search-forwardû8$beginning-of-line*ÿ¶$\([^]*\)\(.*\).region-around-matchÞ0ý.ýü$region-to-stringÿ¦Þ.üðýÔ"-ÿ²Þ,dý$>re-search-'n (L:,tags.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zreverse\(.*\)ÿ&Þüpý(ÿF$ visit-fileüþ(goto-characterý\ú..úè(search-forwardü¸(search-reverseúfþ(line-to-top-of-window¶ù2° find-pos-strý¼>û\ü@2+dotÞset-mark end-of-lineúäû²ýº¬ø|¦ store-pos-str,ãDdeclare-global"last-search-tagdefunþ to-tag-buffer:temp-use-buffer*TAG*¤ifŒ&:= buffer-sizeÞ>ÿÊ$current-file-nameprognÆÿJVerror-occurred4 read-file.tagsjÿ�*write-named-fileÿÂ:insert-characterÞ& insert-stringû4ÿ²Þ ÿÐû0newlineÞ÷ÐØadd-tag¾úhúêúÎú²þpùèú øb÷˜ùlv÷æDø >ûî8û>ú\[^]*,ø>ùþÌÞ þêúÿþŒøêLöòFadd-tag*úùôýœùv öð÷ þ:êö¦ä add-all-tagspatternùzFø¶ÿÞ:øÈÞ ,: add-all-tags (pattern) øpù(öêøÀöôön2÷(,üD&ùÆþŒøò ,öØ÷°ýfÞ ý„ø¸ý¸�ö¬üÎdwhile0ö"following-charÞ next-line  erase-region2÷À,ö4öî ÿnÞ ùnþfýônovalue*ô¼$add-typed-tagsextþ<öÎÿâ0substrõ.back"recursive-editdelete-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) ) )) ô6ÿÔýšð mlisp-modeý�ópÞÿÿÿþÞªý ¤ô¨"ôÌÿš.l^(def"ô’ÿ`.c  ^[A-z].*(.*)"ôPÿml"^(defun[ ]*("ô þÚss2@section\|@chapter\|@subsection"ó¸þ†.p&function\|procedureBerror*ö˜ Can't tag ótò’útag-fileõ„DôÀõx8ôÒÞ* )m  *L:-tek4404.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z: tag-file (filename) .óÞ(õüTagging õfsave-window-excursion>ó ÷ÆôØý & delete-bufferô¬„ñ’~recompute-all-tagsXÿrñxóL:ò†4ûÆÞ õÆöüö2Þ þžöX ò¨ò„ÐñÊmake-tag-tablefnsPó&ÿèDó8Þ6": make-tag-table (from filenames) <þŒ ð²*TEMP* ; Support and default bindings for the TEK4404 mouse and joydisk (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 x y (setq y (convert-to-decimal)) ; get row value (get-tty-character) ; throw away ';' (setq x (convert-to-decimal)) ; get column value (get-tty-character) ; throw away the ESC (get-tty-character) ; throw away t 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 he BACKSLASH (move-dot-to-x-y x y)) (mouse-set-mark (set-mark) (move-dot-to-mouse) (sit-for 10) (exchange-dot-and-mark) (message "Mark set")) (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 ; Bind the mouse buttons (bind-to-key "move-dot-to-mouse " "\ePA1D") ; left mouse button (bind-to-key "mouse-set-mark" "\ePB1D") ; shifted left mouse button (bind-to-key "mouse-ignore-button" "\ePA2D") ; middle mouse button (bind-to-key "mouse-ignore-button" "\ePB2D") ; shifted middle mouse button (bind-to-key "mouse-ignore-button" "\ePA3D") ; right mouse button (bind-to-key "mouse-ignore-button" "\ePB3D") ; shifted right mouse button ; This could be continued for all mouse button combinations ; Bind the break key so that is aborts (bind-to-key "illegal ; row,column coords ; (TEKSGCRT) .l^(def"ô’ÿ`.c  ^[A-z].*(.*)"ôPÿml"^(defun[ ]*("ô þÚss2@section\|@chapter\|@subsection"ó¸þ†.p&function\|procedureBerror*ö˜ Can't tag ótò’útag-fileõ„DôÀõx8ôÒÞ*-operation" "\eO@") ; break ; 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 joydis½l ¾L:.tek4404.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zk 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 ; 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 ;;; The following section is included to show how to turn on emulator ;;; modes and mousã¨defun¬convert-to-decimalnumch&setqÿÀÞwhile†&N>=0ÿœÿ€$get-tty-characterÞ0$<=ÿ8Þ9dÿ@ÿX+"-þöÞ0"*þ¾Þ ,push-back-characterþ þ„°move-dot-to-mousexe functions from a host. This is wired in to the ;;; Trm4404 driver and not needed when running the 4404 resident emacs. ; Now send the strings that set up the terminal emulator modes ; (send-string-to-terminal "\e>") ; turn on TEKKPAM ; (send-string-to-terminal "\e[?1h") ; turn on TEKCKM ; (send-string-to-terminal "\eQ1M") ; enable graphics cursor and ; tie it to mouse position ; (TEKEGC) ; (send-string-to-terminal "\eQ1;1J") ; enable mouse to return ; button presses and yþ^ÿêþþÀþFÿ¾ýèþ¨þ¢.move-dot-to-x-yÿ„ÿ’Ämouse-set-markset-markÿ"sit-forÞ (exchange-dot-and-mark6messageMark setpmouse-ignore-buttontüüÿêüžý^üäÿÒü†ýFý@< bind-to-keyþPA1D$ÿÈþŽ!PB1D$ÿ¤ÿ.PA2D$ÿ€ÿ PB2D$ÿ\þæPA3D$ÿ8þÂPB3D@ÿ$illegal-operationO@<þÔ  previous-lineOA8þ˜ next-lineOBBþ`&backward-characterOD@þ$forward-characterOC<ýÞ  previous-pageen" "\^xo") (setq mode-string "text-mode-2") (novalue) ) ) (defun (new-justify (error-occurred (save-excursion (end-of-line) (new-back-to-point-setting-margin) (if (! (eolp)) (while ; for each line in the current paragraph (progn (while ; while this line is too long (progn (end-of-line) (> (current-column) right-margin)) (while ; back up to a space or tab (& (| (> (current-column) right-margin) O!8ý¢ next-pageO"<ýj  backward-wordO$<ý.  forward-wordO#"üòýâO1"üÐýÀO2"ü®ýžO4"üŒý|O3@üj$beginning-of-fileOE:ü* end-of-fileOF joydisk left (bind-to-key "forward-word" "\eO#") ; shift joydis (& (!= (preceding-char) ' ') (!= (preceding-char) ' '))) (! (bolp))) (backward-character) ) (if (bolp) ; If line is all one word (next-line); forget about justifying it (progn ; else delete whitespace just found (delete-previous-character) (delete-white-space) (newline) ; and break the line (to-col left-margin) (insert-string prefix-string) ) ) ) ; end while line isÆc ÇL:/text-mode-2.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z too long (beginning-of-line) ; try the next line (next-line) (if (eolp) ; This is the end of the test in the ; while loop that goes through all ; lines in the current paragraph. ; If we pass, we're not on the blank ; line at the end (in open mode) or ; on the point line of the next ; paragraph (in closed mode) 0 (save-excursion (while (! (= (current-column) (current-indent(defun (text-mode-2 (declare-global new-point-char) (setq new-point-char '>') (declare-global new-open-mode) (setq new-open-mode 1) (declare-global new-prefix-string) (setq new-prefix-string " ") (setq left-margin 1) (setq right-margin 77) (local-bind-to-key "new-make-point" new-point-char) (local-bind-to-key "new-indent-line" "\ei") (local-bind-to-key "new-dedent-line" "\eu") (local-bind-to-key "new-justify" "\ej") (local-bind-to-key "new-close" "\^xc") (local-bind-to-key "new-op))) (forward-character)) (! (new-at-point)) ) ) ) (beginning-of-line) (delete-previous-character) ; Tack this non-blank ; line onto the ; previous one. (delete-white-space) (insert-string " ") ) ; end while [for each line...] ) ; end if ! eolp ) ; end save-excursion ) ) (new-back-to-point-setting-margin (if ; if not at last point (& (! (bobp)) (! (new-at-point))! ) (while ; then go back to last point (if (progn (beginning-of-line) (bobp)) 0 ; quit while loop if at start of buffer (progn ; else check the first printing character (while (! (= (current-column) (current-indent))) (forward-character)) (! (new-at-point))) ) ; end of while test (previous-line) ) ) ; end if not at last point (setq prefix-string new-prefix-string); SIDE EFFECT!!! (setq left-margin (current-indent)); SIDE EFFECT!re (save-excursion (while (& (! (new-at-point)) (! (bobp)) ) (backward-character) ) (! (new-at-point)) ) ) ) (first-line (save-excursion (beginning-of-line) (bobp) ) ) (blankline (save-excursion (end-of-line) (= (current-column) (current-indent)) ) ) (new-at-point (& (= (following-char) new-point-char) (= (current-column) (current-indent))) ) (new-dedent-line (beginning-of-line) (to-col (- !! ) (new-forward-to-no-more-indented-point (while ; move ahead to next point with level <= col (& (! (eobp)) (! (& (new-at-point) (<= (current-indent) left-margin) ) ) ) (next-line) (beginning-of-line) (while (! (= (current-column) (current-indent))) (forward-character)) ) ) (new-back-to-end-of-non-blank-line (while (& (! (blankline)) (! (bobp)) ) (previous-line) ) (end-of-line) ) (n(current-indent) 4)) (insert-string ".") (delete-white-space) (delete-previous-character) (end-of-line) (if (> left-margin 3) (setq left-margin (- left-margin 4)) ) ) (new-indent-line (beginning-of-line) (to-col (+ (current-indent) 4)) (insert-string ".") (delete-white-space) (delete-previous-character) (end-of-line) (setq left-margin (+ left-margin 4)) ) (new-close (setq new-open-mode 0) (save-excursion (beginning-of-file) (while (! (ew-make-point (if (new-making-first-point) (progn ; Making first point (setq left-margin 1) (setq prefix-string new-prefix-string) (while (& (! (new-at-point)) (! (eobp)) ) (forward-character) ) (if (! (bolp)) (newline) (newline-and-backup) ) (if new-open-mode (newline-and-backup)) ) (progn ; Not making first point (new-back-to-point-setting-margin) (end-of-line) (new-forward-to-no-more-indented-point) (beginning-of-line) (previoueobp)) (beginning-of-line) (if (blankline) (kill-to-end-of-line) (next-line) ) ) ) ) (new-open col (setq col left-margin) (setq new-open-mode 1) (save-excursion (end-of-file) (while (progn (new-back-to-point-setting-margin) (! (bobp)) ) (previous-line) (end-of-line) (if (! (blankline)) (newline)) ) (if (blankline) (kill-to-end-of-line)) ) (setq left-margin col) ) ) (setq ringpos (+ nrings 1)) (while (> ringpos 1)s-line) ; Back up (while (& (blankline) (! (first-line)) ) (previous-line) ) (end-of-line) (newline) ; and sit in the middle of 2 newlines (if new-open-mode (newline)) ) ) ; end if (to-col left-margin) (insert-character new-point-char) (insert-character ' ') ; The convention calls for a space after the ; point char ) (new-making-first-point ; returns true if dot is positioned before ; the first point. (if (bobp) 1 ; This should really be hew- xL:0text-mode-2.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z"ã6defun text-mode-2Ddeclare-global"new-point-char&setqÿÊÞ>&ÿš  new-open-modeÿ¸ÿÞÞ*ÿ`$new-prefix-string"ÿzÿÚ ,ÿX left-marginÞ.ÿ,  right-marginÞMLlocal-bind-to-key"new-make-pointþ–>ÿ¸"new-indent-line ûôÿ&  previous-lineøTþ$ø®øBøîþ–Æ%new-forward-to-no-more-indented-pointŽû˜Xüû`eobp4ûB.ûìþn"<=þøRü¢ýŠ$û.úüýÈûrýÖýòz!new-back-to-end-of-non-blank-line@úÖ4ûT"úž blankline ú|þþŒúžøTúH*new-making-first-point¦úrö´÷`Þö üpöú*ú.ú¬ i>ÿz"new-dedent-lineu:ÿ< new-justifyj8ÿ new-closec8þÊnew-openo*ýŒ mode-stringýnovalue @üÎ6ÿ0error-occurredsave-excursion end-of-line4 new-back-to-point-setting-marginšif,ùöý( ùêþŽüì>ù ùÒûûÎ&newline-and-backupù„öLÿÒ~ùÌù8ùýÖûòý†<ù�0úþÄ$ùR first-lineýJøÀû*ùõÎû û,öB*insert-characterõDÿÚÞ VþrPøªüVÞ<ø"*øÒùP øšûÌ øŽü$ùä ø|û®ÿ(÷àúæûú$ýÄ÷È÷äûøÂû&LûlFøÞ.úú"following-charôjúÌ!eolpXwhileprogn&ÿÔHÿæÿ4<>"current-columnüÊÞÿ†²&€|ÿšÿ¨üŠZÿÊ@!="preceding-charÞ ÿÄÿÔÞ þÀbolp&backward-characterúþfÿÀ next-lineÒþ˜,delete-previous-character&delete-white-spaceøvúÚšö úd(ùþ"-ú®Þùö.ù|ùJ÷&:÷r÷ðôºÞ óúô¦ÿ�ôšÞrõ2ùÊ(ùd"+úÞ ù\ÿjøðø¾öš óˆô4ÿ¸ô(Þ”õvóbóˆÞzö8$beginning-of-filePöÄ ö’û6ù8öjûæ&kill-to-end-of-line÷âÌõcolò¸ÿèó^ò¦òÌÞxõ|newline to-colû@ insert-string  prefix-string$beginning-of-lineþò¬ýBýfÞ˜üºlýjBý8<=ý "current-indent$forward-character&üÒ  new-at-pointÿ.þ\þ‚þÜ Üü6²üd0ý$ünbobp üPÿ‚|üpVü(ü|þ´ÿÈÞ6üb$üDüþÞüˆþìÿ end-of-fileBöö õŒ õÐùfùàõVõ¢ õ²û÷®õŠûÿ$òòÆÿDng new-prefix-string) (while (& (! (new-at-point)) (! (eobp)) ) (forward-character) ) (if (! (bolp)) (newline) (newline-and-backup) ) (if new-open-mode (newline-and-backup)) ) (progn ; Not making first point (new-back-to-point-setting-margin) (end-of-line) (new-forward-to-no-more-indented-point) (beginning-of-line) (previou";, <L:1text-mode.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zerror-occurred"text-mode-hooknovalueÿ< new-justifyj8ÿ new-closec8þÊnew-openo*ýŒ mode-stringýnovalue @üÎ6ÿ0error-occurredsave-excursion end-of-line4 new-back-to-point-setting-marginšif,(defun (text-mode (remove-all-local-bindings) (local-bind-to-key "justify-paragraph" "j") (setq right-margin 77) (setq mode-string "Text") (setq case-fold-search 1) (use-syntax-table "text-mode") (use-abbrev-table "text-mode") (setq left-margin 1) (error-occurred (text-mode-hook)) (novalue) ) ) left-marginÞ.ÿ,  right-marginÞMLlocal-bind-to-key"new-make-pointþ–>ÿ¸"new-indent-lineÀ ÁL:5time.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zK LL:4text-mode.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z(declare-global &&old_mode_string) (declare-global &&ret_routine) (declare-global &&local_buffer) (defun (time (if (= &&ret_routine "") (progn (setq &&local_buffer (current-buffer-name)) (setq &&old_mode_string mode-string) (describe-bindings) (save-excursion (temp-use-buffer "Help") (beginning-of-file) (search-forward "^M") (forward-word) (backward-word) (set-mark) (forward-word) (setq &&ret_routine (region-to-string))) (pop-to-buffer &&local_buffer) ãJdefun2 text-mode,remove-all-local-bindings^local-bind-to-key$justify-paragraphj@setq  right-marginÞM<ÿÄ mode-stringText2ÿˆ$case-fold-searchÞ*use-syntax-tableþŒ*use-abbrev-tableþb,ÿ left-marginÞD(delete-other-windows) (local-bind-to-key "change-time" "\n") (local-bind-to-key &&ret_routine "\^X\^T") (setq mode-string (substr (current-time) 12 5)) (novalue))))) (defun (change-time (setq mode-string (substr (current-time) 12 5)) (execute-string "\^X\^T"))) (defun (undo-time (setq mode-string &&old_mode_string) (remove-local-binding "\^X\^T") (local-bind-to-key &&ret_routine "\^M") (setq &&ret_routine "") (novalue))) to-point-setting-marginšif,# L:5time.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zZ [L:6transp.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zãFdeclare-global$&&old_mode_string&ÿ¾  &&ret_routine(ÿ˜"&&local_bufferždefun†timenif.=ÿb*prognDsetqÿ>&current-buffer-name*ÿÀþ¼ mode-string$describe-bindingsJsave-excursion:temp-use-buffer(defun (transpose-char-smart (if (eolp) (transpose-characters) (progn (forward-character) (transpose-characters) (backward-character)))) (transpose-word-smart (if (eolp) (transpose-word) (progn (forward-word) (transpose-word) (backward-word))))) (progn ;;; This is a Semi-Auto-Frobic Transpose neato object library. ;;; It defines two functions: (which do the obvious things) Transpose-line Transpose-word ;;; It also declares 3 Global Variables toHelp$beginning-of-file8search-forward^M  forward-word  backward-wordset-markÿ¨0þXý~$region-to-string& pop-to-bufferýZ(delete-other-windowsVlocal-bind-to-key change-time "ÿ®üªVýbý¬Jsubstr  curr control the Transpose line ;;; function and one global variable for communication to another function. (declare-global &Default-Transpose-Direction &Default-Transpose-Follow &Default-Transpose-Magic &Column-To-Be-At) (setq &Default-Transpose-Direction 1) (setq &Default-Transpose-Follow 0) (setq &Default-Transpose-Magic 0) (setq &Column-To-Be-At 1) ;;; What the Global Transpose variables mean: ;;; &Default-Transpose-Direction: (default 1) ;;; Tells Transpose-line which other linent-timeÞ Þnovalue\üfVÿ:(üæý0ÿˆÿœÞ Þ(execute-stringÿ(Œü † undo-timeütü¾ûj.remove-local-bindingþÆþ^ûZþ”ü"ûHûêÿ ÿÄÿÔÞ þÀbolp&backward-characterúþfÿÀ next-lineÒþ˜,delete-previous-character&delete-white-spacee to transpose with the current ;;; one. If this is set to 1 (actually your favorite non-zero number ;;; will do) then Transpose-line will use the line above the current one ;;; and if it is 0 Transpose-line will use the line below the current ;;; one. ;;; ;;; &Default-Transpose-Follow: (default 0) ;;; If this is set Non-zero it will cause Transpose-line to leave ;;; the cursor(dot) on the line that got transposed, and if this is ;;; set to Zero it will stay at the same place in the file! ;;; &Default#-Transpose-Magic: (default 0) ;;; This variable controlls some magic inside the Transpose Line ;;; function. If it is set to zero, Transpose-line will behave as ;;; controlled by the settings of the above variables. If this is set ;;; Non-Zero then the magic is controlled by the cursor position when ;;; Transpose-line is invoked. If the cursor(dot) is somewhere in the ;;; middle of a line, then it behaves as if this variable were 0. If ;;; the cursor is at the end of a line, or at the beginning of ane) transpose-up ; implicitly (& transpose-up (! follow)) (progn (goto-column) (if (& &Default-Transpose-Magic (eolp)) (backward-character))) follow ; implicitly (& (! transpose-up) follow) (backward-character) (progn ; implicitly (& (! transpose-up) (! follow)) (previous-line) (previous-line) (goto-column) (if (& &Default-Transpose-Magic (eolp)) (backward-character))))) (transpose-word CurrentWord punc EMS (setq EMS "") (save-excursion (backw line, ;;; the magic will happen. If the cursor is at the beginning of the ;;; line Transpose-line will override the above variable settings and ;;; assert that you want to transpose with the above line and that you ;;; want to follow the line you were on. If the cursor is at the end of ;;; a line Transpose-line will assume that you want to transpose with ;;; the next line and that you want to follow the line you were on. The ;;; main reason for this magic is so that you can blip lines up and down ;;; inard-word) (if (bobp) (setq EMS "Can't Transpose here!") (progn (set-mark)(forward-word) (setq CurrentWord (region-to-string)) (backward-word)(backward-word)(forward-word) (setq punc (region-to-string))(delete-next-word) (backward-word) (insert-string (concat CurrentWord punc))))) (if (!= "" EMS) (error-message EMS))) (goto-column (beginning-of-line) (while (& (! (eolp)) (< (current-column) &Column-To-Be-At)) (forward-character))) ) (save-window-excu your buffer real easily. (defun (transpose-line foo transpose-up follow EMS mark-pos ; ^- Zero - down, NonZero - up (setq EMS "") (setq follow &Default-Transpose-Follow) (setq transpose-up &Default-Transpose-Direction) (if &Default-Transpose-Magic (if (bolp) (progn (setq transpose-up 1) (setq follow 1)) (eolp) (progn (setq transpose-up 0) (setq follow 1)))) (save-excursion ; just to save the damn mark. (setq &Column-To-Be-At (current-column)) (beginning-of-line) rsion (temp-use-buffer "&&^&&^&&^") (setq needs-checkpointing 0) ) (novalue) ) kward-character) ) (! (new-at-point)) ) ) ) (first-line (save-excursion (beginning-of-line) (bobp) ) ) (blankline (save-excursion (end-of-line) (= (current-column) (current-indent)) ) ) (new-at-point (& (= (following-char) new-point-char) (= (current-column) (current-indent))) ) (new-dedent-line (beginning-of-line) (to-col (-  (if (& (bobp) transpose-up) (setq EMS "Error - Can't transpose up here.") (progn (set-mark) (next-line)(beginning-of-line) (if (! (bolp))(progn (message "foo") (sit-for 5))) (if (& (eobp) (! transpose-up)) (setq EMS "Error - Can't transpose down here.") (delete-region-to-buffer "&&^&&^&&^"))))) (if (!= EMS "") (error-message EMS)) (if transpose-up (previous-line) (next-line)) (beginning-of-line) (yank-buffer "&&^&&^&&^") (if (& transpose-up follow) (previous-li Ë  ÌL:7transp.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z$ã defunætranspose-char-smart¾ifeolp(transpose-charactershprogn$forward-characterÿ &backward-character¢transpose-word-smartzÿÿ."transpose-wordLÿF  forward-wordÿ¼  backward-word *þú"Transpose-line"Transpose-wordÎdeøâ6øšÿ<ÿ6ÿªø,üôúHø0ø¬šù CurrentWordpuncû$úDûûP"üøô÷®üŠ4úúî(Can't Transpose here!Ö÷Äü®ø|0ùÔÿR$region-to-stringøløfø:ù’ÿ.ÿÂ$delete-next-wordø$F insert-string&concatþ þ¸$ö˜ý<úùØ ýLùÌ\ýìûPwhile2û clare-global0&Default-Transpose-Direction,&Default-Transpose-Follow,&Default-Transpose-Magic$&Column-To-Be-At&setqÿ@ÞÿÞÿ\ÞÿÊÿtÞÿ¶ÿŒÞüêtranspose-linefoo  transpose-upfollowEMSmark-pos þøÿÌþØÿ’þPþÆûÔöZ <ú¬øxöŒ„save-window-excursion(temp-use-bufferüV4ø@&needs-checkpointingÞnovalue&Default-Transpose-Direction) (if &Default-Transpose-Magic (if (bolp) (progn (setq transpose-up 1) (setq follow 1)) (eolp) (progn (setq transpose-up 0) (setq follow 1)))) (save-excursion ; just to save the damn mark. (setq &Column-To-Be-At (current-column)) (beginning-of-line) ÿ`þŒü<þ^€ü0bolp.ühþ„ÿÞþpÿ*Þûú.ü4þPþêÞþ<þöÞPsave-excursion.þýÜ"current-column$beginning-of-lineÜû<2&bobpþ"@ý|þP4 Error - Can't transpose up here.dûset-mark next-lineÿ*hú€!þ@Hú¶ me L:8undo.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zssageýB"sit-forÞ¸ú*þàeobp ÿ~ýBü`ý46"Error - Can't transpose down here.Fdelete-region-to-buffer &&^&&^&&^Nù`"!=ü–üÎ& error-messageüj2ùü$  previous-lineþHý„$ yank-bufferÿD¨ø¶ý~ûÂûÜÿœû°Bøè goto-columnøný6úŠørøîûˆ(defun (new-undo c (undo) (while (progn (message "Hit to undo more") (= (setq c (get-tty-character)) ' ')) (undo-boundary) (undo-more)) (message "Finished undoing.") (if (& (!= c '\n') (!= c '\r')) (push-back-character c)) )) se-word-smartzÿÿ."transpose-wordLÿF  forward-wordÿ¼  backward-word *þú"Transpose-line"Transpose-wordÎde$) *L:8undo.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z (load "killring.ml") (setq-default &kill-lines-magic 1) (defun (forward-word-beginning (prefix-argument-loop (while (& (! (eobp)) (looking-at "\\w")) (forward-character)) (while (& (! (eobp)) (! (looking-at "\\w"))) (forward-character)) ) ) (backward-word-end (backward-character) (prefix-argument-loop (while (& (! (bobp)) (looking-at "\\w")) (backward-character)) (while (& (! (bobp)) (! (looking-at "\\w"))) (backward-character)) ) (if (! (bobp)) (fã(defunnew-undocundowhile¼prognFmessage,Hit to undo more^=Bsetqÿ6$get-tty-characterÞ  undo-boundary undo-more*ÿ$$Finished undoing.ŽifL&$!=þ^Þ ÿàþJÞ ,orward-character)) ) (kill-to-word-beginning (save-excursion (set-mark) (provide-prefix-argument prefix-argument (forward-word-beginning)) (kill-region))) (kill-to-word-end (save-excursion (set-mark) (provide-prefix-argument prefix-argument (forward-word)) (kill-region))) (backward-kill-to-word-beginning (save-excursion (set-mark) (provide-prefix-argument prefix-argument (backward-word)) (kill-region))) (backward-kill-to-word-end (save-excpush-back-characterþranspose-Direction,&Default-Transpose-Follow,&Default-Transpose-Magic$&Column-To-Be-At&setqÿ@ÞÿÞÿ\ÞÿÊÿtÞÿ¶ÿŒÞüêtranspose-linefoo  transpose-upfollowEMSmark-pos þøÿÌþØÿ’þPþÆursion (set-mark) (provide-prefix-argument prefix-argument (backward-word-end)) (kill-region))) ) þPþêÞþ<þöÞPsave-excursion.þýÜ"current-column$beginning-of-lineÜû<2&bobpþ"@ý|þP4 Error - Can't transpose up here.dûset-mark next-lineÿ*hú€!þ@Hú¶ mep  qL:9words.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z«ï ¬L::words.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z%ã6load killring.mlL setq-default$&kill-lines-magicÞ(defun2forward-word-beginningprefix-argument-loop°whilet&,!eobp4 looking-at\w$forward-character0ÿT$ÿf ÿtÿ‚ÿh ÿŽÿ¦ÿ¶äbackward-word-end&(defun (write-region-to-file fname (setq fname (arg 1 ": write-region-to-file ")) (save-excursion (copy-region-to-buffer "write-temp") (temp-use-buffer "write-temp") (write-named-file fname) (delete-buffer "write-temp")) (novalue) ) ) !eobp4 looking-at\w$forward-character0ÿT$ÿf ÿtÿ‚ÿh ÿŽÿ¦ÿ¶äbackward-word-end&backward-characterrþ²<þÔ0þæþôbobp ÿÿÿ¢0þ˜$þª þ¸ÿÈþ¬ þÒþêÿr(if þ~ÿŽþÒØkill-to-word-beginning®save-excursionset-markRprovide-prefix-argument"prefix-argumentý: kill-regionbkill-to-word-end>ÿ2ÿN,ÿdÿˆ  forward-wordÿŠpba¹í ºL:;writeregion.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤zckward-kill-to-word-beginning>þÂþÞ,þôÿ  backward-wordÿPbackward-kill-to-word-end$þXþtþŠþ®ý2þÊ-excursion.þýÜ"current-column$beginning-of-lineÜû<2&bobpþ"@ý|þP4 Error - Can't transpose up here.dûset-mark next-lineÿ*hú€!þ@Hú¶ meã¸defun write-region-to-filefnamefsetqÿÔHargÞ*: write-region-to-file àsave-excursionFcopy-region-to-buffer write-temp(temp-use-bufferÿÄ*write-named-fileþÒ& delete-bufferÿtnovalueÿh ÿŽÿ¦ÿ¶äbackward-word-end&î L::writeregion.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤zgì hL:;zap.ml/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿl"¤z% (load "killring.ml") (setq-default &kill-lines-magic 1) (declare-global csearch-default) (defun (get-search-character newchar (setq newchar (get-tty-character)) (& (!= newchar 18) (!= newchar 19)) ; ^S or ^R repeat last search (setq csearch-default (char-to-string newchar)) csearch-default) (character-search (search-forward (get-search-character))) (reverse-character-search (search-reverse (get-search-character))) (zap-to-character (set-mark) (character-search) (backwaacter-search(search-forwardþ´Treverse-character-search(search-reverseþ`Šzap-to-characterset-markÿ$&backward-character kill-region8zap-thru-characterÿxþ®ÿ´prefix-argumentý: kill-regionbkill-to-word-end>ÿ2ÿN,ÿdÿˆ  forward-wordÿŠpbard-character) (kill-region)) (zap-thru-character (set-mark) (character-search) (kill-region)) ) þ¸ÿÈþ¬ þÒþêÿr(if þ~ÿŽþÒØkill-to-word-beginning®save-excursionset-markRprovide-prefix-argument"prefix-argumentý: kill-regionbkill-to-word-end>ÿ2ÿN,ÿdÿˆ  forward-wordÿŠpbaCÿ¸/oZL9 emacs/binSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿo"¤zK¢ZéÓßÀþˆ;ˆÿÿÿs"¤zKë LL;zap.mo/emacs/maclib¤RRRßÞüþˆß .dö¸RðSSSßß,þˆß<.dö¸S<TTTßß\þˆßl.dö¸TˆUUÓߌþˆ;ˆÿÿÿo"¤z÷6Iš‚-À@±üg#ÈEJHo//N¹r�OïB§N¹¸¶NVÿüN^NuNVÿü#îIlN^NuNVÿü#îIN^NuNVÿøHî€ÿü$.gp` 9I.¾¹I f`($g<7`<0H€HÀ.€/<ÄN¹þX�#ÇI Lî€ÿüN^NuNVÿüt.‚N¹P.¹I/9I/<ÊN¹þP�.®/<ÓN¹þX�.¼ÙN¹þt#ÂI#ÂIN^NuNVÿüt.‚N¹P.¹I/9I/<áN¹þP�.®/<êN¹þX�.¼ðN¹þt#ÂI#ÂIN^NuNVÿôHî0ÿø*n(n t.‚N¹P ¹Ilf$ ”�R‚.‚/<øN¹þX�¹Ím.¼H‚HÂ/N¹šX�R¹I`ÞLî0ÿøN^ã6load killring.mlL setq-default$&kill-lines-magicÞDdeclare-global"csearch-default„defun get-search-characternewcharBsetqÿÒ$get-tty-characterL&$!=ÿ~ÞÿàÿjÞ4ÿvþô(char-to-stringÿ.þÆLcharNuNVÿüJ®oHt.‚N¹P ¹Ilf.®/<þN¹þX�S®m.¼t /N¹šX�R¹I`àN^NuNVÿü$9I´®f4$9I´® f`ª$. R‚´¹If.¼t/N¹šX�`v ®f ® f.¼N¹þ`R ®f.® /<N¹þX�`4 ® f.®/<N¹þX�`.® /./<N¹þP�#î I#îIN^NuNVÿüt.‚N¹P.¹I/<N¹þX�.¼3N¹þt#ÂIl#ùIIt#ÂI#ÂIN^NuNVÿüt.‚N¹@t.‚N¹rt.‚/9IN¹X�N¹üN^NuNVÿøN¹°8tt.‚N¹ª”t.‚N¹ª®tt.‚N¹©øtt.‚N¹ª`=yEFÿü=yEHÿþAîÿü.ˆ/<I$N¹­8X�&49EFH‚=Bÿüt=BÿþAîÿü.ˆN¹«ôt.‚N¹ª,t.‚N¹ªFN^NuNVÿüt.‚N¹P.¼AN¹þN^NuNVÿüt.‚N¹P.¼EN¹þt.‚/N¹X�N^NuNVÿüJ®n`t.‚N¹P.®/<JN¹þX�N^NuNVÿüJ®o $.´¹Io-yI#îIN^NuNVÿü9I#g.¼PN¹þ` .¼eN¹þN^NuNVÿüt #ÂI#ùI|8#ü0{ì#ü@{ð#ü¨{ô#ü{ø#üÂ{ü#üj|#ü6|#üü|#ü| #ü{ä#üä{è#üF|#üX|#ür|#üœ|t#Â| t#Â|$#ü|(t#Â|,t#Â|0t#Â|4tP#Â|!y>öJ­nJ¹|Hot#Â6 y}¨!BîpLî ÿüN^NuNVÿìHî8€ÿð*n(n .”/<ÊHUN¹ɦP�~ ‡Wl.$R‡å‚&t( g.«/+/<ÎHUN¹ɦOï &S`Þ`ÊLî8€ÿðN^NuNVÿðHî0€ÿô.¼ÖN¹×`*@ fp`b.¼ëHUN¹I N¹­ÊN^NuNVÿøN¹°8tt.‚N¹ª”t.‚N¹ª®tt.‚N¹©øtt.‚N¹ª`=yEFÿü=yEHÿþAîÿü.ˆ/<I$N¹­8X�t=Bÿü4.ÿþHÂ…ü=BÿþAîÿü.ˆN¹«ôt.‚N¹ª,t.‚N¹ªFN^NuNVÿü.¼zN¹þ.¼}N¹þ.¼ƒN¹þ.¼N¹ÊH.¼I N¹°ÚN^NuNVÿôHî €ÿø*n~gH‚HÂr.�/N¹´nX�Ô€.`â Lî €ÿøN^NuNVÿôHî €ÿø.. ntW.‚/N¹µ@X�åˆ*p g¾­ f.­/. N¹ÂRX�J€g*U`Þ Lî €ÿøN^NuNVÿðHî0€ÿô.® N¹ ..‡/. /.N¹ÚP�*@ g .­N¹Ój`Ft.‚N¹Ò*@+G .® N¹:V+@ ntW.‚/N¹µ@X�åˆCèЉ(@*” nR¨(�+n+nLî0€ÿôžX�/N¹Ë8X�(@ f.�/<íN¹Ô@X�`.~¾¹J°l$å‚ |J.°(HTN¹ 0X�R‡`Ü.ŒN¹ÊÊpLî0€ÿôN^NuNVýôHî<ýø.®N¹×`*@—Ë fp`ô.¼üHUN¹žX�/N¹Ë8X�(@ fp`Î.Œ/<ôHnþ N¹Ã\P�J€gª$9©èf  . þ g$Eîþ g   fB"`ðAîþ .ˆN¹Ä&@`n gjAîþ $R‚$Bg  gRŠ`òJf.¼þN¹Ô@p`LB-Jþg  gRŠ`òBt.‚/.þN¹:VX�/Aîþ $R‚/HSN¹.Oï `ÿ@.ŒN¹ÊÊpLî<ýøN^NuNVÿü.¼ N¹"J€g .¼4N¹Ô@pN^NuNVÿü.¼KN¹"pN^NuNVÿüt#¡ J¹J´g yJ´` |g#È¡¹¡.¹¡N¹Â"#À¡pN^NuNVÿôHî €ÿø~J®g nJfp`ƾ¹J°l4.®$å‚ |Ip/0(N¹ÂRX�J€f$å‚ |J 0(`ŽR‡`Ä ¹(J°m.¼ŠN¹Ô@p`l.¼dN¹Ò*@$9J°å‚ |J!�($9J°å‚ |IpCð(.‰/.N¹:VX�*€ W •R¹J°t+B~ ‡Wl$å‚r+�(R‡`ê Lî €ÿøN^NuNVþÀHî<þÄ.® $.g |¸` |ÀHP/<¢N¹×šP�*@ f`œ.¼,HUHnþÔN¹Ö^P�AîþÔ.ˆ/. $.g |â` |êHP/<ÁN¹×`Oï (@ f`N.ŒN¹:V(@•Ê$.g.¼ëN¹6$@ l`(µù�Òf |` J.ˆHTHnþÔ/.N¹.Oï Lî<þÄN^NuNVÿüt.‚/</<|DN¹²P�t#Â6 y}¨!BîN^NuNVÿü#ühJÀ#ü ’J¸ y‰Ò üJ¸#ȉÒ#ü}JÔ#ü ÆJÌ y‰Ò üJÌ#ȉÒ#ü‘Jè#ü Jà y‰Ò üJà#ȉÒ#ü­Jü#ü 2Jô y‰Ò üJô#ȉÒ#üÈK#ü –K y‰Ò üK#ȉÒ#üÚK$#ü@K y‰Ò üK#ȉÒ#üëK8#ü|K0 y‰Ò üK0#ȉÒ#üüKL#üfKD y‰Ò üKD#ȉÒ#üK`#ü jKX y‰Ò üKX#ȉÒ#ü(Kt#ü ÈKl y‰Ò üKl#ȉÒ#ü9Ip#ùIp|D#ü|DJt#ÂJ°N^NuNVûôHî<€ûø*nIîüÕg” $f†&L {gp`p.Õg:$g }gp`p` H‚ |µÏpN^NuNVÿüJ¹>f.¼N¹Ô@`t.‚/<5/9>N¹²P�t#Â6 y}¨!BîpN^NuNVÿüt.‚/<;/<|DN¹²P�pN^NuNVÿüJ¹>f.¼BN¹Ô@`t.‚/<o/9>N¹²P�pN^NuNVÿôHî0ÿø.¼uN¹×š*@ fp`P.�N¹ .€HU/<|DN¹ÚP�(@ f.�/<‹N¹ÔÄX�`.¬ /,/,/<£N¹ÔÄOï pLî0ÿøN^NuNVÿHî0àÿ.9©Ìt-Bÿü-BÿøAîÿ0$‚È*BB%S‡ ‡mh yB.ˆ¾¹~|o y~x` y~t$0(H‚HÂr //N¹²ØP� W °f$H‚ |µÏ0 H‚HÂgR®ÿø `Ž.�N¹ *$9>g.…HU/9>N¹ÚP�(@ f.…HU/<|DN¹ÚP�(@ 0 H‚H‚gp`pg`R�`ÂB$$g$ R‚ B` K.ˆN¹©*$@ g$ S‚(BÚg`úSŒ$ggR�`ÿj(n *|K€Aîü-H n ~f® n (/g nJ(f,.¼@N¹©**@ gR® ngR®`*|E`j*ng /gR�`òg$ R‚ B` M-HüB$.R‚.‚N¹Ø’-@üJ®üf$.R‚.‚/<FN¹Ô@X�*|b`-nü nü*h Ýfüt/Bÿÿ*n /g [f(n Ýfüt/BÿÿB(n *n g¦Ý ,/ÿÿf–$. R‚¹ÂoŠ$ U‚-Bü nü H‚H `bSŒ`n nü  -Hü H‚H `8UŒ`D nü  -Hü /f"$.ü ´® o nü  -Hü /fæ$.ü R‚(B` €/gÀ €.g¼`` €/g– €.g’`ÿX ,&/ÿÿf $. R‚¹ÂoSŒBpLî<€ûøN^NuNVÿô.¼È/.N¹ØÒX�-@ÿü.®ÿüN¹Â"-@ÿø ®ÿøoS€ nÿü 0 f$.ÿøS‚ nÿüB0( .ÿüN^NuNVþ`Hî0€þd*nIîÿ8Ýg`út/BÿÿBAîþp.ˆHnÿ8N¹nX�.J‡f$Aîþp.ˆN¹»à.fAîþp.ˆ/<K€N¹Â:X� Lî0€þdN^NuNVÿüJ®fp`<.¼LH/.N¹nX�J€l t%.‚/<ct/N¹¸fP�tÿ.‚N¹¸¶ <LHN^NuNVÿôHî0ÿø*n(|K€J®g*´f gRŒR�`ðJf /f$ R‚ ` Jf ` .Lî0ÿøN^NuNVÿüt#¡ #üK€¡¹¡.¹¡N¹Â"#À¡pN^NuNVÿü.¼K€N¹àJ€lN¹p~.¼‰N¹þt.‚N¹¸¶#üóM|#ü>Mt y‰Ò ü.$9©èf$9�ø´¹Žm$D‚.`($9©èf $9�ø´¹Žl.¹�üN¹úD€Þ€`Ø#Ç¡pLî€ÿüN^NuNVÿøHî€ÿüt.‚N¹ú.$9�ø´¹Žl.¹�üN¹ú.€/N¹²ØX�.`Ö#Ç¡pLî€ÿüN^NuNVÿôHîÀÿøt.‚N¹ú.$9©èfP$9�ø´¹ŽlB.¹�üN¹ú,J†f$9©èf.¼uN¹Ô@`$g `p.€/N¹³$9~|Ô¹~„R‚´ªm*$.ÿüÔ¹~„´ªl $9~„•ª` $.ÿüR‚%BRª$j `®Lî<€ÿèN^NuNVÿäHî<€ÿè*y}¨$9~„´®mp` .9~„$.‚ÐÕ­J•g.­/N¹ÓúX�*€J•fBtÿ#Â~x#Â~tt#Â~€#Â~|#Â~„+B+B.­/<ÕN¹Ô@X�p`ž$S‚#Â~t$Ô­(B$Ô¹~|Ô¹~€Ô¹~„&B$Ô¹~|Ô¹~„$B$ ”‹Õ¹~„·Êo#`ø$9~tÔ¹~„#Â~x-m8ÿüJ®ÿüg2$9~|O4#È¡#üGO` y¡ ùO`#È¡#üO<OTùO_#üOPOd#ü~ªODtx#ÂO@t#ÂO< y¡ üO`#È¡ y¡"hÿü i"y¡"iÿø!i.¼X/<}¬N¹Â:X�.¼�N¹0n#ù}¨v.¼‹N¹0n yvt!B y}¨!B@#ü�OŒ y¡ ùOŒ#È¡#üOhO€ùO‹#üO|O�t#ÂOh#üNøOp y¡ üOŒ#È¡#ü©O¸ y¡ ùO¸#È¡#üO”O¬ùO·#üO¨O¼t#ÂO”#ü:Oœ y¡ üO¸#È¡ y¡"hÿü i"y¡"iÿø!i#üºOä y¡ ùOä#È¡#üOÀOØùOã#üOÔOè#ü~ŒOÈt#ÂOÄt#ÂOÀ' y¡ üOä#È¡#üÆP y¡ ùP#È¡#üOìPùP#üPPt#ÂOì#ü~ˆOô y¡ üP#È¡t#ÂNø#üÙP< y¡ ùP<#È¡#üPP0ùP;#üP,P@t#ÂP#üNüP y¡ üP<#È¡#üîPh y¡ ùPh#È¡#üPDP\ùPg#üPXPlt#ÂPD#üFPL y¡ üPh#È¡ y¡"hÿü i"y¡"iÿø!i#ü'Nü#üûP” y¡ ùP”#È¡#üPpPˆùP“#üP„P˜t#ÂPp#üOPx y¡ üP”#È¡#ü PÀ y¡ ùPÀ#È¡#üPœP´ùP¿#üP°PÄt#ÂPœ#üJP¤ y}¨f$9~|R‚´®l $9~„Õ­`$, R‚´®l$,Õ­Lî0ÿøN^NuNVÿôHî0ÿø*n(n t.‚/HUN¹;:P�+l Lî0ÿøN^NuNVÿøHî ÿü*n gJ•fp`N$´¹}¨g.•N¹/^$-´¹~|n -`*$9~|Ô¹~„´­m $9~|R‚ ` $-”¹~„ Lî ÿüN^NuNVÿèHî ðÿì..,. *.x¼‡oð¾¹~|o y~x` y~t$Ô‡*BR‡ yBH‚HÂr .�/N¹²ØX� °gp`pfx`œH‚ |µÏ0 H‚H‚g~J…gPH‚ |µÏ0 H‚HÂg …g …f$gp`p` …g …f$fp`pg(H‚HÂB.‚$S‚/N¹$ÄX�t.‚/N¹&ˆX�x`ÿR¹~ˆLî ðÿìN^NuNV¡ üPÀ#È¡ y¡"hÿü i"y¡"iÿø!it#ÂO#ü Pì y¡ ùPì#È¡#üPÈPàùPë#üPÜPðt#ÂPÈ#üNPÐ y¡ üPì#È¡#ü 'Q y¡ ùQ#È¡#üPôQ ùQ#üQQt#ÂPô#üOPü y¡ üQ#È¡#ü >QD y¡ ùQD#È¡#üQ Q8ùQC#üQ4QHt#ÂQ #üRQ( y¡ üQD#È¡ y¡"hÿü i"y¡"iÿø!it!#ÂO#ü MQp y¡ ùQp#È¡#üQLQdùQo#üQ`Qtt#ÂQL#üO QT y¡ üQp#È¡#ü ^Qœ y¡ ùQœ#È¡#üQxQ�ùQ›#üQŒÿôHîÀÿø.9©Ì,9‰Ö$9~|Ô¹~€”¹f´¹©Ìmt#©ÔR¹©Ìt#‰ÖN¹ÏR¹©ð#ƉÖ,9©ÌN¹Ï.®/9©Ì/N¹<¢P�t#©Ô#Ç©ÌLîÀÿøN^NuNVÿôHîÀÿø,9©Ì y}¨J¨NpN^NuNVÿüt.‚N¹>NpN^NuNVÿüt.‚N¹>NpN^NuNVÿüt.‚N¹>NpN^NuNVÿü#ü þR´#ü>°R¬#üR¬ƒJ#ü RÈ#ü>ÄRÀ#üRÀƒ¦#ü RÜ#ü>ØRÔ#üRÔƒ‚#ü /Rð#ü>ìQ t#ÂQx#üZQ€ y¡ üQœ#È¡ y¡"hÿü i"y¡"iÿø!i#ü gQÈ y¡ ùQÈ#È¡#üQ¤Q¼ùQÇ#üQ¸QÌt#ÂQ¤#üOQ¬ y¡ üQÈ#È¡#ü Qô y¡ ùQô#È¡#üQÐQèùQó#üQäQøt#ÂQÐ#ü^QØ y¡ üQô#È¡ y¡"hÿü i"y¡"iÿø!i#ü �R y¡ ùR #È¡#üQüRùR#üRR$t#ÂQü#üVR y¡ üR #È¡#ü £RL y¡ ùRL#È¡#üR(R@ùRK#üR<RPt#ÂR(#ü6R0 y¡ üRL#È¡#ü ¯Rx y¡ ùRx#È¡#üRTRlùRwRè y‰Ò üRè#ȉÒ#ü DS#ü?Rü#üRü‚J#ü WS#ü?S y‰Ò üS#ȉÒ#ü iS,#ü?(S$ y‰Ò üS$#ȉÒ#ü {S@#ü?<S8 y‰Ò üS8#ȉÒN^NuNVÿðHîàÿôtÿ.‚/9©Ìt /N¹œP�.|¾¹©Ìlt¾¹~|o y~x` y~t$0(  f,$S‚.¹Z/N¹³