;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\307\310\311\312\313\314\315\316\317\320\317\321& \207" [require cl-lib imenu newcomment align subr-x lisp-mnt custom-declare-group clojure nil "Major mode for editing Clojure code." :prefix "clojure-" :group languages :link (url-link :tag "GitHub" "https://github.com/clojure-emacs/clojure-mode") (emacs-commentary-link :tag "Commentary" "clojure-mode")] 12) #@40 The current version of `clojure-mode'. (defconst clojure-mode-version "5.13.0" (#$ . 537)) (byte-code "\300\301\302\303\304\305%\210\300\306\307\310\304\311%\210\312\313\314\315\316DD\317\320\321\322\323\304\324& \210\312\325\314\315\326DD\327\322\330\320\331&\210\312\332\314\315\333DD\334\322\335\320\336&\210\312\337\314\315\340DD\341\322\335\320\336&\210\312\342\314\315\343DD\344\322\335\320\336&\210\312\345\314\315\346DD\347\322\350\320\351&\210\312\352\314\315\353DD\354\322\355\304\356\320\357& \210\312\360\314\315\361DD\362\322\315\363\364\304\365& \210\312\366\314\315\367DD\370\322\371\304\372&\207" [custom-declare-face clojure-keyword-face ((t (:inherit font-lock-constant-face))) "Face used to font-lock Clojure keywords (:something)." :package-version (clojure-mode . "3.0.0") clojure-character-face ((t (:inherit font-lock-string-face))) "Face used to font-lock Clojure character literals." (clojure-mode . "3.0.0") custom-declare-variable clojure-indent-style funcall function #[0 "\300\207" [always-align] 1] "Indentation style to use for function forms and macro forms.\nThere are two cases of interest configured by this variable.\n\n- Case (A) is when at least one function argument is on the same\n line as the function name.\n- Case (B) is the opposite (no arguments are on the same line as\n the function name). Note that the body of macros is not\n affected by this variable, it is always indented by\n `lisp-body-indent' (default 2) spaces.\n\nNote that this variable configures the indentation of function\nforms (and function-like macros), it does not affect macros that\nalready use special indentation rules.\n\nThe possible values for this variable are keywords indicating how\nto indent function forms.\n\n `always-align' - Follow the same rules as `lisp-mode'. All\n args are vertically aligned with the first arg in case (A),\n and vertically aligned with the function name in case (B).\n For instance:\n (reduce merge\n some-coll)\n (reduce\n merge\n some-coll)\n\n `always-indent' - All args are indented like a macro body.\n (reduce merge\n some-coll)\n (reduce\n merge\n some-coll)\n\n `align-arguments' - Case (A) is indented like `lisp', and\n case (B) is indented like a macro body.\n (reduce merge\n some-coll)\n (reduce\n merge\n some-coll)" :safe symbolp :type (choice (const :tag "Same as `lisp-mode'" 'always-align) (const :tag "Indent like a macro body" 'always-indent) (const :tag "Indent like a macro body unless first arg is on the same line" 'align-arguments)) (clojure-mode . "5.2.0") clojure-use-backtracking-indent #[0 "\300\207" [t] 1] "When non-nil, enable context sensitive indentation." boolean booleanp clojure-max-backtracking #[0 "\300\207" [3] 1] "Maximum amount to backtrack up a list to check for context." integer integerp clojure-docstring-fill-column #[0 "\207" [fill-column] 1] "Value of `fill-column' to use when filling a docstring." clojure-docstring-fill-prefix-width #[0 "\300\207" [2] 1] "Width of `fill-prefix' when filling a docstring.\nThe default value conforms with the de facto convention for\nClojure docstrings, aligning the second line with the opening\ndouble quotes on the third column." clojure-omit-space-between-tag-and-delimiters #[0 "\300\207" [(91 123 40)] 1] "Allowed opening delimiter characters after a reader literal tag.\nFor example, [ is allowed in :db/id[:db.part/user]." (set (const :tag "[" 91) (const :tag "{" 123) (const :tag "(" 40) (const :tag "\"" 34)) #[257 "\211<\205 \300\301\"\207" [cl-every characterp] 4 "\n\n(fn VALUE)"] clojure-build-tool-files #[0 "\300\207" [("project.clj" "build.boot" "build.gradle" "build.gradle.kts" "deps.edn" "shadow-cljs.edn")] 1] "A list of files, which identify a Clojure project's root.\nOut-of-the box `clojure-mode' understands lein, boot, gradle,\n shadow-cljs and tools.deps." (repeat string) (clojure-mode . "5.0.0") #[257 "\211<\205 \300\301\"\207" [cl-every stringp] 4 "\n\n(fn VALUE)"] clojure-project-root-function #[0 "\300\207" [clojure-project-root-path] 1] "Function to locate clojure project root directory." :risky t (clojure-mode . "5.7.0") clojure-refactor-map-prefix #[0 "\300\207" [""] 1] "Clojure refactor keymap prefix." string (clojure-mode . "5.6.0")] 10) #@42 Keymap for Clojure refactoring commands. (defvar clojure-refactor-map (byte-code "\300 \301\302\303#\210\301\304\303#\210\301\305\306#\210\301\307\306#\210\301\310\311#\210\301\312\311#\210\301\313\314#\210\301\315\314#\210\301\316\317#\210\301\320\317#\210\301\321\322#\210\301\323\322#\210\301\324\325#\210\301\326\325#\210\301\327\330#\210\301\331\330#\210\301\332\333#\210\301\334\333#\210\301\335\336#\210\301\337\336#\210\301\340\341#\210\301\342\341#\210\301\343\344#\210\301\345\344#\210\301\346\347#\210\301\350\347#\210\301\351\352#\210\301\353\354#\210\301\355\356#\210\301\357\360#\210\301\361\362#\210\301\363\364#\210\301\365\366#\210\301\367\370#\210\301\371\372#\210\301\373\374#\210\301\375\374#\210\301\376\377#\210\301\201@\377#\210\301\201A\201B#\210\301\201C\201B#\210\207" [make-sparse-keymap define-key "" clojure-thread "t" "" clojure-unwind "u" "" clojure-thread-first-all "f" "\f" clojure-thread-last-all "l" "" clojure-cycle-privacy "p" [67108904] clojure-convert-collection-to-list "(" [67108903] clojure-convert-collection-to-quoted-list "'" [67108987] clojure-convert-collection-to-map "{" "" clojure-convert-collection-to-vector "[" [67108899] clojure-convert-collection-to-set "#" " " clojure-cycle-if "i" "" clojure-cycle-when "w" "" clojure-cycle-not "o" "ni" clojure-insert-ns-form "nh" clojure-insert-ns-form-at-point "nu" clojure-update-ns "ns" clojure-sort-ns "nr" clojure-rename-ns-alias "si" clojure-introduce-let "sm" clojure-move-to-let "sf" clojure-let-forward-slurp-sexp "sb" clojure-let-backward-slurp-sexp "" clojure-add-arity "a" "-" clojure-toggle-ignore [67108909] "_" clojure-toggle-ignore-surrounding-form ""] 5) (#$ . 4940)) (fset 'clojure-refactor-map clojure-refactor-map) #@26 Keymap for Clojure mode. (defvar clojure-mode-map (byte-code "\302 \303\"\210\304\305\306#\210\304\307\310#\210\304 \311#\210\312\313!\210\314\315\316\317$\210\207" [prog-mode-map clojure-refactor-map-prefix make-sparse-keymap set-keymap-parent define-key [67108922] clojure-toggle-keyword-string " " clojure-align clojure-refactor-map (lambda (def-tmp-var) (defvar clojure-mode-menu def-tmp-var #1="Clojure Mode Menu")) nil easy-menu-do-define clojure-mode-menu #1# ("Clojure" ["Toggle between string & keyword" clojure-toggle-keyword-string] ["Align expression" clojure-align] ["Cycle privacy" clojure-cycle-privacy] ["Cycle if, if-not" clojure-cycle-if] ["Cycle when, when-not" clojure-cycle-when] ["Cycle not" clojure-cycle-not] ["Toggle #_ ignore form" clojure-toggle-ignore] ["Toggle #_ ignore of surrounding form" clojure-toggle-ignore-surrounding-form] ["Add function arity" clojure-add-arity] ("ns forms" ["Insert ns form at the top" clojure-insert-ns-form] ["Insert ns form here" clojure-insert-ns-form-at-point] ["Update ns form" clojure-update-ns] ["Sort ns form" clojure-sort-ns] ["Rename ns alias" clojure-rename-ns-alias]) ("Convert collection" ["Convert to list" clojure-convert-collection-to-list] ["Convert to quoted list" clojure-convert-collection-to-quoted-list] ["Convert to map" clojure-convert-collection-to-map] ["Convert to vector" clojure-convert-collection-to-vector] ["Convert to set" clojure-convert-collection-to-set]) ("Refactor -> and ->>" ["Thread once more" clojure-thread] ["Fully thread a form with ->" clojure-thread-first-all] ["Fully thread a form with ->>" clojure-thread-last-all] "--" ["Unwind once" clojure-unwind] ["Fully unwind a threading macro" clojure-unwind-all]) ("Let expression" ["Introduce let" clojure-introduce-let] ["Move to let" clojure-move-to-let] ["Forward slurp form into let" clojure-let-forward-slurp-sexp] ["Backward slurp form into let" clojure-let-backward-slurp-sexp]) ("Documentation" ["View a Clojure guide" clojure-view-guide] ["View a Clojure reference section" clojure-view-reference-section] ["View the Clojure cheatsheet" clojure-view-cheatsheet] ["View the Clojure style guide" clojure-view-style-guide]) "--" ["Report a clojure-mode bug" clojure-mode-report-bug] ["Clojure-mode version" clojure-mode-display-version])] 6) (#$ . 6728)) #@32 Syntax table for Clojure mode. (defvar clojure-mode-syntax-table (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\305#\210\301\307\305#\210\301\310\311#\210\301\312\311#\210\301\313\311#\210\301\314\311#\210\301\315\316#\210\301\317\320#\210\301\321\322#\210\301\323\324#\210\301\325\326#\210\301\327\330#\210\301\331\332#\210\301\333\334#\210\301\335\334#\210\301\336\334#\210\301\337\334#\210\301\340\341#\210\301\342\341#\210\301\343\341#\210\301\344\345#\210\301\346\347#\210\301\350\351#\210\301\352\353#\210\207" [make-syntax-table modify-syntax-entry (0 . 127) "_" (48 . 57) "w" (97 . 122) (65 . 90) 32 " " 160 9 12 44 "." 40 "()" 41 ")(" 91 "(]" 93 ")[" 123 "(}" 125 "){" 96 "'" 126 94 64 63 "_ p" 35 39 59 "<" 10 ">" 34 "\"" 92 "\\"] 5) (#$ . 9053)) (defconst clojure--prettify-symbols-alist '(("fn" . 955))) #@248 The function used to determine the expected namespace of a file. `clojure-mode' ships a basic function named `clojure-expected-ns' that does basic heuristics to figure this out. CIDER provides a more complex version which does classpath analysis. (defvar clojure-expected-ns-function nil (#$ . 9915)) (make-variable-buffer-local 'clojure-expected-ns-function) #@63 Display the current `clojure-mode-version' in the minibuffer. (defalias 'clojure-mode-display-version #[0 "\301\302\"\207" [clojure-mode-version message "clojure-mode (version %s)"] 3 (#$ . 10281) nil]) #@43 The URL to report a `clojure-mode' issue. (defconst clojure-mode-report-bug-url "https://github.com/clojure-emacs/clojure-mode/issues/new" (#$ . 10491)) #@39 Report a bug in your default browser. (defalias 'clojure-mode-report-bug #[0 "\301!\207" [clojure-mode-report-bug-url browse-url] 2 (#$ . 10650) nil]) #@43 The base URL for official Clojure guides. (defconst clojure-guides-base-url "https://clojure.org/guides/" (#$ . 10808)) #@40 A list of all official Clojure guides. (defconst clojure-guides '(("Getting Started" . "getting_started") ("FAQ" . "faq") ("spec" . "spec") ("Destructuring" . "destructuring") ("Threading Macros" . "threading_macros") ("Comparators" . "comparators") ("Reader Conditionals" . "reader_conditionals")) (#$ . 10934)) #@115 Open a Clojure guide in your default browser. The command will prompt you to select one of the available guides. (defalias 'clojure-view-guide #[0 "\302\303\304\305\"\"\211\205 \306\"AP\307!\262\207" [clojure-guides clojure-guides-base-url completing-read "Select a guide: " mapcar car assoc browse-url] 5 (#$ . 11254) nil]) #@50 The base URL for the official Clojure reference. (defconst clojure-reference-base-url "https://clojure.org/reference/" (#$ . 11593)) (defconst clojure-reference-sections '(("The Reader" . "reader") ("The REPL and main" . "repl_and_main") ("Evaluation" . "evaluation") ("Special Forms" . "special_forms") ("Macros" . "macros") ("Other Functions" . "other_functions") ("Data Structures" . "data_structures") ("Datatypes" . "datatypes") ("Sequences" . "sequences") ("Transients" . "transients") ("Transducers" . "transducers") ("Multimethods and Hierarchies" . "multimethods") ("Protocols" . "protocols") ("Metadata" . "metadata") ("Namespaces" . "namespaces") ("Libs" . "libs") ("Vars and Environments" . "vars") ("Refs and Transactions" . "refs") ("Agents" . "agents") ("Atoms" . "atoms") ("Reducers" . "reducers") ("Java Interop" . "java_interop") ("Compilation and Class Generation" . "compilation") ("Other Libraries" . "other_libraries") ("Differences with Lisps" . "lisps"))) #@129 Open a Clojure reference section in your default browser. The command will prompt you to select one of the available sections. (defalias 'clojure-view-reference-section #[0 "\302\303\304\305\"\"\211\205 \306\"AP\307!\262\207" [clojure-reference-sections clojure-reference-base-url completing-read "Select a reference section: " mapcar car assoc browse-url] 5 (#$ . 12580) nil]) #@45 The URL of the official Clojure cheatsheet. (defconst clojure-cheatsheet-url "https://clojure.org/api/cheatsheet" (#$ . 12972)) #@54 Open the Clojure cheatsheet in your default browser. (defalias 'clojure-view-cheatsheet #[0 "\301!\207" [clojure-cheatsheet-url browse-url] 2 (#$ . 13106) nil]) #@37 The URL of the Clojure style guide. (defconst clojure-style-guide-url "https://guide.clojure.style" (#$ . 13274)) #@55 Open the Clojure style guide in your default browser. (defalias 'clojure-view-style-guide #[0 "\301!\207" [clojure-style-guide-url browse-url] 2 (#$ . 13394) nil]) #@145 Prevent paredit from inserting useless spaces. See `paredit-space-for-delimiter-predicates' for the meaning of ENDP and DELIM. (fn ENDP DELIM) (defalias 'clojure-space-for-delimiter-p #[514 "?\205\301\235\203\302\202\303\304 \"?\207" [clojure-omit-space-between-tag-and-delimiters looking-back "\\_<\\(?:'+\\|#.*\\)" "\\_<\\(?:'+\\|#\\)" point-at-bol] 5 (#$ . 13566)]) #@253 Collection reader macro tag regexp. It is intended to check for allowed strings that can come before a collection literal (e.g. '[]' or '{}'), as reader macro tags. This includes #fully.qualified/my-ns[:kw val] and #::my-ns{:kw val} as of Clojure 1.9. (defconst clojure--collection-tag-regexp "#\\(::[a-zA-Z0-9._-]*\\|:?\\([a-zA-Z0-9._-]+/\\)?[a-zA-Z0-9._-]+\\)" (#$ . 13952)) (byte-code "\300\301\302\303#\210\304\305\306\303#\207" [make-obsolete-variable clojure--collection-tag-regexp nil "5.12.0" make-obsolete clojure-no-space-after-tag clojure-space-for-delimiter-p] 4) #@48 Replace let bindings and indent. (fn &rest _) (defalias 'clojure--replace-let-bindings-and-indent #[128 "\212\301 \210\302\303\"\205 \304 )\207" [clojure--let-regexp backward-sexp looking-back nil clojure--replace-sexps-with-bindings-and-indent] 4 (#$ . 14534)]) #@280 Make "paredit-mode" play nice with `clojure-mode'. If an optional KEYMAP is passed the changes are applied to it, instead of to `clojure-mode-map'. Also advice `paredit-convolute-sexp' when used on a let form as drop in replacement for `cljr-expand-let`. (fn &optional KEYMAP) (defalias 'clojure-paredit-setup #[256 "\303Y\205+\211\206 \304\305\306#\210\304\307\310#\266\311\302!\210\312\n>\204&\312\nB\313\314\315\316#\207" [paredit-version clojure-mode-map paredit-space-for-delimiter-predicates 21 define-key "{" paredit-open-curly "}" paredit-close-curly make-local-variable clojure-space-for-delimiter-p advice-add paredit-convolute-sexp :after clojure--replace-let-bindings-and-indent] 6 (#$ . 14807)]) #@57 Set up initial buffer-local variables for Clojure mode. (defalias 'clojure-mode-variables #[0 "\306\307\310\"\210\311\300!\210\312\311\301!\210\313\311\302!\210\314\311\303!\210\315\311\304!\210\316\311\305!\210\317\311\320!\210\321\311\322!\210\323\311\324!\210\313\311\325!\210\313\311\326!\210\327\311\330!\210\312\311\331!\210\332\311\333!\210\334\311\335!\210\336\311\305!\210\337\311\340!\210\341 \311\342!\210\343\"\311\344!\210\345$\311\346!\210\347&\311\350!\210\351(\311\352!\210\313*\311\353!\210/+\311\354!\210\312,\311\355!\210\356\211-\207" [indent-tabs-mode paragraph-ignore-fill-prefix outline-regexp outline-level comment-start comment-start-skip add-to-list imenu-generic-expression (nil clojure-match-next-def 0) make-local-variable nil t ";;;;* " lisp-outline-level ";" ";+ *" comment-add 1 comment-column 40 comment-use-syntax multibyte-syntax-as-symbol electric-pair-skip-whitespace chomp electric-pair-open-newline-between-pairs fill-paragraph-function clojure-fill-paragraph adaptive-fill-function clojure-adaptive-fill-function normal-auto-fill-function clojure-auto-fill-function "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *" indent-line-function clojure-indent-line indent-region-function clojure-indent-region lisp-indent-function clojure-indent-function lisp-doc-string-elt-property clojure-doc-string-elt clojure-expected-ns-function clojure-expected-ns parse-sexp-ignore-comments prettify-symbols-alist open-paren-in-column-0-is-defun-start beginning-of-defun-function clojure-beginning-of-defun-function clojure--prettify-symbols-alist] 3 (#$ . 15533)]) #@40 Check whether point is in a docstring. (defalias 'clojure-in-docstring-p #[0 "\300 \3018\205\302\3038\304\"\305=\207" [syntax-ppss 3 get-text-property 8 face font-lock-doc-face] 4 (#$ . 17172)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put clojure-in-docstring-p speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defvar clojure-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [clojure-mode-hook variable-documentation put "Hook run after entering Clojure mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp clojure-mode-map definition-name clojure-mode] 4) (defvar clojure-mode-map (make-sparse-keymap)) (byte-code "\301\302N\204\303\301\302\304\305!#\210\306\307!\204\303\307\310\311#\210\312\313 !\210\307\302N\204-\303\307\302\304\314!#\210\306\300!\204B\303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P\303\300\302\304\320!#\210\303\311\321\322#\207" [clojure-mode-abbrev-table clojure-mode-map variable-documentation put purecopy "Keymap for `clojure-mode'." boundp clojure-mode-syntax-table definition-name clojure-mode (lambda (def-tmp-var) (defvar clojure-mode-syntax-table def-tmp-var)) make-syntax-table "Syntax table for `clojure-mode'." (lambda (def-tmp-var) (defvar clojure-mode-abbrev-table def-tmp-var)) define-abbrev-table nil "Abbrev table for `clojure-mode'." derived-mode-parent prog-mode] 5) #@230 Major mode for editing Clojure code. \{clojure-mode-map} In addition to any hooks its parent mode `prog-mode' might have run, this mode runs the hook `clojure-mode-hook', as the final or penultimate step during initialization. (defalias 'clojure-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315 !\204'\316 \317 \"\210\320\f!\211\2035\211\321 =\203;\322\f\323 \"\210\210\324 \325\"\204R \"=\204R\326 \325\"C#\210\327 !\210\330\f!\210 \"\331 \210\332 \210\333\334\335\"\210\333\336\337\"\210)\340\341!\207" [delay-mode-hooks major-mode mode-name clojure-mode-map clojure-mode-syntax-table clojure-mode-abbrev-table make-local-variable t prog-mode clojure-mode "Clojure" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table clojure-mode-variables clojure-font-lock-setup add-hook paredit-mode-hook clojure-paredit-setup electric-indent-functions #[257 "\300 \3018\205\302\3038\304\"\305=\262\205$\212\306 \210\302`\304\")\305=\205$\307\207" [syntax-ppss 3 get-text-property 8 face font-lock-doc-face beginning-of-line-text do-indent] 5 "\n\n(fn CHAR)"] run-mode-hooks clojure-mode-hook local-abbrev-table] 5 (#$ . 18698) nil]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313& \207" [custom-declare-variable clojure-verify-major-mode funcall function #[0 "\300\207" [t] 1] "If non-nil, warn when activating the wrong `major-mode'." :type boolean :safe booleanp :package-version (clojure-mode "5.3.0")] 10) #@138 Check if the current `major-mode' matches the file extension. If it doesn't, issue a warning if `clojure-verify-major-mode' is non-nil. (defalias 'clojure--check-wrong-major-mode #[0 "\205W\304 ;\205W\305\306\307\304 \"\203\n\310=\204\310\202@\306\311\304 \"\2030\n\312=\2040\312\202@\306\313\304 \"\205@\n\314=?\205@\314\211\205T\315\316\n =\203P\317\202Q\320\n$)\262\207" [clojure-verify-major-mode case-fold-search major-mode real-this-command buffer-file-name t string-match "\\.clj\\'" clojure-mode "\\.cljs\\'" clojurescript-mode "\\.cljc\\'" clojurec-mode message "[WARNING] %s activated `%s' instead of `%s' in this buffer.\nThis could cause problems.\n(See `clojure-verify-major-mode' to disable this message.)" "You have" "Something in your configuration"] 6 (#$ . 20344)]) (add-hook 'clojure-mode-hook 'clojure--check-wrong-major-mode) #@122 The prefix string used by `clojure-fill-paragraph'. It is simply `clojure-docstring-fill-prefix-width' number of spaces. (defalias 'clojure-docstring-fill-prefix #[0 "\301\302\"\207" [clojure-docstring-fill-prefix-width make-string 32] 3 (#$ . 21218)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put clojure-docstring-fill-prefix speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@86 Clojure adaptive fill function. This only takes care of filling docstring correctly. (defalias 'clojure-adaptive-fill-function #[0 "\301 \3028\205\303\3048\305\"\306=\262\205\307\310\"\207" [clojure-docstring-fill-prefix-width syntax-ppss 3 get-text-property 8 face font-lock-doc-face make-string 32] 4 (#$ . 21633)]) #@145 Like `fill-paragraph', but can handle Clojure docstrings. If JUSTIFY is non-nil, justify as well as fill the paragraph. (fn &optional JUSTIFY) (defalias 'clojure-fill-paragraph #[256 "\306 \3078\205\310\3118\312\"\313=\262\203R\314P \315P\n\206 \316\f\317\"\311\306 8\212\211b\210\3201<\321 \210`0\202@\210\202C\206Dd)\214}\210\322!)\266\202,\207\323P \324P\325!\204d\322!\210*\326\207" [paragraph-start paragraph-separate clojure-docstring-fill-column fill-column clojure-docstring-fill-prefix-width fill-prefix syntax-ppss 3 get-text-property 8 face font-lock-doc-face "\\|\\s-*\\([(:\"[]\\|~@\\|`(\\|#'(\\)" "\\|\\s-*\".*[,\\.]$" make-string 32 (error) forward-sexp fill-paragraph "\\|\\s-*\\([(:\"[]\\|`(\\|#'(\\)" "\\|\\s-*\".*[,\\.[]$" fill-comment-paragraph t] 7 (#$ . 21966)]) #@29 Clojure auto-fill function. (defalias 'clojure-auto-fill-function #[0 "\303 \211\205-iV\205-\304 \3058\205\306\3078\310\"\311=\262\203%\202& \312 \313 *\207" [clojure-docstring-fill-column fill-column fill-prefix current-fill-column syntax-ppss 3 get-text-property 8 face font-lock-doc-face clojure-adaptive-fill-function do-auto-fill] 5 (#$ . 22784)]) #@193 Regexp matching the start of a comment sexp. The beginning of match-group 1 should be before the sexp to be marked as a comment. The end of sexp is found with `clojure-forward-logical-sexp'. (defvar clojure--comment-macro-regexp "\\(?:#_ *\\)+\\(?1:[^ ]\\)" (#$ . 23157)) #@53 Regexp matching both `#_' macro and a comment sexp. (defvar clojure--reader-and-comment-regexp "\\(?:#_ *\\)+\\(?1:[^ ]\\)\\|\\(?1:(comment\\_>\\)" (#$ . 23436)) (byte-code "\300\301\302\303\304DD\305\306\307\310\311&\207" [custom-declare-variable clojure-comment-regexp funcall function #[0 "\207" [clojure--comment-macro-regexp] 1] "Comment mode.\n\nThe possible values for this variable are keywords indicating\nwhat is considered a comment (affecting font locking).\n\n - Reader macro `#_' only - the default\n - Reader macro `#_' and `(comment)'" :type (choice (const :tag "Reader macro `#_' and `(comment)'" clojure--reader-and-comment-regexp) (other :tag "Reader macro `#_' only" clojure--comment-macro-regexp)) :package-version (clojure-mode . "5.7.0")] 8) #@61 Search for a comment forward stopping at LIMIT. (fn LIMIT) (defalias 'clojure--search-comment-macro-internal #[257 "\301\302#\205M\303 \304\224\305!\3068\204\3078\203\310!\207b\210\311\312\313\314\234\304\234#\304]!\210\211<\203A\306\233`\240\266\202G\211\306`I\266\315!\266\302\207" [clojure-comment-regexp search-forward-regexp t match-data 1 syntax-ppss 3 4 clojure--search-comment-macro-internal clojure-forward-logical-sexp count-matches "#_" 0 set-match-data] 10 (#$ . 24215)]) #@190 Find comment macros and set the match data. Search from point up to LIMIT. The region that should be considered a comment is between `(match-beginning 1)' and `(match-end 1)'. (fn LIMIT) (defalias 'clojure--search-comment-macro #[257 "\300\211\300=\2030`X\2030\3011)\3021!\303!\211\26200\210\2020\210\304\262\202\210\300\262\202\207" [retry (scan-error) (end-of-file) clojure--search-comment-macro-internal nil] 4 (#$ . 24730)]) #@102 Scans the buffer backwards for the next "top-level" definition. Called by `imenu--generic-function'. (defalias 'clojure-match-next-def #[0 "\300\301\302\303#\205\206\212\302\304\305!`\306 \210\307 \210\204\201\3101#\307 0\210\202$\210\311\312`f\"\2031\313 \204<\311\314`f\"\203<\313 \210\315\316!\211\203L\211A\262\242\202S\317\320\321GD\"\311\322f\"\203e\307 \210\313 \266\202\303\262\323\230\203wb\210\307 \210`\262\324D!\266\202\211b\266\203)\207" [re-search-backward "^[ ]*(\\([a-z0-9.-]+/\\)?\\(def\\sw*\\)" nil t match-string 2 down-list forward-sexp (error) char-equal 91 backward-sexp 41 bounds-of-thing-at-point sexp signal wrong-number-of-arguments (def-beg . def-end) 94 "defmethod" set-match-data] 8 (#$ . 25183)]) #@110 A list of chars that a Clojure symbol cannot contain. See definition of 'macros': URL `http://git.io/vRGLD'. (defconst clojure--sym-forbidden-rest-chars "][\";@\\^`~(){}\\, \n " (#$ . 25946)) #@223 A list of chars that a Clojure symbol cannot start with. See the for-loop: URL `http://git.io/vRGTj' lines: URL `http://git.io/vRGIh', URL `http://git.io/vRGLE' and value definition of 'macros': URL `http://git.io/vRGLD'. (defconst clojure--sym-forbidden-1st-chars (concat clojure--sym-forbidden-rest-chars "0-9:'") (#$ . 26146)) #@182 A regexp matching a Clojure symbol or namespace alias. Matches the rule `clojure--sym-forbidden-1st-chars' followed by any number of matches of `clojure--sym-forbidden-rest-chars'. (defconst clojure--sym-regexp (concat "[^" clojure--sym-forbidden-1st-chars "][^" clojure--sym-forbidden-rest-chars "]*") (#$ . 26483)) #@51 Default expressions to highlight in Clojure mode. (defconst clojure-font-lock-keywords '(("(\\(?:clojure.core/\\)?\\(\\(?:def\\(?:once\\)?\\)\\)\\>[ \n ]*\\(?:#?^\\(?:{[^}]*}\\|\\sw+\\)[ \n ]*\\)*\\(\\sw+\\)?" (1 font-lock-keyword-face) (2 font-lock-variable-name-face nil t)) ("(\\(?:clojure.core/\\)?\\(\\(?:def\\(?:protocol\\|record\\|struct\\|type\\)\\)\\)\\>[ \n ]*\\(?:#?^\\(?:{[^}]*}\\|\\sw+\\)[ \n ]*\\)*\\(\\sw+\\)?" (1 font-lock-keyword-face) (2 font-lock-type-face nil t)) ("(\\(?:[^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*/\\)?\\(def[^ \n ]*\\)\\>[ \n ]*\\(?:#?^\\(?:{[^}]*}\\|\\sw+\\)[ \n ]*\\)*\\([^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*\\)?" (1 font-lock-keyword-face) (2 font-lock-function-name-face nil t)) ("(\\(?:clojure.core/\\)?\\(fn\\)[ ]+\\(?:#?^\\sw+[ ]*\\)?\\(\\sw+\\)?" (1 font-lock-keyword-face) (2 font-lock-function-name-face nil t)) ("(\\(\\.\\|catch\\|d\\(?:ef\\|o\\)\\|f\\(?:inally\\|n\\*?\\)\\|if\\|l\\(?:et\\*?\\|oop\\*?\\)\\|monitor-e\\(?:nter\\|xit\\)\\|new\\|quote\\|recur\\|set!\\|t\\(?:hrow\\|ry\\)\\|var\\)\\>" 1 font-lock-keyword-face) ("(\\(?:clojure.core/\\)?\\(->>?\\|\\.\\.\\|a\\(?:nd\\|s->\\)\\|binding\\|c\\(?:ase\\|ond\\(?:->>?\\|p\\)?\\)\\|d\\(?:eclare\\|o\\(?:all\\|run\\|s\\(?:eq\\|ync\\)\\|t\\(?:imes\\|o\\)\\)\\)\\|for\\|i\\(?:f-\\(?:let\\|not\\|some\\)\\|n-ns\\)\\|letfn\\|ns\\|or\\|w\\(?:hen\\(?:-\\(?:first\\|let\\|not\\|some\\)\\)?\\|ith-\\(?:local-vars\\|open\\|redefs\\(?:-fn\\)?\\)\\)\\)\\>" 1 font-lock-keyword-face) ("\\_<\\(?:let\\|wh\\(?:en\\|ile\\)\\)-\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-keyword-face) ("\\<\\(\\*\\(?:\\(?:a\\(?:gent\\|llow-unresolved-vars\\|ssert\\)\\|c\\(?:lojure-version\\|om\\(?:mand-line-args\\|pile-\\(?:files\\|path\\)\\)\\)\\|d\\(?:ata-readers\\|efault-data-reader-fn\\)\\|err\\|f\\(?:\\(?:il\\|lush-on-newlin\\)e\\)\\|in\\|ma\\(?:cro-meta\\|th-context\\)\\|ns\\|out\\|print-\\(?:dup\\|le\\(?:ngth\\|vel\\)\\|meta\\|readably\\)\\|read-eval\\|source-path\\|u\\(?:nchecked-math\\|se-context-classloader\\)\\|warn-on-reflection\\)\\*\\|[123e]\\)\\)\\>" 0 font-lock-builtin-face) ("\\(?:\\<\\|/\\)@?\\(\\*[^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*\\*\\)\\>" 1 font-lock-variable-name-face) ("\\<\\(false\\|nil\\|true\\)\\>" 0 font-lock-constant-face) ("\\(\\\\\\(?:.\\|newline\\|space\\|tab\\|formfeed\\|backspace\\|return\\|u[0-9A-Fa-f]\\{4\\}\\|o[0-7]\\{1,3\\}\\)\\)\\(?:[^[:word:]]\\|\\b\\)" 1 'clojure-character-face) ("\\<%[&1-9]?" (0 font-lock-variable-name-face)) ("(\\[ \n ]*\\(?:\\^?\\(?:{[^}]+}\\|:[^ \n ]+[ \n ]\\)[ \n ]*\\)*\\([^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*\\)" (1 font-lock-type-face)) ("\\(:\\{1,2\\}\\)\\([^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*?\\)\\(/\\)\\([^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*\\)" (1 'clojure-keyword-face) (2 font-lock-type-face) (3 'default) (4 'clojure-keyword-face)) ("\\(:\\{1,2\\}\\)\\([^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*\\)" (1 'clojure-keyword-face) (2 'clojure-keyword-face)) ("\\(#?\\^\\)\\([^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*?\\)\\(/\\)\\([^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*\\)" (1 'default) (2 font-lock-type-face) (3 'default) (4 'default)) ("\\(#?\\^\\)\\([^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*\\)" (1 'default) (2 font-lock-type-face)) ("\\([^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*?\\)\\(/\\)\\([^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*\\)" (1 font-lock-type-face) (2 nil) (3 nil)) ("\\([^][\";@\\^`~(){}\\, \n 0-9:'][^][\";@\\^`~(){}\\, \n ]*\\)" (1 nil)) (clojure--search-comment-macro 1 font-lock-comment-face t) ("`\\(?1:\\(?:#'\\)?\\(?:\\s_\\|\\sw\\)+\\)`" (1 'font-lock-constant-face prepend)) ("\\[\\[\\(?1:\\(?:#'\\)?\\(?:\\s_\\|\\sw\\)+\\)]]" (1 'font-lock-constant-face prepend)) (clojure-font-lock-escaped-chars 0 'bold prepend) (clojure-font-lock-regexp-groups (1 'font-lock-regexp-grouping-construct prepend))) (#$ . 26806)) #@285 Find and highlight text with a Clojure-friendly syntax table. This function is passed to `font-lock-syntactic-face-function', which is called with a single parameter, STATE (which is, in turn, returned by `parse-partial-sexp' at the beginning of the highlighted region). (fn STATE) (defalias 'clojure-font-lock-syntactic-face-function #[257 "\3048\203\234\3058A@\211\205\212\211b\210\306\307!\205\310\311!)\211\205(\312\313!\"\211\203\232\212\314!\203;\311\225b\210\211 \262b\210\311u\210\3151g\211\316V\205b`W\205b\317\311!\210\306\320!\204E\211S\262\202E0\210\202h\210\211\316U\205~`X\205~\321d!\210`\3058U)\203\232\322\230\203\230\212b\210\323\324!b\210\306\325!)\204\232 \207\n\207 \207" [lisp-doc-string-elt-property font-lock-doc-face font-lock-string-face font-lock-comment-face 3 8 looking-at "([ \n]*\\(\\(\\sw\\|\\s_\\)+\\)" match-string 1 function-get intern-soft functionp (error) 0 forward-sexp "[ \n ]*\\(\\^[A-Z:].+\\|\\^?{.+\\)" forward-comment "def" end-of-thing sexp "[ \n ]*)"] 8 (#$ . 30851)]) #@48 Configures font-lock for editing Clojure code. (defalias 'clojure-font-lock-setup #[0 "\302\300!\210\303\304\305\306\303#\210\307\211\207" [font-lock-multiline font-lock-defaults make-local-variable t add-to-list font-lock-extend-region-functions clojure-font-lock-extend-region-def (clojure-font-lock-keywords nil nil (("+-*/.<>=!?$%_&:" . "w")) nil (font-lock-mark-block-function . mark-defun) (font-lock-syntactic-face-function . clojure-font-lock-syntactic-face-function))] 4 (#$ . 31909)]) #@193 Range between the top-most def* and the fourth element after POINT. Note that this means that there is no guarantee of proper font locking in def* forms that are not at top level. (fn POINT) (defalias 'clojure-font-lock-def-at-point #[257 "\211b\210\3001\301 0\210\202\210`U?\205C\302\303!\205C\3041?\305u\210\306\307\211W\2058\305\310 \266\211T\262\202&\266\2020\210\202@\210\211`B\207" [(error) beginning-of-defun looking-at "(def" (error) nil 4 0 forward-sexp] 6 (#$ . 32413)]) #@73 Set region boundaries to include the first four elements of def* forms. (defalias 'clojure-font-lock-extend-region-def #[0 "\302\303!\211\2030\211\211\203\211A\262\242\202\304\305\306GD\"\211W\203.W\203.\211\307\262\266\210\303 !\211\203`\211\211\203F\211A\262\242\202M\304\305\310GD\"\211 W\203^ W\203^\307\262\266\210\207" [font-lock-beg font-lock-end nil clojure-font-lock-def-at-point signal wrong-number-of-arguments (def-beg . def-end) t (def-beg . def-end)] 7 (#$ . 32916)]) #@162 Non-nil if the char before point is font-locked as a string. If REGEXP is non-nil, also check whether current string is preceeded by a #. (fn &optional REGEXP) (defalias 'clojure--font-locked-as-string-p #[256 "\300`S\301\"\211<\203\302>\204\211\302=\205$\303\304!\206$?\205$\303\305!\207" [get-text-property face font-lock-string-face clojure-string-start t nil] 4 (#$ . 33435)]) #@102 Highlight scaped chars in strings. BOUND denotes a buffer position to limit the search. (fn BOUND) (defalias 'clojure-font-lock-escaped-chars #[257 "\300\211\204\301\302\303#\203\304 \262\202\207" [nil re-search-forward "\\\\." t clojure--font-locked-as-string-p] 6 (#$ . 33833)]) #@148 Highlight grouping constructs in regular expression. BOUND denotes the maximum number of characters (relative to the point) to check. (fn BOUND) (defalias 'clojure-font-lock-regexp-groups #[257 "\300\211\204\301\302\303#\203\304\305!\262\202\207" [nil re-search-forward "\\(\\(?:(\\?\\(?:[:=!>]\\|<[=!]\\|<[[:alnum:]]+>\\)\\|[|()]\\)\\)" t clojure--font-locked-as-string-p regexp] 6 (#$ . 34131)]) (byte-code "\300\301\302\303#\210\300\304\302\303#\210\300\305\302\303#\210\300\306\302\303#\210\300\307\302\303#\210\300\310\302\303#\210\300\311\302\303#\210\300\312\302\303#\210\300\313\302\303#\210\314\315\316\317\320DD\321\322\323\324\325\326\327& \207" [put ns clojure-doc-string-elt 2 def defn defn- defmulti defmacro definline defprotocol deftask custom-declare-variable clojure-align-forms-automatically funcall function #[0 "\300\207" [nil] 1] "If non-nil, vertically align some forms automatically.\nAutomatically means it is done as part of indenting code. This\napplies to binding forms (`clojure-align-binding-forms'), to cond\nforms (`clojure-align-cond-forms') and to map literals. For\ninstance, selecting a map a hitting \\`\\[indent-for-tab-command]'\nwill align the values like this:\n {:some-key 10\n :key2 20}" :package-version (clojure-mode . "5.1") :safe booleanp :type boolean] 10) (defconst clojure--align-separator-newline-regexp "^ *$") (byte-code "\301\302\303\304\305DD\306\307\310\311\312\313\314\315F\316BB&\210\301\317\303\304\320DD\321\307\322\323\324\311\325& \210\301\326\303\304\327DD\330\307\331\323\332\311\333& \210\301\334\303\304\335DD\336\307\337\323\332\311\340& \210\301\341\303\304\342DD\343\307\344\311\345\323\346& \207" [clojure--align-separator-newline-regexp custom-declare-variable clojure-align-separator funcall function #[0 "\207" [clojure--align-separator-newline-regexp] 1] "The separator that will be passed to `align-region' when performing vertical alignment." :package-version (clojure-mode . "5.10") :type choice const :tag "Make blank lines prevent vertical alignment from happening." ((other :tag "Allow blank lines to happen within a vertically-aligned expression." 'entire)) clojure-align-reader-conditionals #[0 "\300\207" [nil] 1] "Whether to align reader conditionals, as if they were maps." (clojure-mode . "5.10") :safe booleanp boolean clojure-align-binding-forms #[0 "\300\207" [("let" "when-let" "when-some" "if-let" "if-some" "binding" "loop" "doseq" "for" "with-open" "with-local-vars" "with-redefs")] 1] "List of strings matching forms that have binding forms." (clojure-mode . "5.1") listp (repeat string) clojure-align-cond-forms #[0 "\300\207" [("condp" "cond" "cond->" "cond->>" "case" "are" "clojure.core/condp" "clojure.core/cond" "clojure.core/cond->" "clojure.core/cond->>" "clojure.core/case" "clojure.test/are")] 1] "List of strings identifying cond-like forms." (clojure-mode . "5.1") (repeat string) clojure-special-arg-indent-factor #[0 "\300\207" [2] 1] "Factor of the 'lisp-body-indent' used to indent special arguments." (clojure-mode . "5.13") integer integerp] 12) #@56 Regexp denoting the beginning of a reader conditional. (defvar clojure--beginning-of-reader-conditional-regexp "#\\?@(\\|#\\?(" (#$ . 37239)) #@627 Non-nil if the sexp around point should be automatically aligned. This function expects to be called immediately after an open-brace or after the function symbol in a function call. First check if the sexp around point is a map literal, or is a call to one of the vars listed in `clojure-align-cond-forms'. If it isn't, return nil. If it is, return non-nil and place point immediately before the forms that should be aligned. For instance, in a map literal point is left immediately before the first key; while, in a let-binding, point is left inside the binding vector and immediately before the first binding construct. (defalias 'clojure--position-for-alignment #[0 "``Sf\304=\203\211S\206`Sf\305=?\206\203$\306 `\307Z\"\206\310\311!\n\235@\211\2051\312!\211\247\203:\211\202K\211\204B\313\202K\314!\205K\211\313\234\205]\211\247\205]\315!\210\316d!\210\266\203\206\310\311! \235\205\315 \210\317 \210\320f\321=\205\322u\210\316d!\210\323\207" [clojure-align-reader-conditionals clojure--beginning-of-reader-conditional-regexp clojure-align-cond-forms clojure-align-binding-forms 123 35 looking-back 4 thing-at-point symbol clojure--get-indent-method 0 sequencep clojure-forward-logical-sexp comment-forward backward-sexp nil 91 1 t] 6 (#$ . 37388)]) #@122 Non-nil if there's a sexp ahead to be aligned before END. Place point as in `clojure--position-for-alignment'. (fn END) (defalias 'clojure--find-sexp-to-align #[257 "\304\211\2042\305\205 \306P\307\310\311\n \"\312\"Q\313#\2032\314 \211\315\234\204.\211\316\234\204.\317 \262\210\202\207" [clojure-align-reader-conditionals clojure--beginning-of-reader-conditional-regexp clojure-align-binding-forms clojure-align-cond-forms nil search-forward-regexp "\\|" "{\\|(" regexp-opt append symbols noerror syntax-ppss 3 4 clojure--position-for-alignment] 9 (#$ . 38682)]) #@202 Move point after all whitespace after the next sexp. Set the match data group 1 to be this region of whitespace and return point. BOUND is bounds the whitespace search. (fn &optional BOUND NOERROR) (defalias 'clojure--search-whitespace-after-next-sexp #[512 "\300\301\"\216\3021E\303\304!\210\305\306\"\210\307`!\211:\203>\211\242\211\310\267\2028\243\211\204.\311!\202/`\262\2029\312\2029`\262\202?`\2620\202G\210\312)\207" [make-closure #[0 "\300\205\f`\300V\205\f\300b\207" [V0] 2] (error) clojure-forward-logical-sexp 1 search-forward-regexp "\\([, ]*\\)" syntax-after #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (12 34 5 52)) clojure--search-whitespace-after-next-sexp nil] 7 (#$ . 39266)]) #@229 Vertically align the contents of the sexp around point. If region is active, align it. Otherwise, align everything in the current "top-level" sexp. When called from lisp code align everything between BEG and END. (fn BEG END) (defalias 'clojure-align #[514 "\302!\262\212b\210\303!\205a\212\304 \210\305\306!\210\307 )\310\306\212\311\312\313#\203.\211T\262\202)\314`\"\210\211\315\211W\203Y\310\316`\310\317\320\321\322 B\323BBBBC\310%\266\211T\262\2026\266)\266\202 )\207" [clojure-align-forms-automatically clojure-align-separator copy-marker clojure--find-sexp-to-align backward-up-list forward-sexp 1 point-marker nil search-forward-regexp "^ *\n" noerror indent-region 0 align-region clojure-align (regexp . clojure--search-whitespace-after-next-sexp) (group . 1) separate ((repeat . t))] 17 (#$ . 40032) (byte-code "\300 \203 \301 \302 D\207\212\303 \210`\304 \210`D\262)\207" [use-region-p region-beginning region-end end-of-defun clojure-backward-logical-sexp] 3)]) #@153 Like `indent-region', but also maybe align forms. Forms between BEG and END are aligned according to `clojure-align-forms-automatically'. (fn BEG END) (defalias 'clojure-indent-region #[514 "\302\303\") \203\3041\305\"0\210\207\210\207" [indent-region-function clojure-align-forms-automatically nil indent-region (scan-error) clojure-align] 6 (#$ . 41042)]) #@38 Indent current line as Clojure code. (defalias 'clojure-indent-line #[0 "\301 \3028\205\303\3048\305\"\306=\262\2036\212\307 \210\310\311!\2054\312\313\314!!\312\315\316\"!X\2054\317\315\316\"!)\207\320 \207" [clojure-docstring-fill-prefix-width syntax-ppss 3 get-text-property 8 face font-lock-doc-face beginning-of-line looking-at "^\\s-*" string-width match-string-no-properties 0 make-string 32 replace-match lisp-indent-line] 5 (#$ . 41416)]) #@429 Function to get the indent spec of a symbol. This function should take one argument, the name of the symbol as a string. This name will be exactly as it appears in the buffer, so it might start with a namespace alias. This function is analogous to the `clojure-indent-function' symbol property, and its return value should match one of the allowed values of this property. See `clojure-indent-function' for more information. (defvar clojure-get-indent-function nil (#$ . 41881)) #@314 Return the indent spec for the symbol named FUNCTION-NAME. FUNCTION-NAME is a string. If it contains a `/', also try only the part after the `/'. Look for a spec using `clojure-get-indent-function', then try the `clojure-indent-function' and `clojure-backtracking-indent' symbol properties. (fn FUNCTION-NAME) (defalias 'clojure--get-indent-method #[257 "\301!\203\f!\206I\302!\303N\206I\302!\304N\206I\305\306\"\2039\302\307\310\"!\303N\206I\302\307\310\"!\304N\206I\305\311\"\205I\312\307\313\"\313\314O!\207" [clojure-get-indent-function functionp intern-soft clojure-indent-function clojure-backtracking-indent string-match "/\\([^/]+\\)\\'" match-string 1 "\\`\\(?:if\\|let\\|wh\\(?:en\\|ile\\)\\)\\s_" clojure--get-indent-method 0 -1] 5 (#$ . 42370)]) (defvar clojure--current-backtracking-depth 0) #@116 Return the indent sexp that applies to the sexp at point. Implementation function for `clojure--find-indent-spec'. (defalias 'clojure--find-indent-spec-backtracking #[0 " Y\205\357\302\303!?\205\357 T\304\3051(\306\307!\210o\206#`Sf\310=?0\202,\210\2026\2036\211T\262\202\311\312!\211\203C\313!\206u\3141s\315 \211:\205m\211\242\304W\205k\243\211:\205i\211\242\211\211b\210\316 \262\262\262\262\2620\202u\210\317\211\247\203~\211C\262\320!\203\220\304U\205\352\211\266\202\202\354\321!\203\321\211G\211\322\267\202\267\317\202\312\304\234\304U\204\261\321!\205\262\211\262\202\312\211Y\203\305S\234\202\310\234\262\262\266\202\202\354\211\323>\203\343\304U\205\352\266\324\202\354\325\326#\210\317\266\202)\266\202\207" [clojure-max-backtracking clojure--current-backtracking-depth looking-at "^" 0 (error) clojure-backward-logical-sexp 1 10 thing-at-point symbol clojure--get-indent-method (error) syntax-ppss clojure--find-indent-spec-backtracking nil functionp sequencep #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (0 158 1 162)) (:defn defun) :defn message "Invalid indent spec for `%s': %s"] 9 (#$ . 43203)]) #@177 Return the indent spec that applies to current sexp. If `clojure-use-backtracking-indent' is non-nil, also do backtracking up to a higher-level sexp in order to find the spec. (defalias 'clojure--find-indent-spec #[0 "\203 \212\301 )\207\302\303!\304!\207" [clojure-use-backtracking-indent clojure--find-indent-spec-backtracking thing-at-point symbol clojure--get-indent-method] 3 (#$ . 44429)]) #@42 Convert KEYWORD to symbol. (fn KEYWORD) (defalias 'clojure--keyword-to-symbol #[257 "\300\301!\302\303O!\207" [intern symbol-name 1 nil] 5 (#$ . 44834)]) #@304 Return the normal indentation column for a sexp. Point should be after the open paren of the _enclosing_ sexp, and LAST-SEXP is the start of the previous sexp (immediately before the sexp being indented). INDENT-MODE is any of the values accepted by `clojure-indent-style'. (fn LAST-SEXP INDENT-MODE) (defalias 'clojure--normal-indent #[514 "b\210\301\302!\210\303\302!\210\304\3051)\306\307\310 `{\"\203$`\301\311!\210\262\202\3120\202-\210\2022\2032i\207\313!\203>\314!\202?\205G\315 W\316=\203Ri\\S\207\211\203[b\210i\207\317=\203fi\\S\207i\207" [lisp-body-indent forward-sexp 1 clojure-backward-logical-sexp nil (error) string-match "[^[:blank:]]" line-beginning-position -1 t keywordp clojure--keyword-to-symbol line-end-position always-indent align-arguments] 7 (#$ . 44997)]) #@61 Non-nil if form at point doesn't represent a function call. (defalias 'clojure--not-function-form-p #[0 "\300f\301>\2061\212\302\300x\210`Sf\303=\203\304u\210`Sf\305=\205)`S\206%`Sf\306=)\2061\307\310!?\207" [nil (91 123) " \n[:blank:]" 64 -1 63 35 looking-at ".\\(?:\\sw\\|\\s_\\)"] 2 (#$ . 45813)]) #@925 When indenting a line within a function call, indent properly. INDENT-POINT is the position where the user typed TAB, or equivalent. Point is located at the point to indent under (for default indentation); STATE is the `parse-partial-sexp' state for that position. If the current line is in a call to a Clojure function with a non-nil property `clojure-indent-function', that specifies how to do the indentation. The property value can be - `:defn', meaning indent `defn'-style; - an integer N, meaning indent the first N arguments specially like ordinary function arguments and then indent any further arguments like a body; - a function to call just as this function was called. If that function returns nil, that means it doesn't specify the indentation. - a list, which is used by `clojure-backtracking-indent'. This function also returns nil meaning don't specify the indentation. (fn INDENT-POINT STATE) (defalias 'clojure-indent-function #[514 "\211\303\234b\210\304 \203 iT\207\303u\210\305 iS\306\250\203$\211$\207:\203I\242\243\211\204;$\207\307!\205H\"\207\310=\203S \\\207\307!\203`\"\207?\205\233\311\312!\211\203z\313\314\"\203z\315\316\"\202\231\211\203\225\313\317\"\203\225\313\320\321\303\"\"\204\225 \\\202\231\315\n\"\262\207" [calculate-lisp-indent-last-sexp lisp-body-indent clojure-indent-style 1 clojure--not-function-form-p clojure--find-indent-spec #[1028 "\302\3031 `X\205m?\205\304\305!\210\211T\262\2020\210\202%\210\211T\262\211TU\2030\\\207\211TV\203<\306\307\"\207 _\\\207" [lisp-body-indent clojure-special-arg-indent-factor -1 (scan-error) clojure-forward-logical-sexp 1 clojure--normal-indent always-align] 8 "\n\n(fn INDENT-POINT LAST-SEXP CONTAINING-FORM-COLUMN METHOD)"] functionp :defn thing-at-point symbol string-match "^:" clojure--normal-indent always-align "\\`\\(?:\\S +/\\)?\\(def[a-z]*\\|with-\\)" "\\`default" match-string] 13 (#$ . 46127)]) #@90 Instruct `clojure-indent-function' to indent the body of SYM by INDENT. (fn SYM INDENT) (defalias 'put-clojure-indent #[514 "\300\301#\207" [put clojure-indent-function] 6 (#$ . 48114)]) #@61 Call `put-clojure-indent' on a series, KVS. (fn &rest KVS) (defalias 'define-clojure-indent '(macro . #[128 "\300\301\302\"B\207" [progn mapcar #[257 "\300\301@DA@E\207" [put-clojure-indent quote] 4 "\n\n(fn X)"]] 5 (#$ . 48310)])) #@121 Allow `clojure-defun-indents' to indent user-specified macros. Requires the macro's NAME and a VALUE. (fn NAME VALUE) (defalias 'add-custom-clojure-indents #[514 "\300\"\210\301\302\"\207" [custom-set-default mapcar #[257 "\300\301\"\207" [put-clojure-indent defun] 4 "\n\n(fn X)"]] 5 (#$ . 48553)]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\312\313\314\"\210\312\315\316\"\210\312\317\316\"\210\312\320\316\"\210\312\321\316\"\210\312\322\314\"\210\312\323\314\"\210\312\324\314\"\210\312\325\326\"\210\312\327\330\"\210\312\331\314\"\210\312\332\314\"\210\312\333\314\"\210\312\334\314\"\210\312\335\314\"\210\312\336\314\"\210\312\337\326\"\210\312\340\326\"\210\312\341\326\"\210\312\342\326\"\210\312\343\314\"\210\312\344\314\"\210\312\345\346\"\210\312\347\330\"\210\312\350\314\"\210\312\351\352\"\210\312\353\354\"\210\312\355\356\"\210\312\357\360\"\210\312\361\362\"\210\312\363\314\"\210\312\364\365\"\210\312\366\367\"\210\312\370\371\"\210\312\372\373\"\210\312\374\326\"\210\312\375\330\"\210\312\376\326\"\210\312\377\314\"\210\312\201@\201A\"\210\312\201B\314\"\210\312\201C\314\"\210\312\201D\314\"\210\312\201E\314\"\210\312\201F\314\"\210\312\201G\314\"\210\312\201H\314\"\210\312\201I\314\"\210\312\201J\314\"\210\312\201K\314\"\210\312\201L\316\"\210\312\201M\314\"\210\312\201N\316\"\210\312\201O\330\"\210\312\201P\316\"\210\312\201Q\316\"\210\312\201R\316\"\210\312\201S\316\"\210\312\201T\326\"\210\312\201U\326\"\210\312\201V\326\"\210\312\201W\314\"\210\312\201X\326\"\207" [custom-declare-variable clojure-defun-indents funcall function #[0 "\300\207" [nil] 1] "List of additional symbols with defun-style indentation in Clojure.\n\nYou can use this to let Emacs indent your own macros the same way\nthat it indents built-in macros like with-open. This variable\nonly works when set via the customize interface (`setq' won't\nwork). To set it from Lisp code, use\n (put-clojure-indent \\='some-symbol :defn)." :type (repeat symbol) :set add-custom-clojure-indents put-clojure-indent ns 1 fn :defn def defn bound-fn if if-not case cond 0 condp 2 cond-> cond->> when while when-not when-first do delay future comment doto locking proxy (2 nil nil (:defn)) as-> fdef reify (:defn (1)) deftype (2 nil nil (:defn)) defrecord (2 nil nil (:defn)) defprotocol (1 (:defn)) definterface (1 (:defn)) extend extend-protocol (1 :defn) extend-type (1 :defn) specify (1 :defn) specify! (1 :defn) try catch finally let letfn (1 ((:defn)) nil) binding loop for doseq dotimes when-let if-let when-some if-some this-as defmethod testing deftest are use-fixtures run run* fresh alt! alt!! go go-loop thread] 8) #@222 Return the position of the " that begins the string at point. If REGEX is non-nil, return the position of the # that begins the regex at point. If point is not inside a string or regex, return nil. (fn &optional REGEX) (defalias 'clojure-string-start #[256 "\300\301 8\205'\302\301 8\211\206`Sf\303=\203\211\205%S\207\211?\205%\266\202\207" [3 syntax-ppss 8 35] 4 (#$ . 51236)]) #@51 Return the char at point or nil if at buffer end. (defalias 'clojure-char-at-point #[0 "`dU?\205\f\300``T\"\207" [buffer-substring-no-properties] 3 (#$ . 51633)]) #@61 Return the char before point or nil if at buffer beginning. (defalias 'clojure-char-before-point #[0 "`eU?\205\f\300``S\"\207" [buffer-substring-no-properties] 3 (#$ . 51803)]) #@62 Convert the string or keyword at point to keyword or string. (defalias 'clojure-toggle-keyword-string #[0 "``\300V\203!\301``T\"\302\232\204!\301``T\"\303\232\204!\304u\210\202`\300=\203.\305\306!\210\202X\301``T\"\302\232\203D\303\307 \300\304O\261\210\202X\301``T\"\303\232\203X\302\307 \300\310O\302\261\210\211b\207" [1 buffer-substring-no-properties "\"" ":" -1 error "Beginning of file reached, this was probably a mistake" clojure-delete-and-extract-sexp nil] 5 (#$ . 51987) nil]) #@44 Delete the surrounding sexp and return it. (defalias 'clojure-delete-and-extract-sexp #[0 "`\300 \210\211`{`|\210\207" [forward-sexp] 4 (#$ . 52493)]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313& \207" [custom-declare-variable clojure-cache-project-dir funcall function #[0 "\300\207" [t] 1] "Whether to cache the results of `clojure-project-dir'." :type boolean :safe booleanp :package-version (clojure-mode . "5.8.0")] 10) #@58 A project dir cache used to speed up related operations. (defvar clojure-cached-project-dir nil (#$ . 52944)) (make-variable-buffer-local 'clojure-cached-project-dir) #@315 Return the absolute path to the project's root directory. Call is delegated down to `clojure-project-root-function' with optional DIR-NAME as argument. When `clojure-cache-project-dir' is t the results of the command are cached in a buffer local variable (`clojure-cached-project-dir'). (fn &optional DIR-NAME) (defalias 'clojure-project-dir #[256 "\206 !\n\203\303\304!\203\204\211\207" [clojure-cached-project-dir clojure-project-root-function clojure-cache-project-dir derived-mode-p clojure-mode] 4 (#$ . 53118)]) #@165 Return the absolute path to the project's root directory. Use `default-directory' if DIR-NAME is nil. Return nil if not inside a project. (fn &optional DIR-NAME) (defalias 'clojure-project-root-path #[256 "\211\206\302\303\304\305\306\" \"\"\211G\307V\205\310\311\"@\207" [default-directory clojure-build-tool-files delq nil mapcar make-closure #[257 "\301\300\"\207" [V0 locate-dominating-file] 4 "\n\n(fn FNAME)"] 0 sort file-in-directory-p] 8 (#$ . 53658)]) #@72 Denormalize PATH by making it relative to the project root. (fn PATH) (defalias 'clojure-project-relative-path #[257 "\300\301 \"\207" [file-relative-name clojure-project-dir] 4 (#$ . 54135)]) #@175 Return the namespace matching PATH. PATH is expected to be an absolute file path. If PATH is nil, use the path to the file backing the current buffer. (fn &optional PATH) (defalias 'clojure-expected-ns #[256 "\211\206\300\301 !\302!\211\303\304\305\"G[O\306\307\310\311\"A\312#\313\314\315#\313\316\317#\207" [file-truename buffer-file-name clojure-project-relative-path 0 file-name-extension t mapconcat identity split-string "/" "." replace-regexp-in-string "_" "-" "\\`clj[scx]?\\." ""] 10 (#$ . 54337)]) #@35 Insert a namespace form at point. (defalias 'clojure-insert-ns-form-at-point #[0 "\301\302 \"c\207" [clojure-expected-ns-function format "(ns %s)"] 3 (#$ . 54861) nil]) #@57 Insert a namespace form at the beginning of the buffer. (defalias 'clojure-insert-ns-form #[0 "~\210eb\210\300 \207" [clojure-insert-ns-form-at-point] 1 (#$ . 55037) nil]) #@80 Update the namespace of the current buffer. Useful if a file has been renamed. (defalias 'clojure-update-ns #[0 " \211\205-\212\302 \303\304\"\216\305 \203&\306\307\211\211\310%\210\311\312\"\210\211\202)\313\314!)\262)\207" [clojure-expected-ns-function clojure-cached-ns match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] clojure-find-ns replace-match nil 4 message "ns form updated to `%s'" user-error "Can't find ns form"] 8 (#$ . 55215) nil]) #@227 Sort sexps between point and end of current sexp. Comments at the start of a line are considered part of the following sexp. Comments at the end of a line (after some other content) are considered part of the preceding sexp. (defalias 'clojure--sort-following-sexps #[0 "\214`\212\300 \210`S)}\210\301\302w\210\303\302\304\305\306\307%\210db\210\310\311e`\"8\205%\312c)\207" [up-list " \n[:blank:]" nil sort-subr #[0 "\300\301w\207" [" \n[:blank:]" nil] 2] #[0 "\3001\n\301 \210\202\210\302\303!\204\304 \210\305\306!\207" [(scan-error) up-list looking-at "\\s-\\|$" clojure-forward-logical-sexp search-forward-regexp "$"] 2] #[0 "\300 \210\301\302w\210\303 \210\304\305!\210\302\207" [comment-forward "[:blank:]\n [(" nil clojure-forward-logical-sexp forward-sexp -1] 2] #[0 "\300 \207" [clojure-forward-logical-sexp] 1] 4 parse-partial-sexp "\n"] 6 (#$ . 55711)]) #@47 Internally sort each sexp inside the ns form. (defalias 'clojure-sort-ns #[0 "\300 \210\301 \203N\212\302\224b\210`\303\304\305!\210`{\262\306u\210\304\306!\210\307\310!\2034\212\305u\210\304\305!\210\311 \210)\202b\210\307\312!!\203G\313\314!\266\202\202L\313\315!\266\202)\207\316\317!\207" [comment-normalize-vars clojure-find-ns 0 nil forward-sexp 1 -1 looking-at "(:[a-z]" clojure--sort-following-sexps regexp-quote message "ns form is already sorted" "ns form has been sorted" user-error "Can't find ns form"] 5 (#$ . 56590) nil]) (defconst clojure-namespace-name-regex "^(\\(clojure.core/\\)?\\(in-\\)?ns\\+?[\n[:space:]]+\\(?:\\(?:\\(#?\\^{[^}]*}\\)\\|\\(?:\\^:[^[:space:]]+\\)*\\)[\n[:space:]]+\\)*[':]?\\([^\"()[:space:]]+\\_>\\)") (make-obsolete-variable 'clojure-namespace-name-regex 'clojure-namespace-regexp "5.12.0") (defconst clojure-namespace-regexp "^(\\(?:clojure\\.core/\\)?\\(?:in-ns\\|ns\\+?\\)\\_>") (byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313& \207" [custom-declare-variable clojure-cache-ns funcall function #[0 "\300\207" [nil] 1] "Whether to cache the results of `clojure-find-ns'.\n\nNote that this won't work well in buffers with multiple namespace\ndeclarations (which rarely occur in practice) and you'll\nhave to invalidate this manually after changing the ns for\na buffer. If you update the ns using `clojure-update-ns'\nthe cached value will be updated automatically." :type boolean :safe booleanp :package-version (clojure-mode . "5.8.0")] 10) #@59 A buffer ns cache used to speed up ns-related operations. (defvar clojure-cached-ns nil (#$ . 58106)) (make-variable-buffer-local 'clojure-cached-ns) #@109 Return the nearest namespace in a specific DIRECTION. DIRECTION is `forward' or `backward'. (fn DIRECTION) (defalias 'clojure--find-ns-in-direction #[257 "\301\302=\203 \303\202\f\304\204R\211\301\305#\203R\306\225\212\307 \310\311\"\216b\210\312 \210\313 \204K\314 \204K\315\316\317!\320\"\203G\211G\301O\266\202\202I\262\262)\210)\210\202\f\207" [clojure-namespace-regexp nil forward search-forward-regexp search-backward-regexp t 0 match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] clojure-forward-logical-sexp clojure--in-string-p clojure--in-comment-p "'" thing-at-point symbol string-prefix-p] 10 (#$ . 58263)]) #@245 Return the namespace of the current Clojure buffer. Return the namespace closest to point and above it. If there are no namespaces above point, return the first one in the buffer. The results will be cached if `clojure-cache-ns' is set to t. (defalias 'clojure-find-ns #[0 "\203\n \203\n \207\212\214~\210\3021\303\304\305\211#\210\202\210\306\307!\206%\306\310!*\211\207" [clojure-cache-ns clojure-cached-ns (error) up-list nil t clojure--find-ns-in-direction backward forward] 4 (#$ . 58941)]) #@57 Display cached values if present. Useful for debugging. (defalias 'clojure-show-cache #[0 "\302\303 #\207" [clojure-cached-project-dir clojure-cached-ns message "Cached Project: %s, Cached Namespace: %s"] 4 (#$ . 59454) nil]) #@169 Clear all buffer-local cached values. Normally you'd need to do this very infrequently - e.g. after renaming the root folder of project or after renaming a namespace. (defalias 'clojure-clear-cache #[0 "\302\211\303\304!\207" [clojure-cached-project-dir clojure-cached-ns nil message "Buffer-local clojure-mode cache cleared"] 3 (#$ . 59688) nil]) (defconst clojure-def-type-and-name-regex "(\\(?:\\(?:\\sw\\|\\s_\\)+/\\)?\\(def\\(?:\\sw\\|\\s_\\)*\\)\\>[ \n ]*\\(?:#?^\\(?:{[^}]*}\\|\\(?:\\sw\\|\\s_\\)+\\)[ \n ]*\\)*\\(\\(?:\\sw\\|\\s_\\)+\\)") #@138 Find the var declaration macro and symbol name of the current form. Returns a list pair, e.g. ("defn" "abc") or ("deftest" "some-test"). (defalias 'clojure-find-def #[0 "\212\301!\204\n\302 \210\303\304\305#\205\306\307!\306\310!D)\207" [clojure-def-type-and-name-regex looking-at beginning-of-defun search-forward-regexp nil t match-string-no-properties 1 2] 4 (#$ . 60247)]) #@112 Return non-nil if text after point is "non-logical" sexp. "Non-logical" sexp are ^metadata and #reader.macros. (defalias 'clojure--looking-at-non-logical-sexp #[0 "\301 \210\302d!\210\303\304\305!)\207" [inhibit-changing-match-data comment-normalize-vars comment-forward "\\(?:#?\\^\\)\\|#:?:?[[:alpha:]]" t looking-at] 3 (#$ . 60636)]) #@182 Move forward N logical sexps. This will skip over sexps that don't represent objects, so that ^hints and #reader.macros are considered part of the following sexp. (fn &optional N) (defalias 'clojure-forward-logical-sexp #[256 "\211\204\301\262\211\302W\203\303[!\207\304\211\302V\2055\305 \203&\306\301!\210\202\306\301!\210\307\304w\210\211S\262\202)\207" [forward-sexp-function 1 0 clojure-backward-logical-sexp nil clojure--looking-at-non-logical-sexp forward-sexp ","] 3 (#$ . 60982) "p"]) #@183 Move backward N logical sexps. This will skip over sexps that don't represent objects, so that ^hints and #reader.macros are considered part of the following sexp. (fn &optional N) (defalias 'clojure-backward-logical-sexp #[256 "\211\204\301\262\211\302W\203\303[!\207\304\211\302V\205E\305\301!\210o\204>\30612\212\305\301!\210\307 )0\2024\210\304\203>\305\301!\210\202\211S\262\202)\207" [forward-sexp-function 1 0 clojure-forward-logical-sexp nil backward-sexp (error) clojure--looking-at-non-logical-sexp] 3 (#$ . 61498) "p"]) #@70 Return truthy if the first form matches FIRST-FORM. (fn FIRST-FORM) (defalias 'clojure-top-level-form-p #[257 "\3011(\3021$\212\303 \210\304u\210\305\304!\210\306\304!\210\211\307\310!)\262)00\2070\210\311\207\210\311\207" [inhibit-changing-match-data (end-of-buffer) (scan-error) beginning-of-defun 1 clojure-forward-logical-sexp clojure-backward-logical-sexp t looking-at nil] 4 (#$ . 62053)]) #@180 Return the starting points for forms before POSITION. Positions are in descending order to aide in finding the first starting position before the current position. (fn POSITION) (defalias 'clojure-sexp-starts-until-position #[257 "\212\300\3011%`W\205 \302\303!\210\304\303!\210`B\262\302\303!\210\2020\210\202&\210\211\262)\207" [nil (scan-error) clojure-forward-logical-sexp 1 clojure-backward-logical-sexp] 4 (#$ . 62462)]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313& \207" [custom-declare-variable clojure-toplevel-inside-comment-form funcall function #[0 "\300\207" [nil] 1] "Eval top level forms inside comment forms instead of the comment form itself.\nExperimental. Function `cider-defun-at-point' is used extensively so if we\nchange this heuristic it needs to be bullet-proof and desired. While\ntesting, give an easy way to turn this new behavior off." :type boolean :safe booleanp :package-version (clojure-mode . "5.9.0")] 10) #@74 Find first element of COLL for which PRED return truthy. (fn PRED COLL) (defalias 'clojure-find-first #[514 "\300\204\211\203@!\203\211@\262\202\211A\262\202\207" [nil] 6 (#$ . 63440)]) #@174 Go to top level form. Set as `beginning-of-defun-function' so that these generic operators can be used. Given a positive N it will do it that many times. (fn &optional N) (defalias 'clojure-beginning-of-defun-function #[256 "\302 \203T\303\304!\203T\3051M\306 \307\310\"\216`\302\311 \210\312 \210`\262\311 \210\313u\210\314 \210\315\307\316\"\317!\"\211\203?\211b\210\320\202B\311!\262\266\202)\2620\202W\210\311!\202W\311!)\207" [beginning-of-defun-function clojure-toplevel-inside-comment-form nil clojure-top-level-form-p "comment" (scan-error) match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] beginning-of-defun end-of-defun 1 clojure-forward-logical-sexp clojure-find-first #[257 "\211\300W\207" [V0] 3 "\n\n(fn BEG-POS)"] clojure-sexp-starts-until-position t] 8 (#$ . 63651)]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313& \207" [custom-declare-variable clojure-thread-all-but-last funcall function #[0 "\300\207" [nil] 1] "Non-nil means do not thread the last expression.\nThis means that `clojure-thread-first-all' and\n`clojure-thread-last-all' not thread the deepest sexp inside the\ncurrent sexp." :package-version (clojure-mode . "5.4.0") :safe booleanp :type boolean] 10) #@161 Return POINT after performing ACTIONS. An action is either the symbol of a function or a two element list of (fn args) to pass to `apply'' (fn &rest ACTIONS) (defalias 'clojure--point-after #[128 "\212\211\211\203'\211@\211<\203\211@\202\211<\205A\300\"\266A\266\202\202\210`)\207" [apply] 8 (#$ . 64914)]) #@49 Undo a `join-line' done by a threading command. (defalias 'clojure--maybe-unjoin-line #[0 "\300`\301\"\205\302``T\303#\210\304c\207" [get-text-property clojure-thread-line-joined remove-text-properties (clojure-thread-line-joined t) "\n"] 4 (#$ . 65244)]) #@95 Unwind a thread last macro once. Point must be between the opening paren and the ->> symbol. (defalias 'clojure--unwind-last #[0 "\300 \210\212\301 \302\303!\203\304\305!\210\306 \210\307 \300 \210\307 U?\310\311!\210\211\203,\312c\210\202/\313 \210c\266)\314u\207" [forward-sexp clojure-delete-and-extract-sexp looking-at " *\n" join-line following clojure--ensure-parens-around-function-names line-number-at-pos down-list -1 "\n" clojure--maybe-unjoin-line nil] 6 (#$ . 65508)]) #@51 Insert parens around function names if necessary. (defalias 'clojure--ensure-parens-around-function-names #[0 "\300 \210\301\302!?\205\303\304!\210\305 \207" [clojure--looking-at-non-logical-sexp looking-at "(" insert-parentheses 1 backward-up-list] 2 (#$ . 66004)]) #@95 Unwind a thread first macro once. Point must be between the opening paren and the -> symbol. (defalias 'clojure--unwind-first #[0 "\300 \210\212\301 \302\303!\203\304\305!\210\306 \210\307 \210\300 \210\211c\210\300\310!\210\311 \266)\312u\207" [forward-sexp clojure-delete-and-extract-sexp looking-at " *\n" join-line following clojure--ensure-parens-around-function-names down-list -1 clojure--maybe-unjoin-line nil] 3 (#$ . 66279)]) #@53 Raise a sexp up a level to unwind a threading form. (defalias 'clojure--pop-out-of-threading #[0 "\212\300\301!\210\302 \210\303 )\207" [down-list 2 backward-up-list raise-sexp] 2 (#$ . 66725)]) #@62 Return non-nil if a threaded form cannot be unwound further. (defalias 'clojure--nothing-more-to-unwind #[0 "\212`\300 \210\301\302!\210\303\304!\210\305\306\307 \"\203\310 \210\211`U\262)\207" [forward-sexp down-list -1 backward-sexp 2 looking-back "(\\s-*" line-beginning-position backward-up-list] 4 (#$ . 66926)]) #@164 Fix whitespace after unwinding a threading form. Optional argument MOVE-OUT, if non-nil, means moves up a list before fixing whitespace. (fn &optional MOVE-OUT) (defalias 'clojure--fix-sexp-whitespace #[256 "\212\211\203\300 \210\301\302!\303@A\"\210\304@A\"\262)\207" [backward-up-list bounds-of-thing-at-point sexp clojure-indent-region delete-trailing-whitespace] 5 (#$ . 67254)]) #@138 Unwind thread at point or above point by N levels. With universal argument \[universal-argument], fully unwind thread. (fn &optional N) (defalias 'clojure-unwind #[256 "\211\300\232\203\n\301\202\211\206\302\262\212\212\303 \210`)\3041-\305\306!\205(\302u\210\307\302!0\210\202.\210\310V\205m\311\312\"\210\313 \203J\314 \210\315 \210\310\262\202.\316 \210\305\317!\203Y\320 \210\202b\305\321!\203b\322 \210\315\323!\210S\262\202.\262)\207" [(4) 999 1 beginning-of-defun (error) looking-at "(" forward-sexp 0 search-backward-regexp "([^-]*->" clojure--nothing-more-to-unwind clojure--pop-out-of-threading clojure--fix-sexp-whitespace down-list "[^-]*->\\_>" clojure--unwind-first "[^-]*->>\\_>" clojure--unwind-last move-out] 5 (#$ . 67654) "P"]) #@46 Fully unwind thread at point or above point. (defalias 'clojure-unwind-all #[0 "\300\301!\207" [clojure-unwind (4)] 2 (#$ . 68430) nil]) #@34 Remove extra parens from a form. (defalias 'clojure--remove-superfluous-parens #[0 "\300\301!\205\302 \207" [looking-at "([^ )]+)" delete-pair] 2 (#$ . 68573)]) #@32 Thread a nested sexp using ->. (defalias 'clojure--thread-first #[0 "\300 \210\301\302!\210\303\304!?\2059\305 \306 \210\307\310!\210\212\211\311\261\210\312 \210)\303\313!\2036\314\315!\210\302u\210\316``T\317\320$\210\320\262\207" [down-list forward-symbol 1 looking-at ")" clojure-delete-and-extract-sexp backward-up-list just-one-space 0 "\n" clojure--remove-superfluous-parens "\\s-*\n" join-line following put-text-property clojure-thread-line-joined t] 6 (#$ . 68742)]) #@33 Thread a nested sexp using ->>. (defalias 'clojure--thread-last #[0 "\300\301!\210\302\303!\210\304 \210`Sf\305=?\205A\306 \307\310!\210\311 \210\211\312\261\210\313 \210\300 \210\314\315\316 \"\203>\317\224\320\211T\321\322$\266\323 \210\322\262\207" [forward-sexp 2 down-list -1 backward-sexp 40 clojure-delete-and-extract-sexp just-one-space 0 backward-up-list "\n" clojure--remove-superfluous-parens looking-back "^\\s-*\\()+\\)\\s-*" line-beginning-position 1 put-text-property clojure-thread-line-joined t join-line] 7 (#$ . 69229)]) #@43 Return non-nil if a form can be threaded. (defalias 'clojure--threadable-p #[0 "\212\300\301!\210\302\303!)\207" [forward-symbol 1 looking-at "[\n ]*("] 2 (#$ . 69781)]) #@55 Thread by one more level an existing threading macro. (defalias 'clojure-thread #[0 "\3001\301\302!\205\303u\210\304\303!0\210\202\210\305\306!\210\307 \210\310 \2059\301\311!\203-\312 \2025\301\313!\2055\314 \315\316!\210\207" [(error) looking-at "(" 1 forward-sexp search-backward-regexp "([^-]*->" down-list clojure--threadable-p "[^-]*->\\_>" clojure--thread-first "[^-]*->>\\_>" clojure--thread-last clojure--fix-sexp-whitespace move-out] 3 (#$ . 69959) nil]) #@221 Fully thread the form at point. FIRST-OR-LAST-THREAD is "->" or "->>". When BUT-LAST is non-nil, the last expression is not threaded. Default value is `clojure-thread-all-but-last'. (fn FIRST-OR-LAST-THREAD BUT-LAST) (defalias 'clojure--thread-all #[514 "\212\301\302!\210c\210)\212\303 )\204 \211\204\205\304 \207" [clojure-thread-all-but-last insert-parentheses 1 clojure-thread clojure-unwind] 4 (#$ . 70441)]) #@169 Fully thread the form at point using ->. When BUT-LAST is non-nil, the last expression is not threaded. Default value is `clojure-thread-all-but-last'. (fn BUT-LAST) (defalias 'clojure-thread-first-all #[257 "\300\301\"\207" [clojure--thread-all "-> "] 4 (#$ . 70872) "P"]) #@170 Fully thread the form at point using ->>. When BUT-LAST is non-nil, the last expression is not threaded. Default value is `clojure-thread-all-but-last'. (fn BUT-LAST) (defalias 'clojure-thread-last-all #[257 "\300\301\"\207" [clojure--thread-all "->> "] 4 (#$ . 71156) "P"]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313& \207" [custom-declare-variable clojure-use-metadata-for-privacy funcall function #[0 "\300\207" [nil] 1] "If nil, `clojure-cycle-privacy' will use (defn- f []).\nIf t, it will use (defn ^:private f [])." :package-version (clojure-mode . "5.5.0") :safe booleanp :type boolean] 10) #@131 Make public the current private def, or vice-versa. See: https://github.com/clojure-emacs/clj-refactor.el/wiki/cljr-cycle-privacy (defalias 'clojure-cycle-privacy #[0 "\212\3011\f\302u0\210\202 \210\303\304!\210\305\306!\203!\307\310\311\211\211\306%\2027\312\225b\210\2041\305\312!\313\232\2035\314\2026\315c)\207" [clojure-use-metadata-for-privacy (error) 7 search-backward-regexp "(defn?\\(-\\| ^:private\\)?\\_>" match-string 1 replace-match "" nil 0 "(def" " ^:private" "-"] 6 (#$ . 71785) nil]) #@128 Convert the collection at (point) by unwrapping it an wrapping it between COLL-OPEN and COLL-CLOSE. (fn COLL-OPEN COLL-CLOSE) (defalias 'clojure--convert-collection #[514 "\212o\204\300\301!\204\302u\210\202`Sf\303=\204!`Sf\304=\203%\305\302!\210o\2034\306f\307>\2044\310\311!\210\312 \313\302O\261)\207" [looking-at "(\\|{\\|\\[" -1 35 39 delete-char nil (123 40 91) user-error "Beginning of file reached, collection is not found" clojure-delete-and-extract-sexp 1] 6 (#$ . 72301)]) #@40 Convert collection at (point) to list. (defalias 'clojure-convert-collection-to-list #[0 "\300\301\302\"\207" [clojure--convert-collection "(" ")"] 3 (#$ . 72805) nil]) #@47 Convert collection at (point) to quoted list. (defalias 'clojure-convert-collection-to-quoted-list #[0 "\300\301\302\"\207" [clojure--convert-collection "'(" ")"] 3 (#$ . 72980) nil]) #@39 Convert collection at (point) to map. (defalias 'clojure-convert-collection-to-map #[0 "\300\301\302\"\207" [clojure--convert-collection "{" "}"] 3 (#$ . 73170) nil]) #@42 Convert collection at (point) to vector. (defalias 'clojure-convert-collection-to-vector #[0 "\300\301\302\"\207" [clojure--convert-collection "[" "]"] 3 (#$ . 73343) nil]) #@39 Convert collection at (point) to set. (defalias 'clojure-convert-collection-to-set #[0 "\300\301\302\"\207" [clojure--convert-collection "#{" "}"] 3 (#$ . 73522) nil]) #@51 Check whether the point is currently in a string. (defalias 'clojure--in-string-p #[0 "\300\301 8\207" [3 syntax-ppss] 2 (#$ . 73696)]) #@52 Check whether the point is currently in a comment. (defalias 'clojure--in-comment-p #[0 "\300\301 8\207" [4 syntax-ppss] 2 (#$ . 73838)]) #@53 Find the first surrounding if or if-not expression. (defalias 'clojure--goto-if #[0 "\300 \203\301\302!\203\300 \203\303u\210\202\301\304!?\2050\3051(\306 0\210\202\210\307\310!\210\202\207" [clojure--in-string-p looking-at "(" -1 "\\((if \\)\\|\\((if-not \\)" (scan-error) backward-up-list user-error "No if or if-not found"] 2 (#$ . 73982)]) #@125 Change a surrounding if to if-not, or vice-versa. See: https://github.com/clojure-emacs/clj-refactor.el/wiki/cljr-cycle-if (defalias 'clojure-cycle-if #[0 "\212\300 \210\301\302!\203\303u\210\304\305!\210\306\307!\210\310\311!\202.\301\312!\205.\303u\210\313c\210\306\307!\210\310\311!)\207" [clojure--goto-if looking-at "(if-not" 3 delete-char 4 forward-sexp 2 transpose-sexps 1 "(if" "-not"] 2 (#$ . 74347) nil]) #@57 Find the first surrounding when or when-not expression. (defalias 'clojure--goto-when #[0 "\300 \203\301\302!\203\300 \203\303u\210\202\301\304!?\2050\3051(\306 0\210\202\210\307\310!\210\202\207" [clojure--in-string-p looking-at "(" -1 "\\((when \\)\\|\\((when-not \\)" (scan-error) backward-up-list user-error "No when or when-not found"] 2 (#$ . 74773)]) #@55 Change a surrounding when to when-not, or vice-versa. (defalias 'clojure-cycle-when #[0 "\212\300 \210\301\302!\203\303u\210\304\305!\202\301\306!\205\307u\210\310c)\207" [clojure--goto-when looking-at "(when-not" 9 delete-char -4 "(when" 5 "-not"] 2 (#$ . 75151) nil]) #@51 Add or remove a not form around the current form. (defalias 'clojure-cycle-not #[0 "\212\3001\f\301 0\210\202\210\302\303!\210\304\305\306\"\203%\307\310!\210\311 \210\307\312!\202-\305c\210\311 \210\313c)\207" [(scan-error) backward-up-list user-error "`clojure-cycle-not' must be invoked inside a list" looking-back "(not " nil delete-char -5 forward-sexp 1 ")"] 3 (#$ . 75433) nil]) #@252 Regexp matching let like expressions, i.e. "let", "when-let", "if-let". The first match-group is the let expression. The second match-group is the whitespace or the opening square bracket if no whitespace between the let expression and the bracket. (defvar clojure--let-regexp "(\\(when-let\\|if-let\\|let\\)\\(\\s-*\\|\\[\\)" (#$ . 75831)) #@46 Go to the beginning of the nearest let form. (defalias 'clojure--goto-let #[0 "\301 \203\302\303!\203\301 \203\304u\210\202\3051,\302!?\205'\306 \210\2020\210\202-\210\302!\207" [clojure--let-regexp clojure--in-string-p looking-at "(" -1 (error) backward-up-list] 2 (#$ . 76180)]) #@50 Return non-nil if point is inside a let binding. (defalias 'clojure--inside-let-binding-p #[0 "\3001\"\212`\301 \210\302\303!\210\211`W?\205\304 \210\305 \210\211`W\262)0\207\210\306\207" [(error) clojure--goto-let re-search-forward "\\[" forward-sexp up-list nil] 3 (#$ . 76482)]) #@103 Move before the bound name of the current binding. Assume that point is in the binding form of a let. (defalias 'clojure--beginning-of-current-let-binding #[0 "`\300 \210\301\302!\210\303u\210\211`V\203\304 \210\202 \305\306!\207" [clojure--goto-let search-forward "[" nil forward-sexp backward-sexp 2] 3 (#$ . 76775)]) #@54 Keep the column position while go the previous line. (defalias 'clojure--previous-line #[0 "i\300y\210\301!\207" [-1 move-to-column] 3 (#$ . 77104)]) #@73 Move to right place in the let form to insert a new binding and indent. (defalias 'clojure--prepare-to-insert-new-let-binding #[0 "\300 \203\301 \210\302 \210\303 \210\304 \207\305 \210\306\307!\210\310 \210\311 \210\312\313!\210\313u\210\314\315!\203.\316u\207\316u\210\302 \207" [clojure--inside-let-binding-p clojure--beginning-of-current-let-binding newline-and-indent clojure--previous-line indent-for-tab-command clojure--goto-let search-forward "[" backward-up-list forward-sexp down-list -1 looking-at "\\[\\s-*\\]" nil] 2 (#$ . 77261)]) #@47 Return a regexp for matching SEXP. (fn SEXP) (defalias 'clojure--sexp-regexp #[257 "\300\301\302\303\304\305!\"\306#\300Q\207" ["\\([^[:word:]^-]\\)" mapconcat identity mapcar regexp-quote split-string "[[:space:]\n ]+"] 8 (#$ . 77816)]) #@194 Replace a binding with its bound name in the let form. BOUND-NAME is the name (left-hand side) of a binding. INIT-EXPR is the value (right-hand side) of a binding. (fn BOUND-NAME INIT-EXPR) (defalias 'clojure--replace-sexp-with-binding #[514 "\212\300\301!\302\303\304\"\305#\205\306\307\310Q!\210\202)\207" [re-search-forward clojure--sexp-regexp clojure--point-after clojure--goto-let forward-sexp t replace-match "\\1" "\\2"] 7 (#$ . 78064)]) #@143 Replace bindings with their respective bound names in the let form. BINDINGS is the list of bound names and init expressions. (fn BINDINGS) (defalias 'clojure--replace-sexps-with-bindings #[257 "\211A\262\242\211A\262\242\205\300\"\210\301!\207" [clojure--replace-sexp-with-binding clojure--replace-sexps-with-bindings] 6 (#$ . 78526)]) #@30 Replace sexps with bindings. (defalias 'clojure--replace-sexps-with-bindings-and-indent #[0 "\300\301 !\210\302\303\304!\303\304\305\"\"\207" [clojure--replace-sexps-with-bindings clojure--read-let-bindings clojure-indent-region clojure--point-after clojure--goto-let forward-sexp] 5 (#$ . 78881)]) #@145 Read the bound-name and init expression pairs in the binding form. Return a list: odd elements are bound names, even elements init expressions. (defalias 'clojure--read-let-bindings #[0 "\300 \210\301\302!\210`\211\212\303u\210\304 \210\301\303!\210`)\305U\2044\304 \210\306\307`\"!B\262\310\305w\210`\262\202\211\237\207" [clojure--goto-let down-list 2 -1 forward-sexp nil string-trim buffer-substring-no-properties " \n [:blank:]"] 8 (#$ . 79187)]) #@153 Create a let form, binding the form at point with NAME. Optional numeric argument N, if non-nil, introduces the let N lists up. (fn NAME &optional N) (defalias 'clojure--introduce-let-internal #[513 "\211\247\2032\300 c\210\3011\302!0\210\202\210\303\300 \304\261\210\305 \210\306 \210\307 \210\310\311\312\261\210\313 \207\314\300 \315\261\210\305 \210\316\300 \304\261\210\305 \210\306\317!\210c\210\307 \210\320 \210\321 \210c\207" [clojure-delete-and-extract-sexp (error) backward-up-list "(let" ")" backward-sexp down-list forward-sexp " [" " " "]\n" clojure--replace-sexps-with-bindings-and-indent "[ " "]" "(let " 2 up-list newline-and-indent] 8 (#$ . 79654)]) #@63 Bind the form at point to NAME in the nearest let. (fn NAME) (defalias 'clojure--move-to-let-internal #[257 "\212\300 )\204 \301!\207\302 c\210\303 \210\211c\210\304 \210\305c\210\306u\210c\210\307 \207" [clojure--goto-let clojure--introduce-let-internal clojure-delete-and-extract-sexp clojure--prepare-to-insert-new-let-binding backward-sexp " " -1 clojure--replace-sexps-with-bindings-and-indent] 3 (#$ . 80345)]) #@63 Slurp the s-expression before the let form into the let form. (defalias 'clojure--let-backward-slurp-sexp-internal #[0 "\300 \210\301 \210\302\303 !\304 \210\305 \210\306\307!\210\310 \210\211c\210\311 \207" [clojure--goto-let backward-sexp string-trim clojure-delete-and-extract-sexp delete-blank-lines down-list forward-sexp 2 newline-and-indent clojure--replace-sexps-with-bindings-and-indent] 3 (#$ . 80773)]) #@166 Slurp the s-expression before the let form into the let form. With a numeric prefix argument slurp the previous N s-expressions into the let form. (fn &optional N) (defalias 'clojure-let-backward-slurp-sexp #[256 "\211\206\300\211\301\211W\205\302\212\303 \210)\210\211T\262\202\207" [1 0 nil clojure--let-backward-slurp-sexp-internal] 6 (#$ . 81194) "p"]) #@67 Slurp the next s-expression after the let form into the let form. (defalias 'clojure--let-forward-slurp-sexp-internal #[0 "\300 \210\301 \210\302\303 !\304\305!\210\306 \210\211c\210\307 \207" [clojure--goto-let forward-sexp string-trim clojure-delete-and-extract-sexp down-list -1 newline-and-indent clojure--replace-sexps-with-bindings-and-indent] 3 (#$ . 81566)]) #@166 Slurp the next s-expression after the let form into the let form. With a numeric prefix argument slurp the next N s-expressions into the let form. (fn &optional N) (defalias 'clojure-let-forward-slurp-sexp #[256 "\211\204\300\262\211\301\211W\205\302\212\303 \210)\210\211T\262\202 \207" [1 0 nil clojure--let-forward-slurp-sexp-internal] 5 (#$ . 81940) "p"]) #@130 Create a let form, binding the form at point. With a numeric prefix argument the let is introduced N lists up. (fn &optional N) (defalias 'clojure-introduce-let #[256 "\300\301\302!\"\207" [clojure--introduce-let-internal read-from-minibuffer "Name of bound symbol: "] 4 (#$ . 82316) "P"]) #@57 Move the form at point to a binding in the nearest let. (defalias 'clojure-move-to-let #[0 "\300\301\302!!\207" [clojure--move-to-let-internal read-from-minibuffer "Name of bound symbol: "] 3 (#$ . 82614) nil]) #@164 Regexp for matching usages of ALIAS in qualified symbols, keywords and maps. When nil, match all namespace usages. The first match-group is the alias. (fn ALIAS) (defalias 'clojure--alias-usage-regexp #[257 "\211\203\n\301!\202 \302\303\304\260\207" [clojure--sym-regexp regexp-quote "#::\\(?1:" "\\)[ , \n ]*{\\|\\_<\\(?1:" "\\)/"] 7 (#$ . 82832)]) #@111 Rename all usages of CURRENT-ALIAS in region BEG to END with NEW-ALIAS. (fn CURRENT-ALIAS NEW-ALIAS BEG END) (defalias 'clojure--rename-ns-alias-usages #[1028 "\300!\301 \302\303\"\216\212b\210\304 \262b\210\305\306#\2051\307 \204\310\224b\210`\310\225|\210c\210\202*\207" [clojure--alias-usage-regexp save-mark-and-excursion--save make-closure #[0 "\301\300!\207" [V0 save-mark-and-excursion--restore] 2] point-marker re-search-forward noerror clojure--in-string-p 1] 10 (#$ . 83197)]) #@227 Collect all aliases between BEG and END. When NS-FORM-P is non-nil, treat the region as a ns form and pick up aliases from [... :as alias] forms, otherwise pick up alias usages from keywords / symbols. (fn BEG END NS-FORM-P) (defalias 'clojure--collect-ns-aliases #[771 "\300\212\203\n\301\202 \302\300!b\210\303\304#\2039\305 \204\306 \204\307\310!\211\235\203/\2022\211B\262\262\202\311!\262)\207" [nil ":as[[:space:]]+\\(?1:[^]\n ,]+\\)" clojure--alias-usage-regexp re-search-forward noerror clojure--in-string-p clojure--in-comment-p match-string-no-properties 1 reverse] 9 (#$ . 83705)]) #@125 Rename a namespace alias CURRENT-ALIAS to NEW-ALIAS. Assume point is at the start of ns form. (fn CURRENT-ALIAS NEW-ALIAS) (defalias 'clojure--rename-ns-alias-internal #[514 "\300\301!\210\302\303!\304Q\212\305\306!\210\307 )\310\311#\205&\312\313P!\210\314d$\207" [clojure--find-ns-in-direction backward ":as +" regexp-quote "\\_>" forward-list 1 point-marker search-forward-regexp t replace-match ":as " clojure--rename-ns-alias-usages] 9 (#$ . 84328)]) #@101 Rename a namespace alias. If a region is active, only pick up and rename aliases within the region. (defalias 'clojure-rename-ns-alias #[0 "\300 \2038\301 \302\303 !\304\211\305\306\307\304#\"\211\262\211\310\230\262?\2057\311\312\313\"!\262\314$\210\202 \207\212\315\316!\210\317\320!\305\306\307@A\321#\"\311\312\313\"!\322\"\266\203)\207" [use-region-p region-beginning copy-marker region-end nil completing-read "Current alias: " clojure--collect-ns-aliases "" read-from-minibuffer format "Replace %s with: " clojure--rename-ns-alias-usages clojure--find-ns-in-direction backward bounds-of-thing-at-point list t clojure--rename-ns-alias-internal] 10 (#$ . 84800) nil]) #@97 Add an arity to a signature inside a defprotocol. Assumes cursor is at beginning of signature. (defalias 'clojure--add-arity-defprotocol-internal #[0 "\300\301!\210\212\302c)\207" [re-search-forward "\\[" "] ["] 2 (#$ . 85501)]) #@89 Add an arity to a function inside a reify. Assumes cursor is at beginning of function. (defalias 'clojure--add-arity-reify-internal #[0 "\300\301!\210\302c\210\212\303\304\305!\261)\207" [re-search-forward "\\(\\w+ \\)" "[" "])\n(" match-string 0] 3 (#$ . 85737)]) #@74 Add an arity to a function. Assumes cursor is at beginning of function. (defalias 'clojure--add-arity-internal #[0 "\300 \212\301 \210`)\302\303!\210\304\305\306\"\203\307 \210\302 \210\304\310\306\"\203(\311c\210\212\312c)\207\304\313\306\"\205P\300 \230\211\2058\314\315P\212b\210\316c\210)\317\320!\210\321!\210\212\322c)\266\202\207" [what-line forward-sexp down-list 2 looking-back "{" 1 up-list "(" "[" "])\n(" "\\[" "\n" "([" ")" re-search-backward " +\\[" replace-match "])\n(["] 6 (#$ . 86010)]) #@29 Add an arity to a function. (defalias 'clojure-add-arity #[0 "`\301\302\303\304!)\262\204\211T\262\305\306\303\"\210\202`\307 \212\310 \210`)\311\312\223\210\313\303\304!)\262\203;\314 \210\202\241\315\303\304!)\262\203V\211\316Z\"\210\314 \210\202\241\317\303\304!)\262\203p\211S\"\210\314 \210\202\241\320\303\304!)\262\203\212\211S\"\210\321 \210\202\241\322\303\304!)\262\203\241\211S\"\210\323 \210\324\"\207" [inhibit-changing-match-data 0 "(\\(defn\\|letfn\\|fn\\|defmacro\\|defmethod\\|defprotocol\\|reify\\|proxy\\)" t looking-at backward-up-list 1 make-marker forward-sexp #[514 "b\210\300\301\"\207" [backward-up-list t] 5 "\n\n(fn ORIGINAL-POS X)"] nil "(\\(defn\\|fn\\|defmethod\\|defmacro\\)" clojure--add-arity-internal "(letfn" 2 "(proxy" "(defprotocol" clojure--add-arity-defprotocol-internal "(reify" clojure--add-arity-reify-internal indent-region] 10 (#$ . 86530) nil]) #@246 Insert or delete N `#_' ignore macros at the current point. Point must be directly before a sexp or the #_ characters. When acting on a top level form, insert #_ on a new line preceding the form to prevent indentation changes. (fn &optional N) (defalias 'clojure--toggle-ignore-next-sexp #[256 "\300\301\206\302\303BB!\304 \210\305\306x\210\307\306w\210\310!\203!`\311\225|\207\206&\302\311\211W\203:\306\312\313!\266\211T\262\202'\266\314 @\311U\205G\312\315!\207" [rx-to-string repeat 1 ((seq "#_" (* (in " \n" blank)))) backward-prefix-chars "#_ \n" nil " \n" looking-at 0 insert-before-markers "#_" syntax-ppss "\n"] 7 (#$ . 87481)]) #@188 Toggle the #_ ignore reader form for the sexp at point. With numeric argument, toggle N number of #_ forms at the same point. e.g. with N = 2: |a b c => #_#_a b c (fn &optional N) (defalias 'clojure-toggle-ignore #[256 "\212\3001\301\302 8\206\303\304!b0\210\202\210\305!)\207" [(error) 8 syntax-ppss beginning-of-thing sexp clojure--toggle-ignore-next-sexp] 3 (#$ . 88143) "p"]) #@224 Toggle the #_ ignore reader form for the surrounding form at point. With optional ARG, move up by ARG surrounding forms first. With universal argument \[universal-argument], act on the "top-level" form. (fn &optional ARG) (defalias 'clojure-toggle-ignore-surrounding-form #[256 "\212\211:\203\f\300 \210\202\3011\302\303\211#0\210\202\210\304 )\207" [clojure-toggle-ignore-defun (scan-error) backward-up-list t clojure--toggle-ignore-next-sexp] 5 (#$ . 88544) "P"]) #@69 Toggle the #_ ignore reader form for the "top-level" form at point. (defalias 'clojure-toggle-ignore-defun #[0 "\212\300 \210\301 )\207" [beginning-of-defun clojure--toggle-ignore-next-sexp] 1 (#$ . 89025) nil]) #@51 Additional font-locking for `clojurescript-mode'. (defconst clojurescript-font-lock-keywords '(("(\\(?:.*/\\)?\\(?:clj->js\\|js-\\(?:>clj\\|delete\\|obj\\)\\)\\>" 0 font-lock-builtin-face)) (#$ . 89243)) (defvar clojurescript-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [clojurescript-mode-hook variable-documentation put "Hook run after entering ClojureScript mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp clojurescript-mode-map definition-name clojurescript-mode] 4) (defvar clojurescript-mode-map (make-sparse-keymap)) (byte-code "\301\302N\204\303\301\302\304\305!#\210\306\307!\204\303\307\310\311#\210\312\313 !\210\307\302N\204-\303\307\302\304\314!#\210\306\300!\204B\303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P\303\300\302\304\320!#\210\303\311\321\322#\207" [clojurescript-mode-abbrev-table clojurescript-mode-map variable-documentation put purecopy "Keymap for `clojurescript-mode'." boundp clojurescript-mode-syntax-table definition-name clojurescript-mode (lambda (def-tmp-var) (defvar clojurescript-mode-syntax-table def-tmp-var)) make-syntax-table "Syntax table for `clojurescript-mode'." (lambda (def-tmp-var) (defvar clojurescript-mode-abbrev-table def-tmp-var)) define-abbrev-table nil "Abbrev table for `clojurescript-mode'." derived-mode-parent clojure-mode] 5) #@251 Major mode for editing ClojureScript code. \{clojurescript-mode-map} In addition to any hooks its parent mode `clojure-mode' might have run, this mode runs the hook `clojurescript-mode-hook', as the final or penultimate step during initialization. (defalias 'clojurescript-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315 !\204'\316 \317 \"\210\320\f!\211\2035\211\321 =\203;\322\f\323 \"\210\210\324 \325\"\204R =\204R\326 \325C#\210\327 !\210\330\f!\210 \331\332\"\210)\333\334!\207" [delay-mode-hooks major-mode mode-name clojurescript-mode-map clojurescript-mode-syntax-table clojurescript-mode-abbrev-table make-local-variable t clojure-mode clojurescript-mode "ClojureScript" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table font-lock-add-keywords nil run-mode-hooks clojurescript-mode-hook local-abbrev-table clojurescript-font-lock-keywords] 5 (#$ . 90719) nil]) (defvar clojurec-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [clojurec-mode-hook variable-documentation put "Hook run after entering ClojureC mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp clojurec-mode-map definition-name clojurec-mode] 4) (defvar clojurec-mode-map (make-sparse-keymap)) (byte-code "\301\302N\204\303\301\302\304\305!#\210\306\307!\204\303\307\310\311#\210\312\313 !\210\307\302N\204-\303\307\302\304\314!#\210\306\300!\204B\303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P\303\300\302\304\320!#\210\303\311\321\322#\207" [clojurec-mode-abbrev-table clojurec-mode-map variable-documentation put purecopy "Keymap for `clojurec-mode'." boundp clojurec-mode-syntax-table definition-name clojurec-mode (lambda (def-tmp-var) (defvar clojurec-mode-syntax-table def-tmp-var)) make-syntax-table "Syntax table for `clojurec-mode'." (lambda (def-tmp-var) (defvar clojurec-mode-abbrev-table def-tmp-var)) define-abbrev-table nil "Abbrev table for `clojurec-mode'." derived-mode-parent clojure-mode] 5) #@236 Major mode for editing ClojureC code. \{clojurec-mode-map} In addition to any hooks its parent mode `clojure-mode' might have run, this mode runs the hook `clojurec-mode-hook', as the final or penultimate step during initialization. (defalias 'clojurec-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315 !\204'\316 \317 \"\210\320\f!\211\2035\211\321 =\203;\322\f\323 \"\210\210\324 \325\"\204R =\204R\326 \325C#\210\327 !\210\330\f!\210 )\331\332!\207" [delay-mode-hooks major-mode mode-name clojurec-mode-map clojurec-mode-syntax-table clojurec-mode-abbrev-table make-local-variable t clojure-mode clojurec-mode "ClojureC" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table run-mode-hooks clojurec-mode-hook local-abbrev-table] 5 (#$ . 93011) nil]) (byte-code "\300\301\302\"\210\300\301\303\"\210\300\301\304\"\210\300\301\305\"\210\306\307!\207" [add-to-list auto-mode-alist ("\\.\\(clj\\|dtm\\|edn\\)\\'" . clojure-mode) ("\\.cljc\\'" . clojurec-mode) ("\\.cljs\\'" . clojurescript-mode) ("\\(?:build\\|profile\\)\\.boot\\'" . clojure-mode) provide clojure-mode] 3)