;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\303\304\305\306\307\310\311\312&\207" [require lisp-mode imenu custom-declare-variable shen-mode-hook '(turn-on-eldoc-mode) "Normal hook run when entering `shen-mode'." :type hook :group shen] 8) #@54 Currently just inherits from `lisp-mode-shared-map'. (defvar shen-mode-map (byte-code "\302 \303 \"\210)\207" [map lisp-mode-shared-map make-sparse-keymap set-keymap-parent] 3) (#$ . 323)) #@76 Shen functions taken largely from the Qi documentation by Dr. Mark Tarver. (defconst shen-functions '((* "number --> number --> number" "Number multiplication.") (+ "number --> number --> number" "Number addition.") (- "number --> number --> number" "Number subtraction.") (/ "number --> number --> number" "Number division.") (/\. "_" "Abstraction builder, receives a variable and an expression; does the job of --> in the lambda calculus.") (< "number --> number --> boolean" "Less than.") (<-vector nil nil) (<= "number --> number --> boolean" "Less than or equal to.") ( nil nil) (= "A --> A --> boolean" "Equal to.") (== "A --> B --> boolean" "Equal to.") (> "number --> number --> boolean" "Greater than.") (>= "number --> number --> boolean" "Greater than or equal to.") (@p "_" "Takes two inputs and forms an ordered pair.") (@s "_" "Takes two or more inputs and forms a string.") (@v "_" "Takes two or more inputs and forms a vector.") (abort nil "throw a simple error") (adjoin nil "add arg1 to list arg2 if not already a member") (and "boolean --> boolean --> boolean" "Boolean and.") (append "(list A) --> (list A) --> (list A)" "Appends two lists into one list.") (apply "(A --> B) --> (A --> B)" "Applies a function to an input.") (arity nil nil) (assoc nil nil) (assoc-type "symbol --> variable --> symbol" "Associates a Qi type (first input) with Lisp type (second input)..") (average nil "return the average of two numbers") (bind nil nil) (boolean\? "A --> boolean" "Recognisor for booleans.") (bound\? nil "check is a symbol is bound") (byte->string nil "return the string represented by bytes") (call nil nil) (cd "string --> string" "Changes the home directory. (cd \"My Programs\") will cause (load \"hello_world.txt\") to load MyPrograms/hello_world.txt. (cd \"\") is the default.") (character\? "A --> boolean" "Recognisor for characters.") (compile nil nil) (complex\? "A --> boolean" "Recognisor for complex numbers.") (concat "symbol --> symbol --> symbol" "Concatenates two symbols.") (congruent\? "A --> A --> boolean" "Retrns true if objects are identical or else if they are strings or characters which are identical differing at most in case or numbers of equal value (e.g. 1 and 1.0) or tuples composed of congruent elements.") (cons "_" "A special form that takes an object e of type A and a list l of type (list A) and produces a list of type (list A) by adding e to the front of l.") (cons\? "--> boolean" "Returns true iff the input is a non-empty list.") (core nil nil) (cut nil nil) (debug "A --> string" "The input is ignored and debugging is returned; but all terminal output is echoed to the file debug.txt until the undebug function is executed.") (declare "_" "Takes a function name f and a type t expressed as a list and gives f the type t.") (define "_" "Define a function, takes a name, an optional type and a pattern matching body.") (delete-file "string --> string" "The file named in the string is deleted and the string returned.") (destroy "_" "Receives the name of a function and removes it and its type from the environment.") (difference "(list A) --> (list A) --> (list A)" "Subtracts the elements of the second list from the first") (do "_" "A special form: receives n well-typed expressions and evaluates each one, returning the normal form of the last one.") (dump "string --> string" "Dumps all user-generated Lisp from the file f denoted by the argument into a file f.lsp.") (echo "string --> string" "Echoes all terminal input/output to a file named by string (which is either appended to if it exists or created if not) until the command (echo \"\") is received which switches echo off.") (element\? "A -> (list A) --> boolean" "Returns true iff the first input is an element in the second.") (empty\? "--> boolean" "Returns true iff the input is [].") (error "_" "A special form: takes a string followed by n (n --> 0) expressions. Prints error string.") (eval "_" "Evaluates the input.") (explode "A --> (list character)" "Explodes an object to a list of characters.") (fail nil nil) (fix "(A --> A) --> (A --> A)" "Applies a function to generate a fixpoint.") (float\? "A --> boolean" "Recognisor for floating point numbers.") (floor nil nil) (format nil "takes a stream, a format string and args, formats and prints to the stream") (freeze "A --> (lazy A)" "Returns a frozen version of its input.") (fst "(A * B) --> A" "Returns the first element of a tuple.") (fwhen nil nil) (gensym "_" "Generates a fresh symbol or variable from a string..") (get nil "gets property arg2 from object arg1") (get-array "(array A) --> (list number) --> A --> A" "3-place function that takes an array of elements of type A, an index to that array as a list of natural numbers and an expression E of type A. If an object is stored at the index, then it is returned, otherwise the normal form of E is returned.") (get-prop "_" "3-place function that takes a symbol S, a pointer P (which can be a string, symbol or number), and an expression E of any kind and returns the value pointed by P from S (if one exists) or the normal form of E otherwise.") (hash nil "hash an object") (hdv nil nil) (head "(list A) --> A" "Returns the first element of a list.") (identical nil nil) (if "boolean --> A --> A" "takes a boolean b and two expressions x and y and evaluates x if b evaluates to true and evaluates y if b evaluates to false.") (if-with-checking "string --> (list A)" "If type checking is enabled, raises the string as an error otherwise returns the empty list..") (if-without-checking "string --> (list A)" "If type checking is disabled, raises the string as an error otherwise returns the empty list.") (include "(list symbol) --> (list symbol)" "Includes the datatype theories or synonyms for use in type checking.") (include-all-but "(list symbol) --> (list symbol)" "Includes all loaded datatype theories and synonyms for use in type checking apart from those entered.") (inferences "A --> number" "The input is ignored. Returns the number of logical inferences executed since the last call to the top level.") (input "_" "0-place function. Takes a user input i and returns the normal form of i.") (input+ "_" "Special form. Takes inputs of the form : . Where d() is the type denoted by the choice of expression (e.g. \"number\" denotes the type number). Takes a user input i and returns the normal form of i given i is of the type d().") (integer\? "A --> boolean" "Recognisor for integers.") (interror nil nil) (intersection "(list A) --> (list A) --> (list A)" "Computes the intersection of two lists.") (intmake-string nil nil) (intoutput nil nil) (lambda "_" "Lambda operator from lambda calculus.") (length "(list A) --> integer" "Returns the number of elements in a list.") (let nil nil) (limit nil nil) (lineread "_" "Top level reader of read-evaluate-print loop. Reads elements into a list. lineread terminates with carriage return when brackets are balanced. ^ aborts lineread.") (list "A .. A --> (list A)" "A special form. Assembles n (n --> 0) inputs into a list.") (load "string --> symbol" "Takes a file name and loads the file, returning loaded as a symbol.") (macroexpand nil nil) (make-string "string A1 - An --> string" "A special form: takes a string followed by n (n --> 0) well-typed expressions; assembles and returns a string.") (map "(A --> B) --> (list A) --> (list B)" "The first input is applied to each member of the second input and the results consed into one list..") (mapcan "(A --> (list B)) --> (list A) --> (list B)" "The first input is applied to each member of the second input and the results appended into one list.") (maxinferences "number --> number" "Returns the input and as a side-effect, sets a global variable to a number that limits the maximum number of inferences that can be expended on attempting to typecheck a program. The default is 1,000,000.") (mod nil "arg1 mod arg2") (newsym "symbol --> symbol" "Generates a fresh symbol from a symbol.") (newvar "variable --> variable" "Generates a fresh variable from a variable") (nl nil nil) (not "boolean --> boolean" "Boolean not.") (nth "number --> (list A) --> A" "Gets the nth element of a list numbered from 1.") (number\? "A --> boolean" "Recognisor for numbers.") (occurences "A --> B --> number" "Returns the number of times the first argument occurs in the second.") (occurrences nil "returns the number of occurrences of arg1 in arg2") (occurs-check "symbol --> boolean" "Receives either + or - and enables/disables occur checking in Prolog, datatype definitions and rule closures. The default is +.") (opaque "symbol --> symbol" "Applied to a Lisp macro makes it opaque to Qi.") (or "boolean --> (boolean --> boolean)" "Boolean or.") (output "string A1 - An --> string" "A special form: takes a string followed by n (n --> 0) well-typed expressions; prints a message to the screen and returns an object of type string (the string \"done\").") (preclude "(list symbol) --> (list symbol)" "Removes the mentioned datatype theories and synonyms from use in type checking.") (preclude-all-but "(list symbol) --> (list symbol)" "Removes all the datatype theories and synonyms from use in type checking apart from the ones given.") (print "A --> A" "Takes an object and prints it, returning it as a result.") (profile "(A --> B) --> (A --> B)" "Takes a function represented by a function name and inserts profiling code returning the function as an output.") (profile-results "A --> symbol" "The input is ignored. Returns a list of profiled functions and their timings since profile-results was last used.") (ps "_" "Receives a symbol denoting a Qi function and prints the Lisp source code associated with the function.") (put nil "puts value of arg3 as property arg2 in object arg1") (put-array "(array A) --> (list number) --> A --> A" "3-place function that takes an array of elements of type A, an index to that array as a list of natural numbers and an expression E of type A. The normal form of E is stored at that index and then returned.") (put-prop "_" "3-place function that takes a symbol S, a pointer P (a string symbol or number), and an expression E. The pointer P is set to point from S to the normal form of E which is then returned.") (quit "_" "0-place function that exits Qi.") (random "number --> number" "Given a positive number n, generates a random number between 0 and n-1.") (rational\? "A --> boolean" "Recognisor for rational numbers.") (read nil nil) (read-char "A --> character" "The input is discarded and the character typed by the user is returned.") (read-chars-as-stringlist "(list character) --> (character --> boolean) --> (list string)" "Returns a list of strings whose components are taken from the character list. The second input acts as a tokeniser. Thus (read-chars-as-stringlist [#\\H #\\i #\\Space #\\P #\\a #\\t] (/. X (= X #\\Space))) will produce [\"Hi\" \"Pat\"].") (read-file "string --> (list unit)" "Returns the contents of an ASCII file designated by a string. Returns a list of units, where unit is an unspecified type.") (read-file-as-charlist "string --> (list character)" "Returns the list of characters from the contents of an ASCII file designated by a string.") (read-file-as-string nil nil) (real\? "A --> boolean" "Recognisor for real numbers.") (remove "A --> (list A) --> (list A)" "Removes all occurrences of an element from a list.") (return nil nil) (reverse "(list A)--> ?(list A)" "Reverses a list.") (round "number--> ?number" "Rounds a number.") (save "_" "0 place function. Saves a Qi image.") (snd "(A * B) --> B" "Returns the second element of a tuple.") (specialise "symbol --> symbol" "Receives the name of a function and turns it into a special form. Special forms are not curried during evaluation or compilation.") (speed "number --> number" "Receives a value 0 to 3 and sets the performance of the generated Lisp code, returning its input. 0 is the lowest setting.") (spy "symbol --> boolean" "Receives either + or - and respectively enables/disables tracing the operation of T*.") (sqrt "number --> number" "Returns the square root of a number.") (step "symbol --> boolean" "Receives either + or - and enables/disables stepping in the trace.") (stinput nil nil) (string\? "A --> boolean" "Recognisor for strings.") (strong-warning "symbol --> boolean" "Takes + or -; if + then warnings are treated as error messages.") (subst nil nil) (sugar "symbol --> (A --> B) --> number --> (A --> B)" "Receives either in or out as first argument, a function f and an integer greater than 0 and returns f as a result. The function f is placed on the sugaring list at a position determined by the number.") (sugar-list "symbol --> (list symbol)" "Receives either in or out as first argument, and returns the list of sugar functions.") (sum nil "sum a list of numbers") (symbol\? "A --> boolean" "Recognisor for symbols.") (systemf nil nil) (tail "(list A) --> (list A)" "Returns all but the first element of a non-empty list.") (tc "symbol --> boolean" "Receives either + or - and respectively enables/disables static typing.") (tc\? nil "return true if type checking") (thaw "(lazy A) --> A" "Receives a frozen input and evaluates it to get the unthawed result..") (time "A --> A" "Prints the run time for the evaluation of its input and returns its normal form.") (tlv nil nil) (track "symbol --> symbol" "Tracks the I/O behaviour of a function.") (transparent "symbol --> symbol" "Applied to a Lisp macro makes it transparent to Qi.") (tuple\? "A --> boolean" "Recognisor for tuples.") (type "_" "Returns a type for its input (if any) or false if the input has no type.") (unassoc-type "symbol --> symbol" "Removes any associations with the Qi type in the type association table.") (undebug "A --> string" "The input is ignored, undebugging is returned and all terminal output is closed to the file debug.txt.") (unify nil nil) (unify! nil nil) (union "(list A) --> (list A) --> (list A)" "Forms the union of two lists.") (unprofile "(A --> B) --> (A --> B)" "Unprofiles a function.") (unspecialise "symbol --> symbol" "Receives the name of a function and deletes its special form status.") (unsugar "symbol --> (A --> B) --> (A --> B)" "Receives either out or in and the name of a function and removes its status as a sugar function.") (untrack "symbol --> symbol" "Untracks a function.") (value "_" "Applied to a symbol, returns the global value assigned to it.") (variable\? "A --> boolean" "Applied to a variable, returns true.") (vector nil nil) (vector-> nil nil) (vector\? nil nil) (version "string --> string" "Changes the version string displayed on startup.") (warn "string --> string" "Prints the string as a warning and returns \"done\". See strong-warning") (write-to-file "string --> A --> string" "Writes the second input into a file named in the first input. If the file does not exist, it is created, else it is overwritten. If the second input is a string then it is written to the file without the enclosing quotes. The first input is returned.") (y-or-n\? "string --> boolean" "Prints the string as a question and returns true for y and false for n.")) (#$ . 521)) #@48 Default expressions to highlight in Shen mode. (defconst shen-font-lock-keywords '(("(\\(\\(?:/\\.\\|def\\(?:cc\\|ine\\|macro\\|prolog\\)\\|synonyms\\)\\)\\>[ ]*(?\\(\\sw+\\)?" (1 font-lock-keyword-face) (2 font-lock-function-name-face nil t)) ("(\\(lambda\\)\\>[ ]*(?\\(\\sw+\\)?" (1 font-lock-keyword-face) (2 font-lock-variable-name-face nil t)) ("(\\(datatype\\)\\>[ ]*(?\\(\\sw+\\)?" (1 font-lock-keyword-face) (2 font-lock-type-face nil t)) ("\\<\\([A-Z]\\w*\\)\\>" . font-lock-variable-name-face) ("(\\(=\\|and\\|cond\\|eval-without-reader-macros\\|freeze\\|if\\|let\\|or\\|type\\)\\>" . 1) ("(\\(error\\)\\>" 1 font-lock-warning-face) ("(\\(/\\.\\|<\\(?:-\\(?:address\\|vector\\)\\|=\\|e>\\)\\|==\\|>=\\|@[psv]\\|a\\(?:b\\(?:ort\\|svector\\??\\)\\|d\\(?:dress->\\|join\\)\\|nd\\|pp\\(?:end\\|ly\\)\\|rity\\|ssoc\\(?:-type\\)?\\|verage\\)\\|b\\(?:ind\\|o\\(?:\\(?:olean\\|und\\)\\?\\)\\|yte->string\\)\\|c\\(?:all\\|haracter\\?\\|lose\\|o\\(?:mp\\(?:ile\\|lex\\?\\)\\|n\\(?:cat\\|gruent\\?\\|s\\??\\)\\|re\\)\\|ut\\|[dn]\\)\\|d\\(?:e\\(?:bug\\|clare\\|fine\\|lete-file\\|stroy\\)\\|ifference\\|o\\|ump\\)\\|e\\(?:cho\\|lement\\?\\|mpty\\?\\|rror\\(?:-to-string\\)?\\|val\\|xplode\\)\\|f\\(?:ail\\|ix\\|lo\\(?:at\\?\\|or\\)\\|ormat\\|reeze\\|st\\|\\(?:unctio\\|whe\\)n\\)\\|ge\\(?:nsym\\|t\\(?:-\\(?:array\\|prop\\|time\\)\\)?\\)\\|h\\(?:ash\\|dv?\\|ead\\)\\|i\\(?:dentical\\|f\\(?:-with\\(?:\\(?:out\\)?-checking\\)\\)?\\|n\\(?:clude\\(?:-all-but\\)?\\|ferences\\|put\\+?\\|t\\(?:e\\(?:ger\\?\\|r\\(?:n\\|ror\\|section\\)\\)\\|make-string\\|output\\)\\)\\)\\|l\\(?:ambda\\|e\\(?:ngth\\|t\\)\\|i\\(?:mit\\|neread\\|st\\)\\|oad\\)\\|m\\(?:a\\(?:croexpand\\|ke-string\\|p\\(?:can\\)?\\|xinferences\\)\\|od\\)\\|n\\(?:ew\\(?:sym\\|var\\)\\|l\\|ot\\|th\\|umber\\?\\)\\|o\\(?:ccur\\(?:ences\\|rences\\|s-check\\)\\|p\\(?:aque\\|en\\)\\|r\\|utput\\)\\|p\\(?:os\\|r\\(?:eclude\\(?:-all-but\\)?\\|int\\|o\\(?:file\\(?:-results\\)?\\|vable\\?\\)\\)\\|ut\\(?:-\\(?:array\\|prop\\)\\)?\\|[rs]\\)\\|quit\\|r\\(?:a\\(?:ndom\\|tional\\?\\)\\|e\\(?:a\\(?:d\\(?:-\\(?:byte\\|char\\(?:s-as-stringlist\\)?\\|file\\(?:-as-\\(?:charlist\\|string\\)\\)?\\)\\)?\\|l\\?\\)\\|move\\|turn\\|verse\\)\\|ound\\)\\|s\\(?:ave\\|et\\|imple-error\\|nd\\|olved\\?\\|p\\(?:e\\(?:cialise\\|ed\\)\\|y\\)\\|qrt\\|t\\(?:ep\\|input\\|r\\(?:ing\\?\\|ong-warning\\)?\\)\\|u\\(?:bst\\|gar\\(?:-list\\)?\\|m\\)\\|y\\(?:mbol\\?\\|stemf\\)\\)\\|t\\(?:ail\\|c\\?\\|haw\\|ime\\|l\\(?:str\\|v\\)\\|ra\\(?:ck\\|nsparent\\|p-error\\)\\|up\\(?:p?le\\?\\)\\|ype\\|[cl]\\)\\|un\\(?:assoc-type\\|debug\\|i\\(?:fy!?\\|on\\)\\|profile\\|s\\(?:pecialise\\|ugar\\)\\|track\\)\\|v\\(?:a\\(?:lue\\|riable\\?\\)\\|e\\(?:ctor\\(?:->\\|\\?\\)?\\|rsion\\)\\)\\|w\\(?:arn\\|rite-to-file\\)\\|y-or-n\\?\\|[*+/<=>-]\\)\\>" 1 font-lock-builtin-face) ("\\(\\*\\(?:\\(?:home-directory\\|implementation\\|language\\|ma\\(?:cros\\|ximum-print-sequence-size\\)\\|p\\(?:ort\\(?:ers\\)?\\|rinter\\)\\|stinput\\|version\\)\\*\\)\\)\\>" 1 font-lock-builtin-face)) (#$ . 15713)) #@35 Syntax table to use in shen-mode. (defvar shen-mode-syntax-table (byte-code "\303 \304\305\211\203\n@\306 @ A#\210\nA\211\204 *)\207" [table pair --dolist-tail-- make-syntax-table ((64 . "w") (95 . "w") (45 . "w") (43 . "w") (63 . "w") (33 . "w") (60 . "w") (62 . "w") (47 . "w") (92 . ". 14") (42 . ". 23")) nil modify-syntax-entry] 5) (#$ . 18730)) (defalias 'shen-indent-function #[(indent-point state) "i \306\234Tb\210\307`\n\310\311$\210 \312\234\203:\313\314!\204:\212\306y\210`)\nV\2043\nb\210\315 \210\307`\n\310\311$\210\316 \210i\202\211`\317\306!\210`{\320\321\f!\322N\206Q\321\f!\323N\211\324=\204j \204q\fG\325V\203q\326\327\f\"\203q\330 \"\202\210 \250\203\331 $\202\210 \205\210 #*)\207" [normal-indent state calculate-lisp-indent-last-sexp method function indent-point 1 parse-partial-sexp 0 t 2 looking-at "\\sw\\|\\s_" beginning-of-line backward-prefix-chars forward-sexp nil intern-soft shen-indent-function shen-indent-hook defun 3 string-match "\\`def" lisp-indent-defform lisp-indent-specform] 6]) (defalias 'shen-let-indent #[(state indent-point normal-indent) "i\304Z b\210\305\306w\210\307\310!\203\311\312\n $\202)\207" [edge indent-point state normal-indent 2 " " nil looking-at "[-a-zA-Z0-9+*/?!@$%^&_:~]" lisp-indent-specform 5] 5]) (defalias 'shen-package-indent #[(state indent-point normal-indent) "i\300Z\207" [8] 2]) (byte-code "\300\301\302\303#\210\300\304\302\305#\210\300\306\302\307#\210\300\310\302\305#\207" [put let shen-indent-function shen-let-indent lambda 1 package shen-package-indent datatype] 4) (defalias 'shen-current-function #[nil "\3001\212\301 \210\302u\210\303\304!)0\207\210\305\207" [(error) backward-up-list 1 thing-at-point word nil] 2]) (defalias 'shen-mode-eldoc #[nil "\302\303\304 \206\305!\"\211\205<\306\307\310\311 @!\312\313# A@\203)\314 A@\315Q\202*\305 AA@\203:\316 AA@P\202;\305$)\207" [shen-functions func assoc intern shen-current-function "" format "%s%s:%s" propertize symbol-name face font-lock-function-name-face "[" "]" " "] 7]) (defvar shen-imenu-generic-expression '(("Functions" "^\\s-*(\\(define\\)" 1))) (byte-code "\300\301!\204 \302\301\303\"\210\300\207" [fboundp prog-mode defalias fundamental-mode] 3) (defvar shen-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [shen-mode-hook variable-documentation put "Hook run after entering shen mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp shen-mode-map definition-name shen-mode] 4) (defvar shen-mode-map (make-sparse-keymap)) (byte-code "\301\302N\204\303\301\302\304\305!#\210\306\300!\204#\303\300\307\310#\210\311\312\300\313\"\210!\210\300\302N\2041\303\300\302\304\314!#\210\303\310\315\316#\207" [shen-mode-abbrev-table shen-mode-map variable-documentation put purecopy "Keymap for `shen-mode'." boundp definition-name shen-mode (lambda (#1=#:def-tmp-var) (defvar shen-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `shen-mode'." derived-mode-parent prog-mode] 5) #@221 Major mode for editing Shen code. In addition to any hooks its parent mode `prog-mode' might have run, this mode runs the hook `shen-mode-hook', as the final or penultimate step during initialization. \{shen-mode-map} (defalias 'shen-mode #[nil "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315 !\204'\316 \317 \"\210\320\f\321\"\204;\f =\204;\322\f\321 C#\210\323 !\210\324(!\210\f\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343)B\344BBBBBBBBBBBBBBB\211*\345+\211,\203\214,@+\306+@!+AL\210,A\211,\204t,\346\347!\207" [delay-mode-hooks major-mode mode-name shen-mode-map shen-mode-abbrev-table local-abbrev-table make-local-variable t prog-mode shen-mode "shen" mode-class put keymap-parent set-keymap-parent current-local-map abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table (adaptive-fill-mode) (fill-paragraph-function . lisp-fill-paragraph) (indent-line-function . lisp-indent-line) (lisp-indent-function . shen-indent-function) (parse-sexp-ignore-comments . t) (comment-start . "\\* ") (comment-end . " *\\") (comment-add . 0) (comment-column . 32) (parse-sexp-ignore-comments . t) (comment-use-global-state) (comment-multi-line . t) (eldoc-documentation-function . shen-mode-eldoc) (imenu-case-fold-search . t) imenu-generic-expression ((mode-name . "Shen") (font-lock-defaults shen-font-lock-keywords)) nil run-mode-hooks shen-mode-hook shen-mode-syntax-table shen-imenu-generic-expression local-vars pair --dolist-tail--] 17 (#$ . 21876) nil]) (byte-code "\300\301\302\"\210\303\304!\207" [add-to-list auto-mode-alist ("\\.shen\\'" . shen-mode) provide shen-mode] 3)