Elisp: provide, require, features

By Xah Lee. Date: . Last updated: .

The purpose of emacs “features” is for emacs to know if a package is already loaded.

features

A global variable. Its value is a list of Symbols, each symbol represent a emacs “feature” that's been loaded.

provide

(provide symbol)
Add symbol to the features list.

require

(require symbol &optional FILENAME NOERROR)

  • Checks if symbol is in variable features.
  • If not, call load to load it.
  • File name is guessed from symbol, or specified in the optional argument.

This function are used in elisp libraries or scripts, similar to other language's “import”.

featurep

(featurep FEATURE &optional SUBFEATURE)

Return t if FEATURE is loaded.

;; check if a feature has been loaded
(featurep 'dired)

here's sample value of features:

emacs features 2020-12-07 gXj4f
emacs features 2020-12-07

Emacs Lisp, Package System

Emacs Lisp, writing a major mode. Essentials

Emacs Lisp, Get Version, OS Type, System Info, etc