Elisp: universal-argument (prefix argument)

By Xah Lee. Date: . Last updated: .

What is universal-argument

How to Get Universal Argument

To make your command aware of Universal Argument, in the function body, check the builtin variable

current-prefix-arg

It holds the value of universal argument.

(defun my-test ()
  "print value of `current-prefix-arg'"
  (interactive)
  (message "%s" current-prefix-arg))

alternatively, use

Possible Values of Universal Argument

Here's the possible values of current-prefix-arg and (prefix-numeric-value current-prefix-arg)

Key Inputcurrent-prefix-argprefix-numeric-value
nonenil1
Ctrl+u -Symbol --1
Ctrl+u - 2Number -2-2
Ctrl+u 1Number 11
Ctrl+u 4Number 44
Ctrl+uList '(4)4
Ctrl+u Ctrl+uList '(16)16
Ctrl+u Ctrl+u Ctrl+uList '(64)64

Convert current-prefix-arg to number

The function prefix-numeric-value converts current-prefix-arg to number.

(defun my-test ()
 "print numerical prefix arg received"
 (message "%s" (prefix-numeric-value current-prefix-arg) )
)

Reference

Elisp, Get User Input