Function: evil-get-register

evil-get-register is a byte-compiled function defined in evil-common.el.

Signature

(evil-get-register REGISTER &optional NOERROR)

Documentation

Return contents of REGISTER.

Signal an error if empty, unless NOERROR is non-nil.

The following special registers are supported.
  " the unnamed register
  * the clipboard contents
  + the clipboard contents
  <C-w> the word at point (ex mode only)
  <C-a> the WORD at point (ex mode only)
  <C-o> the symbol at point (ex mode only)
  <C-f> the current file at point (ex mode only)
  % the current file name (read only)
  # the alternate file name (read only)
  / the last search pattern (read only)
  : the last command line (read only)
  . the last inserted text (read only)
  - the last small (less than a line) delete
  _ the black hole register
  = the expression register (read only)

Source Code

;; Defined in ~/.emacs.d/elpa/evil-20251108.138/evil-common.el
(defun evil-get-register (register &optional noerror)
  "Return contents of REGISTER.
Signal an error if empty, unless NOERROR is non-nil.

The following special registers are supported.
  \"  the unnamed register
  *  the clipboard contents
  +  the clipboard contents
  <C-w> the word at point (ex mode only)
  <C-a> the WORD at point (ex mode only)
  <C-o> the symbol at point (ex mode only)
  <C-f> the current file at point (ex mode only)
  %  the current file name (read only)
  #  the alternate file name (read only)
  /  the last search pattern (read only)
  :  the last command line (read only)
  .  the last inserted text (read only)
  -  the last small (less than a line) delete
  _  the black hole register
  =  the expression register (read only)"
  (unless (characterp register) (error "Invalid register `%S'" register))
  (condition-case err
      (or (cond
           ((eq register ?\")
            (current-kill 0))
           ((<= ?1 register ?9)
            (let ((reg (- register ?1)))
              (and (< reg (length kill-ring))
                   (current-kill reg t))))
           ((memq register '(?* ?+))
            (let ((what (if (eq register ?*) 'PRIMARY 'CLIPBOARD)))
              (if (eval-when-compile (>= emacs-major-version 29))
                  (gui--selection-value-internal what)
                ;; The following code is based on `x-selection-value-internal'
                ;; (now `gui--selection-value-internal') circa Emacs 24. We're
                ;; unsure why exactly it's duplicated here, and it's possible
                ;; it needn't be for newer versions of Emacs.
                (let ((request-type (or (bound-and-true-p x-select-request-type)
                                        '(UTF8_STRING COMPOUND_TEXT STRING)))
                      text)
                  (unless (consp request-type)
                    (setq request-type (list request-type)))
                  (while (and request-type (not text))
                    (setq text (ignore-errors
                                 (evil-get-selection what (pop request-type)))))
                  (when text
                    (remove-text-properties 0 (length text) '(foreign-selection nil) text))
                  text))))
           ((eq register ?\C-W)
            (with-current-buffer
                (or evil-ex-original-buffer
                    (let ((w (minibuffer-selected-window))) (and w (window-buffer w)))
                    (user-error "Register <C-w> is only available in Ex state"))
              (thing-at-point 'evil-word)))
           ((eq register ?\C-A)
            (with-current-buffer
                (or evil-ex-original-buffer
                    (let ((w (minibuffer-selected-window))) (and w (window-buffer w)))
                    (user-error "Register <C-a> is only available in Ex state"))
              (thing-at-point 'evil-WORD)))
           ((eq register ?\C-O)
            (with-current-buffer
                (or evil-ex-original-buffer
                    (let ((w (minibuffer-selected-window))) (and w (window-buffer w)))
                    (user-error "Register <C-o> is only available in Ex state"))
              (thing-at-point 'evil-symbol)))
           ((eq register ?\C-F)
            (with-current-buffer
                (or evil-ex-original-buffer
                    (let ((w (minibuffer-selected-window))) (and w (window-buffer w)))
                    (user-error "Register <C-f> is only available in Ex state"))
              (thing-at-point 'filename)))
           ((eq register ?\C-L)
            (with-current-buffer
                (or evil-ex-original-buffer
                    (let ((w (minibuffer-selected-window))) (and w (window-buffer w)))
                    (user-error "Register <C-l> is only available in Ex state"))
              (replace-regexp-in-string "\n\\'" "" (thing-at-point 'line))))
           ((eq register ?%)
            (or (buffer-file-name
                 (or evil-ex-original-buffer
                     (let ((w (minibuffer-selected-window))) (and w (window-buffer w)))))
                (user-error "No file name")))
           ((= register ?#)
            (or (with-current-buffer (other-buffer) (buffer-file-name))
                (user-error "No file name")))
           ((eq register ?/)
            (defvar evil-search-module)
            (or (car (cond
                      ((eq evil-search-module 'evil-search) evil-ex-search-history)
                      (isearch-regexp regexp-search-ring)
                      (t search-ring)))
                (user-error "No previous regular expression")))
           ((eq register ?:)
            (or (car evil-ex-history) (user-error "No previous command line")))
           ((eq register ?.) evil-last-insertion)
           ((eq register ?-) evil-last-small-deletion)
           ((eq register ?=)
            (let ((enable-recursive-minibuffers t))
              (setq evil-last-=-register-input
                    (minibuffer-with-setup-hook
                        (lambda ()
                          (when evil-last-=-register-input
                            (add-hook 'pre-command-hook #'evil-ex-remove-default nil t)))
                      (read-from-minibuffer
                       "="
                       (and evil-last-=-register-input
                            (propertize evil-last-=-register-input 'face 'shadow))
                       evil-eval-map
                       nil
                       'evil-eval-history
                       evil-last-=-register-input
                       t)))
              (evil--eval-expr evil-last-=-register-input)))
           ((eq register ?_) "") ; the black hole register
           (t (setq register (downcase register))
              (get-register register)))
          (user-error "Register `%c' is empty" register))
    (error (unless noerror (signal (car err) (cdr err))))))