(defvar register-alist nil "\ Alist of elements (NAME . CONTENTS), one for each Emacs register. NAME is a character (a number). CONTENTS is a string, number, mark or list. A list represents a rectangle; its elements are strings.") (defun get-register (char) "\ Return contents of Emacs register named CHAR, or nil if none." (byte-code " \"A" [char register-alist assq] 3)) (defun set-register (char value) "\ Set contents of Emacs register named CHAR to VALUE." (byte-code " \" \" B B)" [aelt char register-alist value assq setcdr] 4)) (defun point-to-register (char) "\ Store current location of point in a register. Argument is a character, naming the register." (interactive "cPoint to register: ") (byte-code " \"" [char nil set-register point-marker] 4)) (defun register-to-point (char) "\ Move point to location stored in a register. Argument is a character, naming the register." (interactive "cRegister to point: ") (byte-code " !! !!b !)" [val char nil get-register markerp switch-to-buffer marker-buffer error "Register doesn't contain a buffer position"] 6)) (defun view-register (char) "\ Display what is contained in register named REGISTER. REGISTER is a character." (interactive "cView register: ") (byte-code " !? !\"v ǐ! !!!!0 !u !N !!!!!\\!u :n !k @! AW u !!)" [val char nil get-register message "Register %s is empty" single-key-description "*Output*" princ "Register " " contains " integerp markerp "a buffer position: buffer " buffer-name marker-buffer ", position " 0 "the rectangle: " terpri "the string: "] 23)) (defun insert-register (char &optional arg) "\ Insert contents of register REG. REG is a character. Normally puts point before and mark after the inserted text. If optional second arg is non-nil, puts mark before and point after. Interactively, second arg is non-nil if prefix arg is supplied." (interactive "cInsert register: P") (byte-code "È !: !6 ; c6 !'