Function: viper-push-onto-ring
viper-push-onto-ring is a byte-compiled function defined in
viper-util.el.gz.
Signature
(viper-push-onto-ring ITEM RING-VAR)
Source Code
;; Defined in /usr/src/emacs/lisp/emulation/viper-util.el.gz
;; Push item onto ring. The second argument is a ring-variable, not value.
(defun viper-push-onto-ring (item ring-var)
(or (ring-p (symbol-value ring-var))
(set ring-var (make-ring (symbol-value (intern (format "%S-size" ring-var))))))
(or (null item) ; don't push nil
(and (stringp item) (string= item "")) ; or empty strings
(equal item (viper-current-ring-item (symbol-value ring-var))) ; or old stuff
;; Since viper-set-destructive-command checks if we are inside
;; viper-repeat, we don't check whether this-command-keys is a `.'. The
;; cmd viper-repeat makes a call to the current function only if `.' is
;; executing a command from the command history. It doesn't call the
;; push-onto-ring function if `.' is simply repeating the last
;; destructive command. We only check for ESC (which happens when we do
;; insert with a prefix argument, or if this-command-keys doesn't give
;; anything meaningful (in that case we don't know what to show to the
;; user).
(and (eq ring-var 'viper-command-ring)
(string-match "\\([0-9]*\e\\|^[ \t]*$\\|escape\\)"
(viper-array-to-string (this-command-keys))))
(viper-ring-insert (symbol-value ring-var) item))
)