;ELC���
;;; Compiled
;;; in Emacs version 26.3
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\300\302!\210\303\304\305\306\307\310\311\312&\210\313\314\315\316\317DD\320\321\322%\210\323\324\325\326#\207" [require json smie custom-declare-group json-mode nil "JavaScript Object Notation (JSON) editing mode." :tag "JSON Mode" :group data custom-declare-variable json-mode-indent-level funcall function #[0 "\300\207" [2] 1] "Basic size of one indentation step." :type integer custom-declare-face json-mode-object-name-face ((t :inherit font-lock-variable-name-face)) "Face to use for JSON object names."] 8)
#@27 Keymap used in JSON mode.
(defvar json-mode-map (byte-code "\300\301!\302\303\304#\210\302\305\306#\210\307\310!\210\311\312\313\314$\210\211\207" [make-sparse-keymap "JSON" define-key "" json-mode-pretty-print-dwim "" json-mode-show-path (lambda (#1=#:def-tmp-var) (defvar json-menu #1# #2="JSON mode menu")) nil easy-menu-do-define json-menu #2# ("JSON" :help "JSON-specific features" ["Pretty-print region" json-mode-pretty-print-dwim :visible (region-active-p)] ["Pretty-print buffer" json-mode-pretty-print-dwim :visible (not (region-active-p))] ["Show path" json-mode-show-path])] 6) (#$ . 949))
(defvar json-mode-syntax-table (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\307#\210\301\310\311#\210\301\312\313#\210\301\314\315#\210\301\316\317#\210\211\207" [make-syntax-table modify-syntax-entry 123 "(}" 125 "){" 91 "(]" 93 ")[" 34 "\"" 47 ". 12" 10 ">"] 5))
#@24 List of JSON keywords.
(defconst json-mode--keywords '("true" "false" "null") (#$ . 1851))
(defvar json-mode-font-lock-keywords (byte-code "\301\302!\303Q\304BC\207" [json-mode--keywords "\\<" regexp-opt "\\>" ((0 font-lock-constant-face))] 3))
#@76 Return t if STARTPOS is at the beginning of an object name.

(fn STARTPOS)
(defalias 'json-mode--string-is-object-name-p #[257 "\212\211b\210\300f\301=\205#�\3021�\303\304!\210\3050\202�\210\300\202#�\205#�\306\307!)\207" [nil 34 (scan-error) forward-sexp 1 t looking-at "[[:blank:]]*:"] 3 (#$ . 2103)])
#@166 Determine which face to use for strings and comments.
Object names receive the face `json-mode-object-name-face' to
distinguish them from other strings.

(fn STATE)
(defalias 'json-font-lock-syntactic-face-function #[257 "\3028\203�\207\3038\203�\304\3058!\203�\306\207	\207" [font-lock-comment-face font-lock-string-face 4 3 json-mode--string-is-object-name-p 8 json-mode-object-name-face] 4 (#$ . 2416)])
(defconst json-mode--smie-grammar '((":" 11 22) ("," 0 0)))
#@138 Provide indentation rules for METHOD given ARG.
See the documentation of `smie-rules-function' for further
information.

(fn METHOD ARG)
(defalias 'json-mode--smie-rules #[514 "B\211:\205�\211@\211\301=\205�A\211\302=\205�\262\262\207" [json-mode-indent-level :elem basic] 7 (#$ . 2897)])
#@286 Pretty print region if active, else pretty print the buffer.
`json-mode-indent-level' will be used as indentation offset.  If
ALPHABETICAL is non-nil (interactively, with a prefix argument),
JSON object members will be sorted alphabetically by their keys.

(fn &optional ALPHABETICAL)
(defalias 'json-mode-pretty-print-dwim #[256 "\302\303\"\304 \203�\211\203�\305\202�\306\307 \310 \"\202%�\211\203#�\311\202$�\312 )\207" [json-mode-indent-level json-encoding-default-indentation make-string 32 use-region-p json-pretty-print-ordered json-pretty-print region-beginning region-end json-pretty-print-buffer-ordered json-pretty-print-buffer] 4 (#$ . 3202) "P"])
#@89 Show the path to the JSON value under point.
The value is also copied to the kill ring.
(defalias 'json-mode-show-path #[0 "\300`!\211\203*�\301\302\303\"!\304\305!\203�\305\302\306\"\302\307\"\"\210\310!\210\311!\262\202-�\310\312!\207" [json-path-to-position json-mode--format-path plist-get :path fboundp pulse-momentary-highlight-region :match-start :match-end message kill-new "Not a JSON value"] 7 (#$ . 3873) nil])
(defalias 'json--which-func #[0 "\300\301`!\302\"\211\205�\303\304\305#\207" [plist-get json-path-to-position :path mapconcat #[257 "\300\301\"\207" [format "%s"] 4 "\n\n(fn KEY)"] ";"] 5])
#@131 Return PATH formatted as a JSON data selector.
PATH should be a list of keys, which can be either strings or
integers.

(fn PATH)
(defalias 'json-mode--format-path #[257 "\300\301\302#\207" [mapconcat #[257 "\300\301\"\207" [format "[%S]"] 4 "\n\n(fn KEY)"] ""] 5 (#$ . 4502)])
(add-to-list 'auto-mode-alist '("\\.json\\'" . json-mode))
(defvar json-mode-hook nil)
(byte-code "\300\301N\204\f�\302\300\301\303#\210\304\305!\204�\302\305\306\307#\210\300\207" [json-mode-hook variable-documentation put "Hook run after entering JSON mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp json-mode-map definition-name json-mode] 4)
(defvar json-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" [json-mode-abbrev-table json-mode-map variable-documentation put purecopy "Keymap for `json-mode'." boundp json-mode-syntax-table definition-name json-mode (lambda (#1=#:def-tmp-var) (defvar json-mode-syntax-table #1#)) make-syntax-table "Syntax table for `json-mode'." (lambda (#1#) (defvar json-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `json-mode'." derived-mode-parent prog-mode] 5)
#@256 Major mode for editing JavaScript Object Notation (JSON) data files.

In addition to any hooks its parent mode `prog-mode' might have run,
this mode runs the hook `json-mode-hook', as the final or penultimate step
during initialization.

\{json-mode-map}
(defalias 'json-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
'\306\331!\210\332\333\334\335\336\307$\210\306\337!\210\340\306\341!\210\342!\343(\344\"\210)\345\346!\207" [delay-mode-hooks major-mode mode-name json-mode-map json-mode-syntax-table json-mode-abbrev-table make-local-variable t prog-mode json-mode "JSON" 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-defaults (json-mode-font-lock-keywords nil nil nil nil (font-lock-syntactic-face-function . json-font-lock-syntactic-face-function)) add-hook which-func-functions json--which-func nil comment-start "// " comment-end "" smie-setup json-mode--smie-rules run-mode-hooks json-mode-hook local-abbrev-table json-mode--smie-grammar] 5 (#$ . 5956) nil])
#@16 

(fn BEG END)
(defalias 'json--jit-wrap #[514 "\212\301\302\303$\210b\210\304!\305\306\303#\205h�\307\224\211f\310>\311`\312\211%\262`\262\3138\204c�\314\315@_\316\"P\317`S`\"\320\302\303#\210\320\321#\210\203a�\317\211T\"\320\302\303#\210\320\322#\266\266\266\202�\266\202)\207" [json-mode-indent-level remove-overlays json-jit-wrap t syntax-ppss re-search-forward "[][{},]+" 0 (93 125) parse-partial-sexp nil 8 "\n" make-string 32 make-overlay overlay-put after-string before-string] 13 (#$ . 7303)])
#@105 Non-nil if Json-Jit-Wrap mode is enabled.
Use the command `json-jit-wrap-mode' to change this variable.
(defvar json-jit-wrap-mode nil (#$ . 7841))
(make-variable-buffer-local 'json-jit-wrap-mode)
#@43 Add virtual newlines.

(fn &optional ARG)
(defalias 'json-jit-wrap-mode #[256 "\301 \302=\203
�?\202�\303!\304V\211\203%�\305\306!\210\307\310\311\312\313$\210\2020�\314\306!\210\315ed\316\313$\210\317\320\203:�\321\202;�\322\"\210\323\324!\203_�\301 \203O�\211\301 \232\203_�\325\326\327\203Z�\330\202[�\331#\266\210\332 \210\207" [json-jit-wrap-mode current-message toggle prefix-numeric-value 0 jit-lock-register json--jit-wrap add-hook change-major-mode-hook #[0 "\300\301!\207" [json-jit-wrap-mode -1] 2] nil t jit-lock-unregister remove-overlays json-jit-wrap run-hooks json-jit-wrap-mode-hook json-jit-wrap-mode-on-hook json-jit-wrap-mode-off-hook called-interactively-p any " in current buffer" message "Json-Jit-Wrap mode %sabled%s" "en" "dis" force-mode-line-update] 8 (#$ . 8044) (byte-code "\206�\301C\207" [current-prefix-arg toggle] 1)])
(defvar json-jit-wrap-mode-hook nil)
(byte-code "\301\302N\204\f�\303\301\302\304#\210\305\306\307\310\300!\205�\307\211%\210\311\312!\207" [json-jit-wrap-mode-map json-jit-wrap-mode-hook variable-documentation put "Hook run after entering or leaving `json-jit-wrap-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" add-minor-mode json-jit-wrap-mode nil boundp provide json-mode] 6)