File: clojure-mode.el.html

Provides font-lock, indentation, navigation and basic refactoring for the Clojure programming language (https://clojure.org).

Using clojure-mode with paredit or smartparens is highly recommended.

Here are some example configurations:

  ;; require or autoload paredit-mode
  (add-hook 'clojure-mode-hook #'paredit-mode)

  ;; require or autoload smartparens
  (add-hook 'clojure-mode-hook #'smartparens-strict-mode)

See inf-clojure (https://github.com/clojure-emacs/inf-clojure) for basic interaction with Clojure subprocesses.

See CIDER (https://github.com/clojure-emacs/cider) for better interaction with subprocesses via nREPL.

Defined variables (82)

clojure--align-search-regexp-cacheCached regexp for ‘clojure--find-sexp-to-align’.
clojure--beginning-of-reader-conditional-regexpRegexp denoting the beginning of a reader conditional.
clojure--comment-macro-regexpRegexp matching the start of a comment sexp.
clojure--docstring-def-formsForms whose second argument position is a docstring.
clojure--extension-mode-alistAlist mapping file-name regexes to their expected Clojure major mode.
clojure--keyword-sym-forbidden-1st-charsA list of chars that a Clojure keyword symbol cannot start with.
clojure--keyword-sym-regexpA regexp matching a Clojure keyword name or keyword namespace.
clojure--let-regexpRegexp matching let like expressions, i.e. "let", "when-let", "if-let".
clojure--reader-and-comment-regexpRegexp matching both ‘#_’ macro and a comment sexp.
clojure--sym-forbidden-1st-charsA list of chars that a Clojure symbol cannot start with.
clojure--sym-forbidden-rest-charsA list of chars that a Clojure symbol cannot contain.
clojure--sym-regexpA regexp matching a Clojure symbol or namespace alias.
clojure-align-binding-formsList of strings matching forms that have binding forms.
clojure-align-cond-formsList of strings identifying cond-like forms.
clojure-align-forms-automaticallyIf non-nil, vertically align some forms automatically.
clojure-align-reader-conditionalsWhether to align reader conditionals, as if they were maps.
clojure-align-separatorSeparator passed to ‘align-region’ when performing vertical alignment.
clojure-build-tool-filesA list of files, which identify a Clojure project’s root.
clojure-cache-nsWhether to cache the results of ‘clojure-find-ns’.
clojure-cache-project-dirWhether to cache the results of ‘clojure-project-dir’.
clojure-cached-nsA buffer ns cache used to speed up ns-related operations.
clojure-cached-project-dirA project dir cache used to speed up related operations.
clojure-cheatsheet-urlThe URL of the official Clojure cheatsheet.
clojure-comment-regexpComment mode.
clojure-defun-indentsList of additional symbols with defun-style indentation in Clojure.
clojure-directory-prefixesA list of directory prefixes used by ‘clojure-expected-ns’.
clojure-docstring-fill-columnValue of ‘fill-column’ to use when filling a docstring.
clojure-docstring-fill-prefix-widthWidth of ‘fill-prefix’ when filling a docstring.
clojure-enable-indent-specsControl whether to honor indent specs.
clojure-expected-ns-functionThe function used to determine the expected namespace of a file.
clojure-font-lock-keywordsDefault expressions to highlight in Clojure mode.
clojure-get-indent-functionFunction to get the indent spec of a symbol.
clojure-guidesA list of all official Clojure guides.
clojure-guides-base-urlThe base URL for official Clojure guides.
clojure-indent-keyword-styleIndentation style to use for forms that start with a keyword.
clojure-indent-styleIndentation style to use for function forms and macro forms.
clojure-max-backtrackingMaximum number of levels to walk up the sexp tree for indent context.
clojure-mode-abbrev-tableAbbrev table for ‘clojure-mode’.
clojure-mode-hookHook run after entering Clojure mode.
clojure-mode-mapKeymap for Clojure mode.
clojure-mode-menuClojure Mode Menu
clojure-mode-report-bug-urlThe URL to report a ‘clojure-mode’ issue.
clojure-mode-syntax-tableSyntax table for Clojure mode.
clojure-mode-versionThe current version of ‘clojure-mode’.
clojure-omit-space-between-tag-and-delimitersAllowed opening delimiter characters after a reader literal tag.
clojure-preferred-build-toolPreferred build tool file to identify the project root.
clojure-project-root-functionFunction to locate clojure project root directory.
clojure-refactor-mapKeymap for Clojure refactoring commands.
clojure-refactor-map-prefixClojure refactor keymap prefix.
clojure-reference-base-urlThe base URL for the official Clojure reference.
clojure-special-arg-indent-factorFactor of the ‘lisp-body-indent’ used to indent special arguments.
clojure-style-guide-urlThe URL of the Clojure style guide.
clojure-thread-all-but-lastNon-nil means do not thread the last expression.
clojure-toplevel-inside-comment-formEval top level forms inside comment forms instead of the comment form itself.
clojure-use-backtracking-indentWhen non-nil, enable context-sensitive indentation.
clojure-use-metadata-for-privacyIf nil, ‘clojure-cycle-privacy’ will use (defn- f []).
clojure-verify-major-modeIf non-nil, warn when activating the wrong ‘major-mode’.
clojurec-mode-abbrev-tableAbbrev table for ‘clojurec-mode’.
clojurec-mode-hookHook run after entering ClojureC mode.
clojurec-mode-mapKeymap for ‘clojurec-mode’.
clojurec-mode-syntax-tableSyntax table for ‘clojurec-mode’.
clojuredart-mode-abbrev-tableAbbrev table for ‘clojuredart-mode’.
clojuredart-mode-hookHook run after entering ClojureDart mode.
clojuredart-mode-mapKeymap for ‘clojuredart-mode’.
clojuredart-mode-syntax-tableSyntax table for ‘clojuredart-mode’.
clojurescript-font-lock-keywordsAdditional font-locking for ‘clojurescript-mode’.
clojurescript-mode-abbrev-tableAbbrev table for ‘clojurescript-mode’.
clojurescript-mode-hookHook run after entering ClojureScript mode.
clojurescript-mode-mapKeymap for ‘clojurescript-mode’.
clojurescript-mode-syntax-tableSyntax table for ‘clojurescript-mode’.
edn-mode-abbrev-tableAbbrev table for ‘edn-mode’.
edn-mode-hookHook run after entering EDN mode.
edn-mode-mapKeymap for EDN mode.
edn-mode-syntax-tableSyntax table for ‘edn-mode’.
jank-mode-abbrev-tableAbbrev table for ‘jank-mode’.
jank-mode-hookHook run after entering Jank mode.
jank-mode-mapKeymap for ‘jank-mode’.
jank-mode-syntax-tableSyntax table for ‘jank-mode’.
joker-mode-abbrev-tableAbbrev table for ‘joker-mode’.
joker-mode-hookHook run after entering Joker mode.
joker-mode-mapKeymap for ‘joker-mode’.
joker-mode-syntax-tableSyntax table for ‘joker-mode’.

Defined functions (152)

add-custom-clojure-indents(NAME VALUE)
clojure--add-arity-defprotocol-internal()
clojure--add-arity-internal()
clojure--add-arity-reify-internal()
clojure--align-search-regexp()
clojure--beginning-of-current-let-binding()
clojure--check-wrong-major-mode()
clojure--collect-ns-aliases(BEG END NS-FORM-P)
clojure--convert-collection(COLL-OPEN COLL-CLOSE)
clojure--ensure-parens-around-function-names()
clojure--find-arglist-metadata-start(BRACKET-POS)
clojure--find-indent-spec(&optional FUNCTION-NAME)
clojure--find-indent-spec-backtracking()
clojure--find-ns-in-direction(DIRECTION)
clojure--find-sexp-to-align(END)
clojure--fix-sexp-whitespace(&optional MOVE-OUT)
clojure--font-locked-as-string-p(&optional REGEXP)
clojure--gather-fn-literal-args()
clojure--get-indent-method(FUNCTION-NAME)
clojure--goto-form(NAME)
clojure--goto-let()
clojure--in-comment-p()
clojure--in-string-p()
clojure--indent-spec-to-legacy(SPEC)
clojure--indent-spec-to-modern(SPEC)
clojure--inside-let-binding-p()
clojure--introduce-let-internal(NAME &optional N)
clojure--keyword-to-symbol(KEYWORD)
clojure--let-backward-slurp-sexp-internal()
clojure--let-forward-slurp-sexp-internal()
clojure--looking-at-non-logical-sexp()
clojure--looking-at-top-level-form(&optional POINT)
clojure--maybe-quoted-symbol-p(X)
clojure--maybe-unjoin-line()
clojure--modern-indent-spec-p(SPEC)
clojure--move-to-let-internal(NAME)
clojure--normal-indent(LAST-SEXP INDENT-MODE)
clojure--not-function-form-p()
clojure--nothing-more-to-unwind()
clojure--point-after(&rest ACTIONS)
clojure--pop-out-of-threading()
clojure--position-for-alignment()
clojure--previous-line()
clojure--read-let-bindings()
clojure--remove-superfluous-parens()
clojure--rename-ns-alias-internal(CURRENT-ALIAS NEW-ALIAS)
clojure--rename-ns-alias-usages(CURRENT-ALIAS NEW-ALIAS BEG END)
clojure--replace-let-bindings-and-indent(&rest _)
clojure--replace-sexp-with-binding(BOUND-NAME INIT-EXPR)
clojure--replace-sexps-with-bindings(BINDINGS)
clojure--replace-sexps-with-bindings-and-indent()
clojure--search-comment-macro(LIMIT)
clojure--search-comment-macro-internal(LIMIT)
clojure--search-letfn-name(LIMIT)
clojure--search-whitespace-after-next-sexp(&optional BOUND NOERROR)
clojure--sexp-regexp(SEXP)
clojure--sort-following-sexps()
clojure--substitute-fn-literal-arg(ARG SUB END)
clojure--thread-all(FIRST-OR-LAST-THREAD BUT-LAST)
clojure--thread-first()
clojure--thread-last()
clojure--threadable-p()
clojure--toggle-ignore-next-sexp(&optional N)
clojure--unwind-first()
clojure--unwind-last()
clojure--unwrap-legacy-spec(SPEC DEPTH)
clojure--valid-indent-spec-p(SPEC)
clojure--valid-modern-indent-rule-p(RULE)
clojure--valid-put-clojure-indent-call-p(EXP)
clojure--valid-unquoted-indent-spec-p(SPEC)
clojure--wrap-defn(DEPTH)
clojure-adaptive-fill-function()
clojure-add-arity()
clojure-align(BEG END)
clojure-auto-fill-function()
clojure-backward-logical-sexp(&optional N)
clojure-beginning-of-defun-function(&optional N)
clojure-clear-cache()
clojure-convert-collection-to-list()
clojure-convert-collection-to-map()
clojure-convert-collection-to-quoted-list()
clojure-convert-collection-to-set()
clojure-convert-collection-to-vector()
clojure-current-defun-name()
clojure-cycle-if()
clojure-cycle-not()
clojure-cycle-privacy()
clojure-cycle-when()
clojure-delete-and-extract-sexp()
clojure-docstring-fill-prefix()
clojure-expected-ns(&optional PATH)
clojure-fill-paragraph(&optional JUSTIFY)
clojure-find-def()
clojure-find-ns(&optional SUPPRESS-ERRORS)
clojure-font-lock-def-at-point(POINT)
clojure-font-lock-escaped-chars(BOUND)
clojure-font-lock-extend-region-def()
clojure-font-lock-regexp-groups(BOUND)
clojure-font-lock-setup()
clojure-font-lock-syntactic-face-function(STATE)
clojure-forward-logical-sexp(&optional N)
clojure-get-indent-spec(SYM)
clojure-in-docstring-p()
clojure-indent-function(INDENT-POINT STATE)
clojure-indent-line()
clojure-indent-region(BEG END)
clojure-insert-ns-form()
clojure-insert-ns-form-at-point()
clojure-introduce-let(&optional N)
clojure-let-backward-slurp-sexp(&optional N)
clojure-let-forward-slurp-sexp(&optional N)
clojure-match-next-def()
clojure-mode()
clojure-mode-display-version()
clojure-mode-menu(ARG1)
clojure-mode-report-bug()
clojure-mode-variables()
clojure-move-to-let()
clojure-paredit-setup(&optional KEYMAP)
clojure-project-dir(&optional DIR-NAME)
clojure-project-relative-path(PATH)
clojure-project-root-path(&optional DIR-NAME)
clojure-promote-fn-literal()
clojure-rename-ns-alias()
clojure-sexp-starts-until-position(POSITION)
clojure-show-cache()
clojure-sort-ns()
clojure-space-for-delimiter-p(ENDP DELIM)
clojure-string-start(&optional REGEX)
clojure-thread()
clojure-thread-first-all(BUT-LAST)
clojure-thread-last-all(BUT-LAST)
clojure-toggle-ignore(&optional N)
clojure-toggle-ignore-defun()
clojure-toggle-ignore-surrounding-form(&optional ARG)
clojure-toggle-keyword-string()
clojure-top-level-form-p(FIRST-FORM)
clojure-unwind(&optional N)
clojure-unwind-all()
clojure-update-ns()
clojure-view-cheatsheet()
clojure-view-guide()
clojure-view-reference-section()
clojure-view-style-guide()
clojurec-mode()
clojuredart-mode()
clojurescript-mode()
define-clojure-indent(&rest KVS)
edn-mode()
jank-mode()
joker-mode()
put-clojure-indent(SYM INDENT)

Defined faces (3)

clojure-character-faceFace used to font-lock Clojure character literals.
clojure-discard-faceFace used to font-lock forms discarded by Clojure's #_ reader macro.
clojure-keyword-faceFace used to font-lock Clojure keywords (:something).