From: ADVAX::"nat@drao.nrc.ca" "Natalie Prowse" 27-NOV-1990 14:52:48.67 To: , , , , , , , , , , , , , , , , , To: , , , , , , , , , , , , , , , , , , , Message-Id: <238*nat@drao.nrc.CA> Subject: updated evep.el part 2 of 3 -+-+-+-+-+-+-+-+ START OF PART 2 -+-+-+-+-+-+-+-+ X (save-excursion X (append-to-buffer buffname (point) (mark)) X (message "Region APPENDED to paste") X (clean-up-cut-buffers))) X X X(defun swap-region-to-cutbuffer () X (interactive) X (delete-region-to-buffer "garbage") X (yank-from-cutbuffer) X (save-window-excursion X (set-buffer "garbage") X (beginning-of-buffer) X (set-mark-command) X (end-of-buffer) X (delete-to-cutbuffer) X (clean-up-cut-buffers))) X; X(defun clean-up-cut-buffers () X (save-window-excursion X (set-buffer "paste") X (setq you-lose-on-needs-checkpointing 0) X (novalue))) X X(defun novalue () nil) X X; X; X; Search Command Definitions X; X(defun nat-search-reverse (string-val) X" Search reverse for next occurance. If not found query user about searchin Vg forward." X (cond ((not (string= string-val "")) X`009 (setq save-string string-val))) X (cond ((not (search-backward save-string nil t)) X`009 (setq answ "n") X`009 (setq answ (read-string`032 X`009`009 (concat "'"save-string "' was not found. Should I Search Forwar Vd? ") "")) X`009 (cond ((or (string= answ "y") (string= answ "Y")) X`009`009(change-direction) X`009`009(nat-search-forward save-string)))))) X X X(defun nat-search-forward (string-val) X" Search forward for next occurance. If not found query user about searchin Vg in reverse." X (cond ((not (string= string-val "")) X`009 (setq save-string string-val))) X (cond ((not (search-forward save-string nil t)) X`009 (setq answ "n") X`009 (setq answ (read-string`032 X`009`009 (concat "'"save-string "' was not found. Should I Search revers Ve? ") "")) X`009 (cond ((or (string= answ "y") (string= answ "Y")) X`009`009(change-direction) X`009`009(nat-search-reverse save-string)))))) X; X(defun search-forward-query() X "Query the user for a search string, and search forward for next occurance V." X (interactive) X (nat-search-forward (read-string "Search For: " ""))) X X(defun search-reverse-query() X "Query the user for a search string, and search backwards for next occuran Vce." X (interactive) X (nat-search-reverse (read-string "Search For: " ""))) X X(defun search-forward-next() X "Find the next occurance (forward) of the previous search string." X (interactive) X (forward-char) X (nat-search-forward "")) X X(defun search-reverse-next () X "Find the next occurance (backwards) of the previous search string." X (interactive)`032 X (nat-search-reverse "")) X X(defun delete-current-line (num) X "Delete one or specified number of lines after point. XThis includes the newline character at the end of each line. XThey are saved for the EVEP undelete-lines command." X (interactive "p") X (let ((beg (point))) X (forward-line num) X (if (not (eq (preceding-char) ?\n)) X`009(insert "\n")) X (setq evep-last-deleted-lines X`009 (buffer-substring beg (point))) X (delete-region beg (point)))) X X(defun delete-to-eol (num) X "Delete text up to end of line. XWith argument, delete up to to Nth line-end past point. XThey are saved for the EVEP undelete-lines command." X (interactive "p") X (let ((beg (point))) X (forward-char 1) X (end-of-line num) X (setq evep-last-deleted-lines X`009 (buffer-substring beg (point))) X (delete-region beg (point)))) X X(defun delete-current-word (num) X "Delete one or specified number of words after point. XThey are saved for the EVEP undelete-words command." X (interactive "p") X (let ((beg (point))) X (forward-word num) X (setq evep-last-deleted-words X`009 (buffer-substring beg (point))) X (delete-region beg (point)))) X X(defun delete-previous-word (num) X "Delete one or specified number of words before point. XThey are saved for the EVEP undelete-words command." X (interactive "p") X (let ((beg (point))) X (forward-word (- num)) X (setq evep-last-deleted-words X`009 (buffer-substring (point) beg)) X (delete-region beg (point)))) X X(defun delete-current-char (num) X "Delete one or specified number of characters after point. XThey are saved for the EVEP undelete-chars command." X (interactive "p") X (setq evep-last-deleted-chars X`009(buffer-substring (point) (min (point-max) (+ (point) num)))) X (delete-region (point) (min (point-max) (+ (point) num)))) X X(defun delete-previous-char (num) X "Delete one or specified number of characters before point. XThey are saved for the EVEP undelete-chars command." X (interactive "p") X (setq evep-last-deleted-chars X`009(buffer-substring (max (point-min) (- (point) num)) (point))) X (delete-region (max (point-min) (- (point) num)) (point))) X X(defun undelete-lines () X "Yank lines deleted by last EVEP line-deletion command." X (interactive) X (insert evep-last-deleted-lines)) X X(defun undelete-words () X "Yank words deleted by last EVEP word-deletion command." X (interactive) X (insert evep-last-deleted-words)) X X(defun undelete-chars () X "Yank characters deleted by last EVEP character-deletion command." X (interactive) X (insert evep-last-deleted-chars)) X X(defun next-end-of-line (num) X "Move to end of line; if at end, move to end of next line. XAccepts a prefix argument for the number of lines to move." X (interactive "p") X (forward-char) X (end-of-line num)) X X(defun previous-end-of-line (num) X "Move EOL upward. XAccepts a prefix argument for the number of lines to move." X (interactive "p") X (end-of-line (- 1 num))) X X(defun forward-to-word (num) X "Move to next word-beginning, or to Nth following word-beginning." X (interactive "p") X (forward-word (1+ num)) X (forward-word -1)) X X(defun backward-to-word (num) X "Move back to word-end, or to Nth word-end seen." X (interactive "p") X (forward-word (- (1+ num))) X (forward-word 1)) X X(defun backward-line (num) X "Move point to start of previous line. XPrefix argument serves as repeat-count." X (interactive "p") X (forward-line (- num))) X X(defun scroll-window-down (num) X "Scroll the display down a window-full. XAccepts a prefix argument for the number of window-fulls to scroll." X (interactive "p") X (scroll-down (- (* (window-height) num) 2))) X X(defun scroll-window-up (num) X "Scroll the display up a window-full. XAccepts a prefix argument for the number of window-fulls to scroll." X (interactive "p") X (scroll-up (- (* (window-height) num) 2))) X X(defun next-paragraph (num) X "Move to beginning of the next indented paragraph. XAccepts a prefix argument for the number of paragraphs." X (interactive "p") X (while (> num 0) X (next-line 1) X (forward-paragraph) X (previous-line 1) X (if (eolp) (next-line 1)) X (setq num (1- num)))) X X(defun previous-paragraph (num) X "Move to beginning of previous indented paragraph. XAccepts a prefix argument for the number of paragraphs." X (interactive "p") X (while (> num 0) X (backward-paragraph) X (previous-line 1) X (if (eolp) (next-line 1)) X (setq num (1- num)))) X X(defun move-to-beginning () X "Move cursor to the beginning of buffer, but don't set the mark." X (interactive) X (goto-char (point-min))) X X(defun move-to-end () X "Move cursor to the end of buffer, but don't set the mark." X (interactive) X (goto-char (point-max))) X X(defun goto-percent (perc) X "Move point to ARG percentage of the buffer." X (interactive "NGoto-percentage: ") X (if (or (> perc 100) (< perc 0)) X (error "Percentage %d out of range 0 < percent < 100" perc) X (goto-char (/ (* (point-max) perc) 100)))) X X(defun update-mode-line () X "Make sure mode-line in the current buffer reflects all changes." X (set-buffer-modified-p (buffer-modified-p)) X (sit-for 0)) X X(defun advance-direction () X "Set EVEP Advance mode so keypad commands move forward." X (interactive) X (setq evep-direction-string " ADVANCE") X (define-key function-keymap "\C-c" 'search-forward-next) ; PF3 X (define-key function-keymap "f" 'search-forward-next) ; FIND X (define-key function-keymap "8" 'scroll-down) ; "8" X (define-key function-keymap "7" 'scroll-up) ; "7" X (define-key function-keymap "1" 'beginning-of-line) ; "1" X (define-key function-keymap "2" 'next-end-of-line) ; "2" X (define-key function-keymap "0" 'forward-line) ; "0" X (update-mode-line)) X X X(defun backup-direction () X "Set EVEP Backup mode so keypad commands move backward." X (interactive) X (setq evep-direction-string " BACKUP") X X (define-key function-keymap "\C-c" 'search-reverse-next) ; PF3 `032 X (define-key function-keymap "f" 'search-reverse-next) ; FIND X (define-key function-keymap "8" 'scroll-down) ; "8" X (define-key function-keymap "7" 'scroll-up) ; "7"`032 X (define-key function-keymap "1" 'backward-line) ; "1" X (define-key function-keymap "2" 'previous-end-of-line) ; "2" X (define-key function-keymap "0" 'backward-line) ; "0" X (update-mode-line)) X X X X(defun change-direction () X "Toggle direction so keypad commands work forwards/backwards." X (interactive) X (cond ((string= evep-direction-string " ADVANCE") X`009 (backup-direction)) X`009((string= evep-direction-string " BACKUP") X`009 (advance-direction)))) X X X X(defun beginning-of-window () X "Home cursor to top of window." X (interactive) X (move-to-window-line 0)) X X(defun line-to-bottom-of-window () X "Move the current line to the bottom of the window." X (interactive) X (recenter -1)) X X X X(defun line-to-top-of-window () X "Move the current line to the top of the window." X (interactive) X (recenter 0)) X X(defun case-flip-character (num) X "Change the case of the character under the cursor. XAccepts a prefix argument of the number of characters to invert." X (interactive "p") X (while (> num 0) X (funcall (if (<= ?a (following-char)) X`009`009 'upcase-region 'downcase-region) X`009 (point) (1+ (point))) X (forward-char 1) X (setq num (1- num)))) X X X X(defun toggle-wrap () X "Toggle between wrapping and not wrapping long lines on the screen." X (interactive) X (setq truncate-lines (not truncate-lines)) X (setq outstr "off.") X (if truncate-lines X (setq outstr "on.")) X (message (concat "Wrapping of long lines is now " outstr))) X X(defun indent-or-fill-region () X "Fill region in text modes, indent region in programming language modes." X (interactive) X (if (string= paragraph-start "`094$\\`124`094`012") X (indent-region (point) (mark) nil) X (fill-region (point) (mark)))) X X(defun mark-section-wisely () X "Mark the section in a manner consistent with the major-mode. XUses mark-defun for emacs-lisp, lisp, Xmark-c-function for C, Xand mark-paragraph for other modes." X (interactive) X (cond ((eq major-mode 'emacs-lisp-mode) X`009 (mark-defun)) X`009 ((eq major-mode 'lisp-mode) X`009 (mark-defun)) X`009 ((eq major-mode 'c-mode) X`009 (mark-c-function)) X`009 (t (mark-paragraph)))) X X X;;; Key Bindings X(defun evep-emulation-on () X "Begin simulating decs EVEP editor. XCertain keys are rebound; including nearly all keypad keys. XUse \\`091evep-emulation-off`093 to undo all rebindings except the keypad ke Vys. XNote that this function does not work if called directly from the .emacs fil Ve. XInstead, the .emacs file should do (setq term-setup-hook 'evep-emulation-on) XThen this function will be called at the time when it will work." X (interactive) X (advance-direction) X (evep-bind-gold-keypad)`009;Must do this *after* $TERM.el is loaded X (setq evep-mode-old-c-\\ (lookup-key global-map "\C-\\")) X (global-set-key "\C-\\" 'quoted-insert) X (setq evep-mode-old-delete (lookup-key global-map "\177")) X (global-set-key "\177" 'delete-previous-char) ;"Delete" X (setq evep-mode-old-lisp-delete (lookup-key emacs-lisp-mode-map "\177")) X (define-key emacs-lisp-mode-map "\177" 'delete-previous-char) ;"Delete" X (define-key lisp-mode-map "\177" 'delete-previous-char) ;"Delete" X (setq evep-mode-old-linefeed (lookup-key global-map "\C-j")) X (global-set-key "\C-j" 'delete-previous-word) ;"LineFeed" X (setq find-file-hooks (list 'initial-file-load)) X (define-key esc-map "?" 'apropos)) ;"?" X X(defun evep-emulation-off () X "Return from EVEP emulation to normal Emacs key bindings. XThe keys redefined by \\`091evep-emulation-on`093 are given their old defini Vtions." X (interactive) X (setq evep-direction-string nil) X (global-set-key "\C-\\" evep-mode-old-c-\\) X (global-set-key "\177" evep-mode-old-delete)`009`009;"Delete" X (define-key emacs-lisp-mode-map "\177" evep-mode-old-lisp-delete) ;"Delete V" X (define-key lisp-mode-map "\177" evep-mode-old-lisp-delete) ;"Delete" X (global-set-key "\C-j" evep-mode-old-linefeed)) ;"LineFeed" X X X X(define-key function-keymap "k" 'delete-to-cutbuffer)`009;REMOVE X(define-key function-keymap "I" 'yank-from-cutbuffer)`009;INSERT X(define-key function-keymap "u" 'previous-line)`009`009;Up arrow X(define-key function-keymap "d" 'next-line)`009`009;down arrow X(define-key function-keymap "l" 'backward-char)`009`009;right arrow X(define-key function-keymap "r" 'forward-char)`009`009;left arrow X(define-key function-keymap "h" 'beginning-of-window)`009;home X(define-key function-keymap "\C-a" 'GOLD-prefix)`009;PF1 ("gold") X(define-key function-keymap "\C-b" 'move-to-beginning) ;"PF2" - "TOP of file V" X(define-key function-keymap "\C-d" 'delete-current-line);PF4 X(define-key function-keymap "9" 'kill-region)`009; CUT "9" keypad key X(define-key function-keymap "-" 'delete-current-word) X(define-key function-keymap "3" 'upcase-word) X(define-key function-keymap "4" 'forward-to-word) X(define-key function-keymap "5" 'backward-to-word) X(define-key function-keymap "," 'delete-current-char) X(define-key function-keymap "." 'redraw-display) ;REFRESH X(define-key function-keymap "e" 'query-replace) ; ENTER key query-re Vplace X(define-key function-keymap "6" 'other-window)`009`009;kp6 - other window X X(setq GOLD-map (make-keymap)) X(fset 'GOLD-prefix GOLD-map) X X(defvar GOLD-map nil X "GOLD-map maps the function keys on the VT100 keyboard preceeded Xby the PF1 key. GOLD is the ASCII the 7-bit escape sequence OP.") X X(defun define-keypad-key (keymap function-keymap-slot definition) X (let ((function-key-sequence (function-key-sequence function-keymap-slot)) V) X (if function-key-sequence +-+-+-+-+-+-+-+- END OF PART 2 +-+-+-+-+-+-+-+-