commit/edit-utils: Steve Mitchell: Adding two register manipulation packages

[email protected]
Newsgroups gmane.emacs.xemacs.patches
Message-ID <[email protected]>
1 new commit in edit-utils:

https://bitbucket.org/xemacs/edit-utils/commits/0fb7a0efa2fe/
Changeset:   0fb7a0efa2fe
User:        Steve Mitchell
Date:        2014-01-01 22:46:39
Summary:     Adding two register manipulation packages
Added Register Menu, an optional toplevel menu for access to registers
Added Register Toolbar, a minor mode which displays a toolbar for
  1-click access to ten registers.
Affected #:  52 files

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2013-1-1  Steve Mitchell   <[email protected]> 
+	  Byrel Mitchell   <[email protected]>
+         
+	* register-menu.el: Added new package
+	Allows easy access to register functionality,
+	including in-menu previews of register contents,
+	bookmarking, etc.
+	* register-toolbar.el: Added new package
+	Allows easy access to copy and pasting from 10
+	registers, including from columnar blocks.
+        * Makefile (ELCS,DATA_FILES): added new files
+	* rt: added icon files for register toolbar.
+	
 2013-06-17  Norbert Koch  <[email protected]>
 
 	* Makefile (VERSION): XEmacs package 2.51 released.

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 Makefile
--- a/Makefile
+++ b/Makefile
@@ -43,8 +43,30 @@
 	winring.elc vertical-mode.elc power-macros.elc icon-themes.elc \
 	search-buffers.elc setnu.elc align.elc autorevert.elc allout.elc \
 	narrow-stack.elc highline.elc crm.elc wide-edit.elc buffer-colors.elc \
-	list-register.elc which-func.elc find-lisp.elc
+	list-register.elc which-func.elc find-lisp.elc register-menu.elc \
+	register-toolbar.elc
+
+
 
 EXPLICIT_DOCS = $(PACKAGE).texi tempo.texi
 
+DATA_FILES = rt/icon0-disabled_28_28_32.png rt/icon0-dn_28_28_32.png rt/icon0-up_28_28_32.png \
+	rt/icon1-disabled_28_28_32.png rt/icon1-dn_28_28_32.png rt/icon1-up_28_28_32.png \
+	rt/icon2-disabled_28_28_32.png rt/icon2-dn_28_28_32.png rt/icon2-up_28_28_32.png \
+	rt/icon3-disabled_28_28_32.png rt/icon3-dn_28_28_32.png rt/icon3-up_28_28_32.png \
+	rt/icon4-disabled_28_28_32.png rt/icon4-dn_28_28_32.png rt/icon4-up_28_28_32.png \
+	rt/icon5-disabled_28_28_32.png rt/icon5-dn_28_28_32.png rt/icon5-up_28_28_32.png \
+	rt/icon6-disabled_28_28_32.png rt/icon6-dn_28_28_32.png rt/icon6-up_28_28_32.png \
+	rt/icon7-disabled_28_28_32.png rt/icon7-dn_28_28_32.png rt/icon7-up_28_28_32.png \
+	rt/icon8-disabled_28_28_32.png rt/icon8-dn_28_28_32.png rt/icon8-up_28_28_32.png \
+	rt/icon9-disabled_28_28_32.png rt/icon9-dn_28_28_32.png rt/icon9-up_28_28_32.png \
+        rt/iconC-disabled_28_28_32.png rt/iconC-dn_28_28_32.png rt/iconC-up_28_28_32.png \
+	rt/iconM-disabled_28_28_32.png rt/iconM-dn_28_28_32.png rt/iconM-up_28_28_32.png \
+	rt/iconIns-disabled_28_28_32.png rt/iconIns-dn_28_28_32.png rt/iconIns-up_28_28_32.png \
+        rt/iconrectcopy-disabled_28_28_32.png rt/iconrectcopy-dn_28_28_32.png rt/iconrectcopy-up_28_28_32.png \
+        rt/iconrectmove-disabled_28_28_32.png rt/iconrectmove-dn_28_28_32.png rt/iconrectmove-up_28_28_32.png \
+	rt/LICENSE
+
+DATA_DEST = $(PACKAGE)/register-toolbar
+
 include ../../XEmacs.rules

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 edit-utils.texi
--- a/edit-utils.texi
+++ b/edit-utils.texi
@@ -73,6 +73,8 @@
 * align::                       Align Text to a Specific Column, By Regexp
 * allout::                      Extensive Outline Mode
 * narrow-stack::                Extending the built-in narrowing functions
+* register-menu::               Menu for easier register interaction
+* register-toolbar::            Toolbar for easier register interaction
 
 File Management
 * backup-dir::	                Specify Directories to be Used for Backup Files
@@ -104,6 +106,7 @@
 * paren::			Highlight (Un)matching Parens and Whole Expressions
 * shell-font::                  Decorate a Shell Buffer With Fonts
 * highline::                    Highlight the Current Line in the Buffer
+* buffer-colors::               System for Buffer-Local Color Schemes
 
 Low-Level Editing Hacks:
 * after-save-commands::	        Hooks Invoked After Saving a File
@@ -1749,7 +1752,7 @@
 be modified as desired, for example, @code{(copy-face 'italic
 'shell-prompt)}.
 
-@node highline, after-save-commands, shell-font, Top
+@node highline, highline-keys, shell-font, Top
 @chapter Highlight the Current Line in the Buffer
 
 This package is a minor mode to highlight the current line in buffer.
@@ -1833,7 +1836,7 @@
 
 @end table
 
-@node highline-options,  , highline-hooks, highline
+@node highline-options, buffer-colors, highline-hooks, highline
 @section Options
 
 This is a brief description of highline options.  Please see the options
@@ -1873,7 +1876,19 @@
   M-x highline-customize RET
 @end example
 
-@node after-save-commands, atomic-extents, highline, Top
+@node buffer-colors, after-save-commands, highline-options, Top
+
+Buffer colors provides an easy interface to implementing buffer-local
+default color schemes. This can be used automatically based on mode or
+filename extension (for instance, all .c-files could be lime green on
+black, and all .h files could be amber on black) or manually
+settable. An option is provided for defining additional custom color
+schemes, and defining the buffer-colors by window instead of
+buffer. All configuration can be done through the buffer-colors
+customize group.
+ 
+
+@node after-save-commands, atomic-extents, buffer-colors, Top
 @chapter Hooks Invoked After Saving a File
 
 Set up a list of file-name matching regular expressions associated with shell
@@ -3442,7 +3457,7 @@
   (add-hook 'outline-mode-hook 'rf-allout-font-lock-hook)
 @end example
 
-@node narrow-stack, flow-ctrl, allout, Top
+@node narrow-stack, register-menu, allout, Top
 @chapter Extending the built-in narrowing functions
 
 Narrowing, as implemented in Emacs has one limitation, namely that it is not
@@ -3452,8 +3467,31 @@
 
 To activate this extension type @code{M-x narrow-stack-mode} or add
 @code{(narrow-stack-mode)} to your initialization file.
+
+@node register-menu, register-toolbar, narrow-stack, Top
+
+Registers in XEmacs are limited in easy accessibility to a handful of
+functions in the default keyboard layout. This menu provides a
+top-level menu interface to most of the functionality provided by
+registers, including columnar copying, bookmarking, and real-time
+in-menu previews of the contents of registers.
+
+This menu can be configured through the register-menu configure group. Type @code{M-x 
+customize-group RET register-menu RET}
+
+@node register-toolbar, flow-ctrl, register-menu, Top
+
+The current XEmacs interface for registers is either deep in the
+menus, requiring multiple clicks for a single copy/paste command, or
+on a handful of keyboard bindings. The register toolbar minor mode
+provides a simple click interface for cut, copy and paste
+functionality to the digit registers (0-9). Modes are also available
+for columnar copy/cut operations.
+
+This minor mode can be enabled through button 3 on the modeline or the
+command: @code{M-x register-toolbar-mode}.
  
-@node flow-ctrl, makesum, narrow-stack, Top
+@node flow-ctrl, makesum, register-toolbar, Top
 @chapter Flow Control
 
 Terminals that use XON/XOFF flow control can cause problems with GNU Emacs

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 register-menu.el
--- /dev/null
+++ b/register-menu.el
@@ -0,0 +1,542 @@
+;;;   register-menu.el
+;;;   1/1/2013 
+;;;   authors: 
+;;;      Steven Mitchell
+;;;      Byrel Mitchell
+;;;      Benson Mitchell
+;;;
+;;;   TIP: instead of clicking on each sub-menu
+;;;   hold the mouse button down on top menu and 
+;;;   slide down and sideways unto submenus for 
+;;;   speed, then release the mouse button to 
+;;;   select. Much faster than multiple clicking.
+;;;
+;;; This program creates a top-most level menu item "Register"
+;;; and dynamically populates it with commands to manipulate 
+;;; registers, such as copy,move,insert, etc. 
+;;; it also populates submenus for each menu item, to select from
+;;; the sub-menus by the mouse or cursor keys, or
+;;; based on a setting, interactively in the mini-buffer. 
+;;;
+;;; Using the sub-menu for designating which register to 
+;;; perfrom your operation on has one advantage over minibuffer
+;;; input, a preview of the register contents, next to the 
+;;; register name and a single character indicating contents type.
+;;;
+;;; A customize setting lets you change the width of the preview
+;;; and another, the height of the generated submenus.
+;;; 
+;;; There are approximately 255 allowed single char names for
+;;; registers, but to keep confusion down and avoid interference
+;;; with other functions, we elected to use lowercase alpha chars,
+;;; upper case alpha chars and single digit numbers, or any 
+;;; combination of the three sets, via a customize variable.
+;;; 
+;;; The preview of register contents is shown in each sub-menu, 
+;;; for each register that has something in it.
+;;; In the case of a few content types  not easily displayed,
+;;; such as frame comfiguration, we print a text string that 
+;;; tells the type of the item.
+;;; ex: "" is displayed as the empty string.
+;;;
+;;; regarding sub-menu length: there is a setting to change the height
+;;; for the sub-menus of register names, controlling when to generate 
+;;; additional sub-menus for extra register names, for your size screen.
+;;; 36 names will fit in a single menu height with a 2560 x 1600 pixel 
+;;; monitor. You may need to set a laptop screen for 15 or 20 lines high
+;;; to suit your screen.
+;;; See settings to change the # of menu items before continuing the
+;;; list of available registers before making sub-submenus. 
+;;;
+;;; Clear Register is new functionality to empty a register.
+;;;
+;;; Menu item "Clear All Registers" clears registers based on a setting
+;;; for which register names to work with (eg. from a-z, A-Z, 0-9)
+;;; It does not change registers that it does not work with (see settings).
+;;;
+;;; Note about greyed-out buffer names:
+;;; if there is no selection, the sub-menus will be greyed out for commands
+;;; that need a selection to work on.  This is for commands such as 
+;;; copy/move/append/prepend/Copy rect/Move rect, etc.
+;;;
+;;; Other commands that do not require a selection, such as 
+;;; function-to-register or copy point to register are never grayed-out.
+;;;
+;;; When inserting registers, registers that are empty are greyed-out since
+;;; you can only insert registers with something in them.
+;;;
+;;; Register-menu-settings calls a customize buffer for register-menu group.
+;;;
+;;; 
+;;; Requires:
+;;; Xemacs 21.5.35 for optimal functionality. Several issues in XEmacs
+;;; menu insertion/deletion code have been fixed in the preceding beta
+;;; versions. The register menu will be largely functional on 21.5.34,
+;;; with a few issues involving live menu config changes. On 21.5.32 and
+;;; earlier the submenu form of the register menu hides menus instead of 
+;;; disabling them (graying out) due to a limitation in older menu display code.
+;;; 
+;;; If running one of the older versions, applying the most recent patches
+;;; to menubar.el should improve your experience significantly.
+;;;
+;;; Specifically, installing patch number 44b0b4e to menubar.el and 
+;;; patch to menubar.el submitted by Byrel Mitchell on 12/28/2013.
+;;;
+;;; To try it out:
+;;; load register-menu.el and evaluate the whole buffer.
+;;; go into [Options->Menubars] and toggle on Register Menu.
+
+
+
+;-------------------------------------------------------------
+;------- defvars for register menu ---------------------------
+;-------------------------------------------------------------
+
+(require 'menubar)			;contains add-menu-button
+(defun char-list (begin end)
+  "Returns a list of chars in order from BEGIN to END"
+  (loop for ch from (char-to-int begin) to (char-to-int end)
+    collect (int-to-char ch)))
+
+(defconst rm-lc-az (char-list ?a ?z) "list of register names from a to z")
+(defconst rm-uc-az (char-list ?A ?Z) "list of register names from A to Z")
+(defconst rm-numbers-09 (char-list ?0 ?9) "list of register names from 0 to 9")
+(defconst rm-settings-item [ "Register Menu Settings" (customize 'register-menu) ]
+  "Settings option for register-menu, used in both submenu input and interactive modes.
+By default, a single menu item to customize the 'register-menu group.")
+
+;; each of these menubar-tag consts is a list so they can be (append)ed, and may
+;; reference the variable REGISTER which will be bound to a char when they get (eval)ed.
+(defconst rm-suffix-contents-preview
+  '(:suffix `(rm-contents-preview ,register))
+  ":suffix key with preview of register's contents")
+;(let ((register ?a)) (mapcar 'eval (append rm-suffix-contents-preview rm-suffix-contents-preview)))
+(defconst rm-active-text-or-numberp
+  '( :active `(let ((val (get-register ,register)))
+	       (or (stringp val)
+		   (numberp val)
+		   (and (consp val) 
+			(stringp (car val))))))
+  ":active key with test for register holding a linear or rectangle block, or a number")
+(defconst rm-active-string-or-numberp
+  '( :active `(let ((val (get-register ,register)))
+	       (or (stringp val)
+		   (numberp val))))
+  ":active key with test for register holding a linear block or a number")
+(defconst rm-active-markerp '( :active `(markerp (get-register ,register)))
+  ":active key with test for register holding a marker")
+(defconst rm-active-nonnilp '( :active `(get-register ,register))
+  ":active key with test for non-empty register")
+
+
+(defvar rm-current-reg-names (append rm-lc-az rm-uc-az rm-numbers-09 nil) "list of register names that register-menu will work with" )
+(defvar rm-reg-list-ok nil "flag to show list of reg names already made")
+(defvar rm-submenu-height 26)
+
+;the next line will be updated with patch number once it is assigned.
+(defvar rm-disable-menu-key (cond ((emacs-version>= 21 5 33) :active)
+				  (t :included)))
+
+
+;---------------------------------------------------------------------
+;---- functions for register menu ------------------------------------
+;---------------------------------------------------------------------
+
+(defun rm-contents-preview ( register )       
+"Register Menu func. to generate previews based on type of objects
+in the registers:
+integer or float     format with # and print it
+marker (point,etc)   format w/* buffer name and position in buffer
+window configuration output ' + window configuration'
+frame configuration  output ' + frame configuration'
+string of text       format ' - ' + first X letters of string
+file-query           format ' - ' + first X letters of string
+rectangle copy       format ' r ' + x,y size of rect. + 1st letters of rect.
+empty string         output string 'the empty string'
+unknown contents     output string 'unknown contents'
+uses rm-preview-field-width  for the number of characters in the preview."
+
+  (let ((val (get-register register)) (output "") ) ;val is contents of register + output set to empty string
+    (cond
+     ((integerp val)           ;if contents are an integer, print it
+      (setq output (format " # %d" val )))
+
+     ((floatp val)             ;if contents are a floating point, print it
+      (setq output (format " # %g" val )))
+
+     ((markerp val)          ; if a marker, print the assoc. buffer and pos in that buffer
+      (let ((buf (marker-buffer val)))
+	(if (null buf)
+	    (setq output " * marker in no buffer")  ;case if buffer was closed after point was put into register
+	  (setq output (format " * buf: %s, pos: %d" (buffer-name buf) (marker-position val))))))
+
+     ((and (consp val) (window-configuration-p (car val))) ;if a window configuration, print a string
+      (setq output " + window configuration"))
+
+     ((and (consp val) (frame-configuration-p (car val)))  ;if a frame configuration, print a string
+      (setq output " + frame configuration"))
+
+     ((and (consp val) (eq (car val) 'file))
+      (setq output (format " - %s" (cdr val)))) ;if a file, print the name.
+
+     ((and (consp val) (eq (car val) 'file-query))         ;if a file-query, print filename and position
+      (setq output (format " - %s, pos %d" (car (cdr val)) (car (cdr (cdr val))))))
+
+     ((consp val)                                          ;if a rectangle, print 1st line and size
+      (setq output (format (format " r %%dx%%d %%.%ds" 
+				   (- rm-preview-field-width 8)) 
+			   (length (car val)) (safe-length val) (car val))))
+     ((stringp val)                                        ;if a string, print it.
+      (remove-text-properties 0 (length val) nil val)
+	(cond
+	 ;Extract first 'rm-preview-field-width' number of characters, starting with first non-whitespace.
+	 ((string-match
+	   (format "\\S-.\\{0,%d\\}" (- rm-preview-field-width 4)) 
+	   (replace-in-string (replace-in-string val "\n" " - ") "\s-+" " "))
+	  (setq output (format " s %s" (match-string 0 val))))   ; a string, print it
+	 ((string-match "^\s-+$" val)
+	  (setq output " s whitespace"))                  ;if all whitespace, print "whitespace"
+	 (t
+	  (setq output " s the empty string"))))          ;case an empty string "", print the words empty string
+     ((null val)
+      (setq output ""))                                   ;case nil, print nothing.
+     (t
+      (setq output " Unknown Contents")))                 ;all other things, print "unknown contents"
+    output))
+
+
+(defmacro rm-copy-block-to-register (i end-cmd begin-cmd)
+  "Given functions for finding the end and start of any block, generates a menu item to copy to register `i'." 
+  `(save-excursion
+    (let (end)
+      (,end-cmd)
+      (setq end (point))
+      (,begin-cmd)
+      (copy-to-register ,i end (point)))))
+
+;;;###autoload
+(defun clear-register (reg-name)
+  "Function to clear the contents of a register."
+  (interactive "Clear register: ")
+  (set-register reg-name nil))
+
+;;;###autoload
+(defun clear-all-registers ()
+  "Clears the contents of all registers currently selected for display in the register menu.
+It does not touch other registers."
+  (loop
+    for i in rm-current-reg-names   ; clear all registers in assembled list
+    do (clear-register i)))
+
+
+(defun* rm-populate-submenu (menu submenu generator register-list max-menu-height &optional &key toplevel-keys &key leaf-keys)
+  "sub program for rm-create-register-menu-with-submenus, populates submenus"
+  (loop
+    with max-height = max-menu-height
+    with menutree = (copy-sequence menu)
+    for register in register-list
+    count 1 into menu-height
+    collect `[,(char-to-string register)   ;Collect menu items into temporary list 'menu-so-far'
+	      ,generator
+	      ,@(mapcar 'eval leaf-keys)] into menu-so-far
+    when (>= menu-height max-height)       ;When menu-so-far reaches the length of our menu
+    do
+    (add-submenu menutree                  ;Add menu-so-far as a new submenu
+		 `(,submenu
+		   ,@(mapcar 'eval toplevel-keys)
+		   ("More")
+		   ,@menu-so-far)
+		 nil (default-value 'current-menubar))
+    (nconc menutree (list submenu))        ;Add another step to our current menu path.
+    (setq toplevel-keys nil)               ;Reset all loop variables, ready to accumulate another submenu-ful of menu items.
+    (setq submenu "More")
+    (setq menu-height 0)
+    (setq menu-so-far '())
+    finally
+    (add-submenu menutree                  ;On exit, dump all remaining items into a last submenu.
+		 `(,submenu
+		   ,@(mapcar 'eval toplevel-keys)
+		   ,@menu-so-far)
+		 nil
+		 (default-value 'current-menubar))))
+
+
+(defmacro rm-toggle-and-update (var)
+"toggle customize setting on/off and update Register menu"
+    `(progn
+    (setq ,var (not ,var))
+    (rm-update)))
+
+;;;###autoload
+(defun rm-update ()
+  "function for register-menu to:
+reset the list of register names used,
+reset the OK flag from the customize buffer,
+and update the submenus on register-menu."
+  (message "Updating Register Menu...")
+  (if (and
+       (boundp 'rm-submenu-height))
+      (if rm-enable
+	  (if (and rm-use-submenus rm-current-reg-names)  ; if we are using submenus
+					; and we have the names list,
+	      (rm-create-register-menu-with-submenus)     ; call function to use the menu that has submenus,
+	    (rm-create-register-menu-with-cl-input))     ; else call funct to use menu with minibuffer input
+	(delete-menu-item '("Register") (default-value 'current-menubar))))
+  (message "Done."))
+
+
+
+;---------------------------------------------------
+;---- add "Register" top menu with submenus  -------
+;---- submenus are used for selecting the    ------- 
+;---- name of the register & showing preview -------
+;---------------------------------------------------
+
+
+(defmacro rm-make-submenu-1 (submenu generator &rest foo)
+  `(rm-populate-submenu '("Register") ,submenu ',generator rm-current-reg-names rm-submenu-height ,@foo))
+
+(defun rm-create-register-menu-with-submenus ()
+  "Create submenus for register-menu, and populate them using
+ `rm-make-submenu-1'. Submenus contain lists of registers.
+RM-SUBMENU-HEIGHT is the number of menu items before adding a new sub-sub-menu."
+  (interactive)
+  (add-submenu nil '("Register") rm-before-menu-pos (default-value 'current-menubar))
+  ;;Eliminate any existing Register menu contents. This shouldn't
+  ;;be necessary, but add-submenu tends to leave "---" dividers
+  ;;in allegedly clear menus. 
+  (when (assoc "Register" (default-value 'current-menubar))        
+    (setcdr (assoc "Register" (default-value 'current-menubar)) nil))
+  (rm-make-submenu-1	"Copy to Register"
+			`(copy-to-register ,register (mark) (point))
+			:toplevel-keys '(rm-disable-menu-key '(region-active-p))
+			:leaf-keys rm-suffix-contents-preview)
+  (rm-make-submenu-1	"Move to Register"
+			`(copy-to-register ,register (mark) (point) t)
+			:toplevel-keys '(rm-disable-menu-key '(region-active-p))
+			:leaf-keys rm-suffix-contents-preview)
+  (rm-make-submenu-1	"Insert Register"
+			`(insert-register ,register)
+			:leaf-keys (append rm-suffix-contents-preview
+					   rm-active-text-or-numberp))
+  (add-menu-button	'("Register") "---" nil (default-value 'current-menubar))
+  (rm-make-submenu-1	"Prepend to Register"
+			`(prepend-to-register ,register (mark) (point))
+			:toplevel-keys '(rm-disable-menu-key '(region-active-p))
+			:leaf-keys (append rm-suffix-contents-preview
+					   rm-active-string-or-numberp))
+  (rm-make-submenu-1	"Append to Register"
+			`(append-to-register ,register (mark) (point))
+			:toplevel-keys '(rm-disable-menu-key '(region-active-p))
+			:leaf-keys (append rm-suffix-contents-preview
+					   rm-active-string-or-numberp))
+  (add-menu-button	'("Register") "---" nil (default-value 'current-menubar))
+  (rm-make-submenu-1	"Copy Rect to Register"
+			`(copy-rectangle-to-register ,register (mark) (point))
+			:toplevel-keys '(rm-disable-menu-key '(region-active-p))
+			:leaf-keys rm-suffix-contents-preview)
+  (rm-make-submenu-1	"Move Rect to Register"
+			`(copy-rectangle-to-register ,register (mark) (point) t)
+			:toplevel-keys '(rm-disable-menu-key '(region-active-p))
+			:leaf-keys rm-suffix-contents-preview)
+  (add-menu-button	'("Register") "---" nil (default-value 'current-menubar))
+  (add-menu-button	'("Register") "---" nil (default-value 'current-menubar))
+  (rm-make-submenu-1	"Function to Register"
+			`(rm-copy-block-to-register ,register end-of-defun backward-sexp)
+			:leaf-keys rm-suffix-contents-preview)
+  (rm-make-submenu-1	"Word to Register"
+			`(rm-copy-block-to-register ,register forward-word backward-word)
+			:leaf-keys rm-suffix-contents-preview)
+  (rm-make-submenu-1	"Sentence to Register"
+			`(rm-copy-block-to-register ,register forward-sentence backward-sentence)
+			:leaf-keys rm-suffix-contents-preview)
+  (rm-make-submenu-1	"Paragraph to Register"
+			`(rm-copy-block-to-register ,register forward-paragraph backward-paragraph)
+			:leaf-keys rm-suffix-contents-preview)
+  (add-menu-button	'("Register") "---" nil (default-value 'current-menubar))
+ (add-menu-button	'("Register") "---" nil (default-value 'current-menubar))
+   (rm-make-submenu-1	"Copy Point to Register"
+			`(point-to-register ,register)
+			:leaf-keys rm-suffix-contents-preview)
+  (rm-make-submenu-1	"Jump to Register"
+			`(jump-to-register ,register)
+			:leaf-keys (append rm-suffix-contents-preview
+					   rm-active-markerp))
+  (add-menu-button	'("Register") "---" nil (default-value 'current-menubar))
+  (rm-make-submenu-1	"Clear Register"
+			`(clear-register ,register)
+			:leaf-keys (append rm-suffix-contents-preview
+					   rm-active-nonnilp))
+  (add-menu-button	'("Register") ["Clear All Registers" (clear-all-registers)] nil (default-value 'current-menubar))
+  (add-menu-button	'("Register") "---" nil (default-value 'current-menubar))
+  (add-menu-button	'("Register") rm-settings-item nil (default-value 'current-menubar)))
+
+
+;;;;---------------------------------------------------------------------
+;;;;---- add "Register" top menu for interactive     --------------------
+;;;;---- minibuffer input, instead of submenu input  --------------------
+;;;;---------------------------------------------------------------------
+
+(defun rm-create-register-menu-with-cl-input ()
+  "Register Menu - create a menu for using interactive minibuffer input, 
+this is how commands work in the Cmds-->Other Rectangle/Register menu
+Register Menu settings calls a customize buffer for settings."
+  (let ((menu "Register"))
+    (add-submenu 
+     nil
+     `(,menu
+       ["Copy to Register..."    (call-interactively 'copy-to-register)
+	:active (region-active-p )]
+       ["Move to Register..."    (progn (setq current-prefix-arg 1) 
+					(call-interactively 'copy-to-register))]
+       ["Insert Register..."     (call-interactively 'insert-register)]
+       "---"
+       ["Prepend to Register..." (call-interactively 'prepend-to-register)]
+       ["Append to Register..."  (call-interactively 'append-to-register)]
+       "---"
+       ["Copy Rect to Register..." (call-interactively 'copy-rectangle-to-register)]
+       ["Move Rect to Register..." (progn (setq current-prefix-arg 1) 
+					  (call-interactively 'copy-rectangle-to-register))]
+       "---"
+       ["Function to Register"    (call-interactively 'rm-function-to-register)] 
+       ["C Func. to Register"     (call-interactively 'rm-c-function-to-register)] 
+       ["Word to Register"        (call-interactively 'rm-word-to-register)] 
+       ["Sentence to Register"    (call-interactively 'rm-sentence-to-register)] 
+       ["Paragraph to Register"   (call-interactively 'rm-paragraph-to-register)] 
+       "---"
+       ["Copy Point to Register..." (call-interactively 'point-to-register)]
+       ["Jump to Register..."       (call-interactively 'jump-to-register)]
+       "---"
+       ["Clear Register..."      (call-interactively 'clear-register)]
+       ["Clear All Registers"    (clear-all-registers)]
+       "---"
+       ,rm-settings-item)
+     rm-before-menu-pos (default-value 'current-menubar)))) 
+
+
+;;;;--------------------------------------------------------------------------
+;;;;--------------------Add a Customize Group --------------------------------
+;;;;--------------------------------------------------------------------------
+
+;;;###autoload
+(defgroup register-menu nil
+  "A Top-Level Menu for Register commands."
+:version "21.5.B32 with patches to register.el and sequence.c")
+
+;;;###autoload
+(defcustom rm-enable nil
+  "Enable or disable Register-Menu.
+Enabling this adds the Register-Menu as a top level menu."
+:tag "Register Menu Enable"
+:group 'register-menu
+:initialize 'custom-initialize-default
+:set (lambda (symbol value)
+	 (set-default symbol value)
+	 (rm-update))
+:type '(boolean))
+
+;;;###autoload
+(defcustom rm-use-submenus t 
+  "whether input for choosing the register name is in the minibuffer or on the menus."
+:tag "Register Menu input method"
+:group 'register-menu
+:initialize 'custom-initialize-default
+:set (lambda (symbol value)
+	 (set-default symbol value)
+	 (rm-update))
+:type '(choice :tag "Input Method"
+ 	  (const :tag "Keyboard Input" nil)
+ 	  (const :tag "Menu Input" t)))
+
+;;;###autoload
+(defcustom rm-submenu-height 26
+  "Max number of lines for each submenu for choosing register names.
+sane values are 10 to 36 lines high.
+a 24-30 inch monitor can have up to 36; 
+choosing 13 yields 3 submenus for a list of 36 register names."
+:tag "Register Menu Submenu Height"
+:group 'register-menu
+:initialize 'custom-initialize-default
+:set (lambda (symbol value)
+	 (set-default symbol value)
+	 (rm-update))
+:type '(integer :tag "submenu height in lines"))
+
+
+;;;###autoload
+(defcustom rm-register-set '(rm-lc-az rm-uc-az)
+  "Stores list of lisp variables to include in menu of registers.
+Each element should be a list of chars."
+:tag "Registers to display in menu:"
+:group 'register-menu
+:initialize 'custom-initialize-default
+:set (lambda (symbol value)
+	 (set-default symbol value)
+	 (setq rm-current-reg-names 
+	       (loop for variable in value
+		 append (eval variable)))
+	 (rm-update))
+:type '(set
+	  (const :tag "Lower-case letters (a-z)" rm-lc-az)
+	  (const :tag "Upper-case letters (A-Z)" rm-uc-az)
+	  (const :tag "Numbers (0-9)" rm-numbers-09)))
+
+;;;###autoload
+(defcustom rm-before-menu-pos "Options"
+  "Menu item Register menu should be inserted directly before.
+Defaults to Options, to permit a significant preview of register contents."
+:tag "Menu position"
+:group 'register-menu
+:initialize 'custom-initialize-default
+:set (lambda (symbol value)
+	 (set-default symbol value)
+	 (rm-update))
+:type 'string)
+
+
+;;;###autoload
+(defcustom rm-preview-field-width 40
+   "Width (in characters) of the preview field 
+ next to the register name in the register-menu submenus."
+:tag "Register Menu preview field width"
+:group 'register-menu
+:initialize 'custom-initialize-default
+:set (lambda (symbol value)
+ 	 (set-default symbol value)
+ 	 (rm-update))
+:type '(choice :tag "Preview Field Width"
+ 	  (const :tag "10 chars" 10)
+ 	  (const :tag "15 chars" 15)
+ 	  (const :tag "20 chars" 20)
+ 	  (const :tag "25 chars" 25)
+ 	  (const :tag "30 chars" 30)
+ 	  (const :tag "35 chars" 35)
+ 	  (const :tag "40 chars" 40)
+ 	  (const :tag "45 chars" 45)))
+
+
+
+
+;;;;---------------------------------------------------------------------
+;;;;------- start up code -----------------------------------------------
+;;;;---------------------------------------------------------------------
+
+;;;###autoload
+(unless (featurep 'register-menu)
+  (when (boundp 'current-menubar) 
+    (add-menu-button '("Options" "Menubars")
+		     "---"))) ;add a separator only first time loaded
+
+;;;###autoload
+(when (boundp 'current-menubar) 
+  (add-menu-button '("Options" "Menubars")
+		   [ "Register Menu" (progn (set-default 'rm-enable (not rm-enable)) (rm-update)) 
+		     :style toggle 
+		     :selected rm-enable]))
+
+(provide 'register-menu)
+
+;end register-menu.el
+
+
+

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 register-toolbar.el
--- /dev/null
+++ b/register-toolbar.el
@@ -0,0 +1,348 @@
+;;; register-toolbar
+;;;   12/25/2012
+;;; authors
+:;;   Benson Mitchell
+;;;   Byrel Mitchell
+;;;   Steven Mitchell
+;;; 
+;;; This is a minor mode that adds a set of icons to the default 
+;;; toolbar to make using registers for copy, move, insert 
+;;; operations easier.
+;;;
+;;; There are 11 icons total:
+;;; The first one has five states, cycling between 5 icons to 
+;;; show the current operation.  
+;;; The other 10 icons represent register names 0 thru 9.
+;;;
+;;; Purpose: Is to give users a quick way to use registers
+;;; as a multiple copy and paste feature, up to 10 registers
+;;; can be copied/pasted by the toolbar, instead of a 
+;;; system-wide clipboard that holds only one selection at a time.
+;;;
+;;; To install:
+;;; This is installed as part of edit utils, nothing beyond that is 
+;;; required for installing.
+;;;
+;;; Requirements:
+;;; 1. XEmacs needs to be compiled with the --with-toolbars option set
+;;; during the ./configure step.
+;;; 2. Toolbars need to be turned on to see the toolbar. this is 
+;;; automatically handled by this minor-mode.
+;;; 3. Toolbar height should be set to 30 pixels or higher.
+;;; 4. Requires a patch to simple.el by Byrel on 12/31/2012, or a
+;;; version later than 21.5.33 for best funcionality.
+;;;
+;;;
+;;; To use:
+;;; -mark a selection in the buffer 
+;;; -click the operation icon once or twice to get the operation you
+;;;    want to perform, say, copy-to-register
+;;; -click on one of the 0-9 icons and your marked block will be
+;;;    copied to that register.
+;;;
+;;; for subsequent copy-to-register operations, since the copy function is 
+;;; already selected, just mark a block, and click a register-name icon.
+;;; 
+;;; To insert the contents of a register, click on the operation icon
+;;; till it displays INS, then click on the register name 0-9, and your
+;;; text is copied into the buffer at the current cursor position.
+;;;
+;;; Note: if there is no marked block, and copy or move is set, all
+;;; register names are grayed-out.  Also, when Insert is the selected
+;;; operation, registers that have nothing in them are greyed-out.
+;;; 
+;;; To test this minor mode:
+;;; 1. load this file into a buffer and store the icons in a directory.
+;;; 2. set register-toolbar-icon-path to wherever the icon files are stored
+;;;     for the test.
+;;; 3. evaluate the entire file in the buffer
+;;; 4. enable the register-toolbar minor mode by opposite clicking on
+;;;    the emacs-lisp area of the modeline to bring up the minor modes menu
+;;;    and toggle register-toolbar mode.
+;;; 5. the register-toolbar icons look good with the background set to black
+;;;    You may want to at least temporarily set the toolbar background to black
+;;;     command is:
+;;;    (set-face-background 'toolbar "black")  
+;;; Or simply install the xemacs package, and follow steps 4-5.
+
+(require 'wid-edit)
+
+;;;;-------------------------------------------------------------
+;;;;--- defvars -------------------------------------------------
+;;;;-------------------------------------------------------------
+
+(defvar register-toolbar-current-operation 'copy 
+  "Register-Toolbar: keeps track of which operation to perform 
+on selected register. valid values are:
+'copy
+'move
+'insert
+'rect-copy
+'rect-move")
+
+(defvar register-toolbar-mousing-rectangle-p nil
+  "Stores former tool bar mousing mode.
+Non-nil for rectangle mode.")
+
+(defvar register-toolbar-mousing-stored-p nil
+  "Stores whether former mousing status is stored.
+See `register-toolbar-mousing-rectangle-p'.")
+
+(define-specifier-tag 'register-toolbar-toolbar)
+
+(defvar register-toolbar-mode nil 
+  "Enables the Register Toolbar mode.")
+
+(defvar register-toolbar-icon-path 
+  nil
+  "Custom installation location for register-toolbar icons.
+nil by default")
+
+;if it is not already there, add to path for icon directory
+(when register-toolbar-icon-path
+  (unless (member register-toolbar-icon-path data-directory-list)
+    (push register-toolbar-icon-path data-directory-list)))
+
+(defvar register-toolbar-0-icon nil
+  "register-toolbar:  icon representing register 0")
+
+(defvar register-toolbar-1-icon nil
+  "register-toolbar:  icon representing register 1")
+
+(defvar register-toolbar-2-icon nil
+  "register-toolbar:  icon representing register 2")
+
+(defvar register-toolbar-3-icon nil
+  "register-toolbar:  icon representing register 3")
+
+(defvar register-toolbar-4-icon nil
+  "register-toolbar:  icon representing register 4")
+
+(defvar register-toolbar-5-icon nil
+  "register-toolbar:  icon representing register 5")
+
+(defvar register-toolbar-6-icon nil
+  "register-toolbar:  icon representing register 6")
+
+(defvar register-toolbar-7-icon nil
+  "register-toolbar:  icon representing register 7")
+
+(defvar register-toolbar-8-icon nil
+  "register-toolbar:  icon representing register 8")
+
+(defvar register-toolbar-9-icon nil
+  "register-toolbar:  icon representing register 9")
+
+(defvar register-toolbar-op-icons nil
+  "Circular alist of symbols and corresponding glyph-lists.")
+
+(defvar register-toolbar-current-op-icon nil
+  "register-toolbar: holds icon for current operation." )
+
+
+;;;;-------------------------------------------------------------
+;;;;--- icon definitions ----------------------------------------
+;;;;-------------------------------------------------------------
+
+(defun register-toolbar-initialize-subfun (arg)
+  "internal to register-toolbar
+assembles list of glyphs for register ARG"
+  (let ((num (number-to-string arg)))
+    `(,(widget-glyph-find (concat "register-toolbar/icon" num "-up_28_28_32") (concat "Register " num))
+      ,(widget-glyph-find (concat "register-toolbar/icon" num "-dn_28_28_32") (concat "Register " num))
+      ,(widget-glyph-find (concat "register-toolbar/icon" num "-disabled_28_28_32") (concat "Register " num)))))
+
+(defun register-toolbar-initialize-icons ()
+  "Initializes all register-toolbar-foo-icon variables."
+  (setq register-toolbar-op-icons
+	`((copy .	(,( widget-glyph-find "register-toolbar/iconC-up_28_28_32" "Copy")))
+	  (move .	(,( widget-glyph-find "register-toolbar/iconM-up_28_28_32" "Move")))
+	  (insert .	(,( widget-glyph-find "register-toolbar/iconIns-up_28_28_32" "Insert")))
+	  (rect-copy .	(,( widget-glyph-find "register-toolbar/iconrectcopy-up_28_28_32" "Copy Rect")))
+	  (rect-move .	(,( widget-glyph-find "register-toolbar/iconrectmove-up_28_28_32" "Move Rect")))))
+  (setf (cdr (last register-toolbar-op-icons)) register-toolbar-op-icons)	;circularize into bottomless stack of pancakes.
+  (setq register-toolbar-current-op-icon (cdr (pop register-toolbar-op-icons)))
+  (loop
+    for register from 0 to 9							; set all register icons to their glyph values.
+    do
+    (set (intern (concat "register-toolbar-" (number-to-string register) "-icon"))
+	 (register-toolbar-initialize-subfun register))))
+
+(defun register-toolbar-toolbar-button-active-p (reg)
+"sets whether a toolbar button is active instead of disabled."
+  (case register-toolbar-current-operation
+    (insert
+     (get-register reg))
+    ((copy move rect-copy rect-move)
+     (region-active-p))))
+
+(defconst register-toolbar-toolbar
+ `([register-toolbar-current-op-icon   ;var containing icon list
+     register-toolbar-toggle-operation ;callback
+     t                                 ;enabled-p
+     "Choose Operation"]               ;help text
+    [register-toolbar-0-icon 
+     (register-toolbar-perform-operation 0) 
+     (register-toolbar-toolbar-button-active-p 0) "Register 0"]
+    [register-toolbar-1-icon 
+     (register-toolbar-perform-operation 1) 
+     (register-toolbar-toolbar-button-active-p 1) "Register 1"]
+    [register-toolbar-2-icon 
+     (register-toolbar-perform-operation 2) 
+     (register-toolbar-toolbar-button-active-p 2) "Register 2"]
+    [register-toolbar-3-icon 
+     (register-toolbar-perform-operation 3) 
+     (register-toolbar-toolbar-button-active-p 3) "Register 3"]
+    [register-toolbar-4-icon 
+     (register-toolbar-perform-operation 4) 
+     (register-toolbar-toolbar-button-active-p 4) "Register 4"]
+    [register-toolbar-5-icon 
+     (register-toolbar-perform-operation 5) 
+     (register-toolbar-toolbar-button-active-p 5) "Register 5"]
+    [register-toolbar-6-icon 
+     (register-toolbar-perform-operation 6) 
+     (register-toolbar-toolbar-button-active-p 6) "Register 6"]
+    [register-toolbar-7-icon 
+     (register-toolbar-perform-operation 7) 
+     (register-toolbar-toolbar-button-active-p 7) "Register 7"]
+    [register-toolbar-8-icon 
+     (register-toolbar-perform-operation 8) 
+     (register-toolbar-toolbar-button-active-p 8) "Register 8"]
+    [register-toolbar-9-icon 
+     (register-toolbar-perform-operation 9) 
+     (register-toolbar-toolbar-button-active-p 9) "Register 9"])
+  "register-toolbar: toolbar definition for list of buttons")
+
+;;;;----------------------------------------------------------------------
+;;;;----- callback functions for each button -----------------------------
+;;;;----------------------------------------------------------------------
+
+(defun register-toolbar-perform-operation ( reg-name )
+  "Perform the currently selected operation on this register."
+  (if (and (not (region-active-p)) ;if no selection & copy or move is cur.op.
+	   (or (eq register-toolbar-current-operation 1)   
+	       (eq register-toolbar-current-operation 2)))
+      (print "no selection.")                   ;just print message 
+    (case register-toolbar-current-operation    ;otherwise get the operation
+      ('copy (copy-to-register reg-name (mark) (point) ))   ;and perform it.
+      ('move (copy-to-register reg-name (mark) (point) t ))
+      ('insert (case (type-of (get-register reg-name))
+		 ('string (insert-register reg-name ))
+		 ('cons (if (stringp (car (get-register reg-name)))
+			    (insert-register reg-name)))
+		 (t (error "Uninsertable register contents"))))
+      ('rect-copy (copy-rectangle-to-register reg-name (mark) (point)))
+      ('rect-move (copy-rectangle-to-register reg-name (mark) (point) t)))))
+
+(defun register-toolbar-toggle-operation ()
+  "Toggles between 5 operations (and icons): 
+copy to register
+move to register
+insert register
+copy rect. to register
+move rect. to register
+-clicking on a register icon (0-9) performs whichever
+operation is selected by this icon."
+  (interactive)
+  (let ((next-op-icon (pop register-toolbar-op-icons))
+	(active-selection (region-active-p)))
+    (setq register-toolbar-current-op-icon (cdr next-op-icon))
+    (setq register-toolbar-current-operation (car next-op-icon))
+  ;;;
+    (case register-toolbar-current-operation
+      ((rect-move rect-copy)
+       (unless register-toolbar-mousing-stored-p
+	 (setq register-toolbar-mousing-rectangle-p mouse-track-rectangle-p)
+	 (setq register-toolbar-mousing-stored-p t))
+       (customize-set-variable 'mouse-track-rectangle-p t))
+      ((move copy)
+       (unless register-toolbar-mousing-stored-p
+	 (setq register-toolbar-mousing-rectangle-p mouse-track-rectangle-p)
+	 (setq register-toolbar-mousing-stored-p t))
+       (customize-set-variable 'mouse-track-rectangle-p nil))
+      (otherwise (when register-toolbar-mousing-stored-p
+		   (customize-set-variable 'mouse-track-rectangle-p
+					   register-toolbar-mousing-rectangle-p))
+		 (setq register-toolbar-mousing-stored-p nil)))
+    (register-toolbar-set-toolbar)
+    (zmacs-deactivate-region)
+    (redisplay-frame)  ;this line needed for xwindows, not needed for MS windows
+    (when active-selection 
+      (zmacs-activate-region))))
+  
+
+(defun register-toolbar-set-toolbar ()
+"inserts the toolbar or refresh it after changes"
+  (remove-specifier default-toolbar nil 'register-toolbar-toolbar)
+  (sit-for 0)   ;-----------------needed for windows, xemacs 21.4 or 21.5
+  (add-spec-to-specifier 
+   default-toolbar-visible-p t nil 'register-toolbar-toolbar)
+  (add-spec-to-specifier
+   default-toolbar
+   (append
+    (specifier-instance default-toolbar)
+    register-toolbar-toolbar)
+   nil
+   'register-toolbar-toolbar))
+
+
+(defun register-toolbar-remove-toolbar ()
+"register-icons: remove icons from the toolbar"
+  (remove-specifier default-toolbar nil 'register-toolbar-toolbar)
+  (remove-specifier default-toolbar-visible-p nil 'register-toolbar-toolbar))
+
+;;;###autoload
+(defun register-toolbar-mode (&optional turn-on)
+  "Adds icons for easy access to registers to the toolbar.
+The first button sets the operation used on the registers. 
+Three operations are currently defined: 
+copy to register, 
+move to register,
+insert from register. 
+Clicking this button toggles between the operations. 
+The remaining ten icons represent the registers from 0-9, 
+& when selected perfrom the current operation on that register."
+  (interactive "P")
+  (unless (featurep 'toolbar)
+    (error "Must have toolbar support to use this mode!"))
+  (setq register-toolbar-mode
+	(if (null turn-on) (not register-toolbar-mode)
+	  (> (prefix-numeric-value turn-on) 0)))
+  (if register-toolbar-mode
+      (progn  ;;enabling the minor mode
+	(unless default-toolbar-visible-p
+	  (message "Toolbar disabled; check toolbar-enabled-p"))
+	(unless (> (max
+		    (specifier-instance default-toolbar-height)
+		    (specifier-instance default-toolbar-width)) 29)
+	  (message 
+	   "Toolbar too short for register icons. Set default-toolbar-height to 30 or more."))
+	(register-toolbar-initialize-icons)
+	(register-toolbar-set-toolbar)
+	(add-hook 'zmacs-activate-region-hook 'register-toolbar-set-toolbar)
+	(add-hook 'zmacs-deactivate-region-hook 'register-toolbar-set-toolbar)
+	(register-toolbar-toggle-operation))
+    ;; clean up when leaving the minor mode
+    (when register-toolbar-mousing-stored-p		; Restore mousing setting
+		 (customize-set-variable 'mouse-track-rectangle-p
+					 register-toolbar-mousing-rectangle-p))
+    (zmacs-update-region)
+    (remove-hook 'zmacs-activate-region-hook 'register-toolbar-set-toolbar)
+    (remove-hook 'zmacs-deactivate-region-hook 'register-toolbar-set-toolbar)
+    (register-toolbar-remove-toolbar)))
+
+
+;;;;-----------------------------------------------------------
+;;;;---- Initialize minor mode --------------------------------
+;;;;-----------------------------------------------------------
+;;;###autoload
+(unless (assq 'register-toolbar-mode minor-mode-alist)
+  (setq minor-mode-alist
+	(cons '(register-toolbar-mode "") minor-mode-alist)))
+
+(unless register-toolbar-op-icons
+  (register-toolbar-initialize-icons))
+
+(provide 'register-toolbar)
+
+;--- end of register-toolbar.el

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/.directory
--- /dev/null
+++ b/rt/.directory
@@ -0,0 +1,3 @@
+[Dolphin]
+Timestamp=2013,12,31,17,50,28
+ViewMode=1

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/LICENSE
--- /dev/null
+++ b/rt/LICENSE
@@ -0,0 +1,3 @@
+These images copyright Steven Mitchell and Benson Mitchell (2013)
+
+and are released to the Public Domain.

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon0-disabled_28_28_32.png
Binary file rt/icon0-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon0-dn_28_28_32.png
Binary file rt/icon0-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon0-up_28_28_32.png
Binary file rt/icon0-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon1-disabled_28_28_32.png
Binary file rt/icon1-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon1-dn_28_28_32.png
Binary file rt/icon1-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon1-up_28_28_32.png
Binary file rt/icon1-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon2-disabled_28_28_32.png
Binary file rt/icon2-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon2-dn_28_28_32.png
Binary file rt/icon2-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon2-up_28_28_32.png
Binary file rt/icon2-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon3-disabled_28_28_32.png
Binary file rt/icon3-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon3-dn_28_28_32.png
Binary file rt/icon3-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon3-up_28_28_32.png
Binary file rt/icon3-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon4-disabled_28_28_32.png
Binary file rt/icon4-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon4-dn_28_28_32.png
Binary file rt/icon4-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon4-up_28_28_32.png
Binary file rt/icon4-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon5-disabled_28_28_32.png
Binary file rt/icon5-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon5-dn_28_28_32.png
Binary file rt/icon5-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon5-up_28_28_32.png
Binary file rt/icon5-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon6-disabled_28_28_32.png
Binary file rt/icon6-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon6-dn_28_28_32.png
Binary file rt/icon6-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon6-up_28_28_32.png
Binary file rt/icon6-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon7-disabled_28_28_32.png
Binary file rt/icon7-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon7-dn_28_28_32.png
Binary file rt/icon7-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon7-up_28_28_32.png
Binary file rt/icon7-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon8-disabled_28_28_32.png
Binary file rt/icon8-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon8-dn_28_28_32.png
Binary file rt/icon8-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon8-up_28_28_32.png
Binary file rt/icon8-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon9-disabled_28_28_32.png
Binary file rt/icon9-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon9-dn_28_28_32.png
Binary file rt/icon9-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/icon9-up_28_28_32.png
Binary file rt/icon9-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconC-disabled_28_28_32.png
Binary file rt/iconC-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconC-dn_28_28_32.png
Binary file rt/iconC-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconC-up_28_28_32.png
Binary file rt/iconC-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconIns-disabled_28_28_32.png
Binary file rt/iconIns-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconIns-dn_28_28_32.png
Binary file rt/iconIns-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconIns-up_28_28_32.png
Binary file rt/iconIns-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconM-disabled_28_28_32.png
Binary file rt/iconM-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconM-dn_28_28_32.png
Binary file rt/iconM-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconM-up_28_28_32.png
Binary file rt/iconM-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconrectcopy-disabled_28_28_32.png
Binary file rt/iconrectcopy-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconrectcopy-dn_28_28_32.png
Binary file rt/iconrectcopy-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconrectcopy-up_28_28_32.png
Binary file rt/iconrectcopy-up_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconrectmove-disabled_28_28_32.png
Binary file rt/iconrectmove-disabled_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconrectmove-dn_28_28_32.png
Binary file rt/iconrectmove-dn_28_28_32.png has changed

diff -r 987a8f165ca55d13410e6a0546928278d7bbf66c -r 0fb7a0efa2fe7c9b30bbb59baefcaa0dee2e5c37 rt/iconrectmove-up_28_28_32.png
Binary file rt/iconrectmove-up_28_28_32.png has changed

Repository URL: https://bitbucket.org/xemacs/edit-utils/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.