Advertisement
Guest User

Untitled

a guest
Oct 31st, 2019
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 29.63 KB | None | 0 0
  1. ;; Common-Lisp, The King. The Don. The Big Cheese.
  2. (defvar common-lisp-built-in-functions
  3.   '("*" "+" "-" "/" "/=" "1+" "1-" "<" "<=" "=" ">" ">=" "abort" "abs" "acons" "acos" "acosh"
  4.     "add-method" "adjoin" "adjust-array" "adjustable-array-p" "allocate-instance"
  5.     "alpha-char-p" "alphanumericp" "and" "append" "apply" "apropos" "apropos-list" "aref"
  6.     "arithmetic-error-operands" "arithmetic-error-operation" "array-dimension"
  7.     "array-dimensions" "array-displacement" "array-element-type"
  8.     "array-has-fill-pointer-p" "array-in-bounds-p" "array-rank"
  9.     "array-row-major-index" "array-total-size" "arrayp" "ash" "asin" "asinh" "assert"
  10.     "assoc" "assoc-if" "assoc-if-not" "atan" "atanh" "atom" "bit" "bit-and" "bit-andc1"
  11.     "bit-andc2" "bit-eqv" "bit-ior" "bit-nand" "bit-nor" "bit-not" "bit-orc1" "bit-orc2"
  12.     "bit-vector-p" "bit-xor" "block" "boole" "both-case-p" "boundp" "break"
  13.     "broadcast-stream-streams" "butlast" "byte" "byte-position" "byte-size" "caaaar"
  14.     "caaadr" "caaar" "caadar" "caaddr" "caadr" "caar" "cadaar" "cadadr" "cadar" "caddar"
  15.     "cadddr" "caddr" "cadr" "call-method" "car" "case" "catch" "ccase" "cdaaar" "cdaadr"
  16.     "cdaar" "cdadar" "cdaddr" "cdadr" "cdar" "cddaar" "cddadr" "cddar" "cdddar" "cddddr"
  17.     "cdddr" "cddr" "cdr" "ceiling" "cell-error-name" "cerror" "change-class" "char"
  18.     "char-code" "char-downcase" "char-equal" "char-greaterp" "char-int" "char-lessp"
  19.     "char-name" "char-not-equal" "char-not-greaterp" "char-not-lessp" "char-upcase"
  20.     "char/=" "char<" "char<=" "char=" "char>" "char>=" "character" "characterp"
  21.     "check-type" "cis" "class-name" "class-of" "clear-input" "clear-output" "close"
  22.     "clrhash" "code-char" "coerce" "compile" "compile-file" "compile-file-pathname"
  23.     "compiled-function-p" "compiler-macro-function" "complement" "complex" "complexp"
  24.     "compute-applicable-methods" "compute-restarts" "concatenate"
  25.     "concatenated-stream-streams" "cond" "conjugate" "cons" "consp" "constantly"
  26.     "constantp" "continue" "copy-alist" "copy-list" "copy-pprint-dispatch"
  27.     "copy-readtable" "copy-seq" "copy-structure" "copy-symbol" "copy-tree" "cos" "cosh"
  28.     "count" "count-if" "count-if-not" "ctypecase" "decf" "declaim" "decode-float"
  29.     "decode-universal-time" "defclass" "defconstant" "defgeneric"
  30.     "define-compiler-macro" "define-condition" "define-method-combination"
  31.     "define-modify-macro" "define-setf-expander" "define-symbol-macro" "defmacro"
  32.     "defmethod" "defpackage" "defparameter" "defsetf" "defstruct" "deftype" "defun"
  33.     "defvar" "delete" "delete-duplicates" "delete-file" "delete-if" "delete-if-not"
  34.     "delete-package" "denominator" "deposit-field" "describe" "describe-object"
  35.     "destructuring-bind" "digit-char" "digit-char-p" "directory" "directory-namestring"
  36.     "disassemble" "do" "do*" "do-all-symbols" "do-external-symbols" "do-symbols"
  37.     "documentation" "dolist" "dotimes" "dpb" "dribble" "ecase" "echo-stream-input-stream"
  38.     "echo-stream-output-stream" "ed" "eighth" "elt" "encode-universal-time" "endp"
  39.     "enough-namestring" "ensure-directories-exist" "ensure-generic-function" "eq" "eql"
  40.     "equal" "equalp" "error" "etypecase" "eval" "eval-when" "evenp" "every" "exp" "export"
  41.     "expt" "fboundp" "fceiling" "fdefinition" "ffloor" "fifth" "file-author"
  42.     "file-error-pathname" "file-length" "file-namestring" "file-position"
  43.     "file-string-length" "file-write-date" "fill" "fill-pointer" "find"
  44.     "find-all-symbols" "find-class" "find-if" "find-if-not" "find-method" "find-package"
  45.     "find-restart" "find-symbol" "finish-output" "first" "flet" "float" "float-digits"
  46.     "float-precision" "float-radix" "float-sign" "floatp" "floor" "fmakunbound"
  47.     "force-output" "format" "formatter" "fourth" "fresh-line" "fround" "ftruncate"
  48.     "funcall" "function" "function-keywords" "function-lambda-expression" "functionp"
  49.     "gcd" "gensym" "gentemp" "get" "get-decoded-time" "get-dispatch-macro-character"
  50.     "get-internal-real-time" "get-internal-run-time" "get-macro-character"
  51.     "get-output-stream-string" "get-properties" "get-setf-expansion"
  52.     "get-universal-time" "getf" "gethash" "go" "graphic-char-p" "handler-bind"
  53.     "handler-case" "hash-table-count" "hash-table-p" "hash-table-rehash-size"
  54.     "hash-table-rehash-threshold" "hash-table-size" "hash-table-test"
  55.     "host-namestring" "identity" "if" "ignore-errors" "imagpart" "import" "in-package"
  56.     "incf" "initialize-instance" "input-stream-p" "inspect" "integer-decode-float"
  57.     "integer-length" "integerp" "interactive-stream-p" "intern" "intersection"
  58.     "invalid-method-error" "invoke-debugger" "invoke-restart"
  59.     "invoke-restart-interactively" "isqrt" "keywordp" "labels" "lambda" "last" "lcm" "ldb"
  60.     "ldb-test" "ldiff" "length" "let" "let*" "lisp-implementation-type"
  61.     "lisp-implementation-version" "list" "list*" "list-all-packages" "list-length"
  62.     "listen" "listp" "load" "load-logical-pathname-translations" "load-time-value"
  63.     "locally" "log" "logand" "logandc1" "logandc2" "logbitp" "logcount" "logeqv"
  64.     "logical-pathname" "logical-pathname-translations" "logior" "lognand" "lognor"
  65.     "lognot" "logorc1" "logorc2" "logtest" "logxor" "long-site-name" "loop" "loop-finish"
  66.     "lower-case-p" "machine-instance" "machine-type" "machine-version" "macro-function"
  67.     "macroexpand" "macroexpand-1" "macrolet" "make-array" "make-broadcast-stream"
  68.     "make-concatenated-stream" "make-condition" "make-dispatch-macro-character"
  69.     "make-echo-stream" "make-hash-table" "make-instance" "make-instances-obsolete"
  70.     "make-list" "make-load-form" "make-load-form-saving-slots" "make-package"
  71.     "make-pathname" "make-random-state" "make-sequence" "make-string"
  72.     "make-string-input-stream" "make-string-output-stream" "make-symbol"
  73.     "make-synonym-stream" "make-two-way-stream" "makunbound" "map" "map-into" "mapc"
  74.     "mapcan" "mapcar" "mapcon" "maphash" "mapl" "maplist" "mask-field" "max" "member"
  75.     "member-if" "member-if-not" "merge" "merge-pathnames" "method-combination-error"
  76.     "method-qualifiers" "min" "minusp" "mismatch" "mod" "muffle-warning"
  77.     "multiple-value-bind" "multiple-value-call" "multiple-value-list"
  78.     "multiple-value-prog1" "multiple-value-setq" "name-char" "namestring" "nbutlast"
  79.     "nconc" "nintersection" "ninth" "no-applicable-method" "no-next-method" "not"
  80.     "notany" "notevery" "nreconc" "nreverse" "nset-difference" "nset-exclusive-or"
  81.     "nstring-capitalize" "nstring-downcase" "nstring-upcase" "nsublis" "nsubst"
  82.     "nsubst-if" "nsubst-if-not" "nsubstitute" "nsubstitute-if" "nsubstitute-if-not"
  83.     "nth" "nth-value" "nthcdr" "null" "numberp" "numerator" "nunion" "oddp" "open"
  84.     "open-stream-p" "or" "output-stream-p" "package-error-package" "package-name"
  85.     "package-nicknames" "package-shadowing-symbols" "package-use-list"
  86.     "package-used-by-list" "packagep" "pairlis" "parse-integer" "parse-namestring"
  87.     "pathname" "pathname-device" "pathname-directory" "pathname-host"
  88.     "pathname-match-p" "pathname-name" "pathname-type" "pathname-version" "pathnamep"
  89.     "peek-char" "phase" "plusp" "pop" "position" "position-if" "position-if-not" "pprint"
  90.     "pprint-dispatch" "pprint-exit-if-list-exhausted" "pprint-fill" "pprint-indent"
  91.     "pprint-linear" "pprint-logical-block" "pprint-newline" "pprint-pop" "pprint-tab"
  92.     "pprint-tabular" "prin1" "prin1-to-string" "princ" "princ-to-string" "print"
  93.     "print-not-readable-object" "print-object" "print-unreadable-object" "probe-file"
  94.     "proclaim" "prog" "prog*" "prog1" "prog2" "progn" "progv" "provide" "psetf" "psetq"
  95.     "push" "pushnew" "quote" "random" "random-state-p" "rassoc" "rassoc-if"
  96.     "rassoc-if-not" "rational" "rationalize" "rationalp" "read" "read-byte" "read-char"
  97.     "read-char-no-hang" "read-delimited-list" "read-from-string" "read-line"
  98.     "read-preserving-whitespace" "read-sequence" "readtable-case" "readtablep" "realp"
  99.     "realpart" "reduce" "reinitialize-instance" "rem" "remf" "remhash" "remove"
  100.     "remove-duplicates" "remove-if" "remove-if-not" "remove-method" "remprop"
  101.     "rename-file" "rename-package" "replace" "require" "rest" "restart-bind"
  102.     "restart-case" "restart-name" "return" "return-from" "revappend" "reverse" "room"
  103.     "rotatef" "round" "row-major-aref" "rplaca" "rplacd" "sbit" "scale-float" "schar"
  104.     "search" "second" "set" "set-difference" "set-dispatch-macro-character"
  105.     "set-exclusive-or" "set-macro-character" "set-pprint-dispatch"
  106.     "set-syntax-from-char" "setf" "setq" "seventh" "shadow" "shadowing-import"
  107.     "shared-initialize" "shiftf" "short-site-name" "signal" "signum"
  108.     "simple-bit-vector-p" "simple-condition-format-arguments"
  109.     "simple-condition-format-control" "simple-string-p" "simple-vector-p" "sin" "sinh"
  110.     "sixth" "sleep" "slot-boundp" "slot-exists-p" "slot-makunbound" "slot-missing"
  111.     "slot-unbound" "slot-value" "software-type" "software-version" "some" "sort"
  112.     "special-operator-p" "sqrt" "stable-sort" "standard-char-p" "step" "store-value"
  113.     "stream-element-type" "stream-error-stream" "stream-external-format" "streamp"
  114.     "string" "string-capitalize" "string-downcase" "string-equal" "string-greaterp"
  115.     "string-left-trim" "string-lessp" "string-not-equal" "string-not-greaterp"
  116.     "string-not-lessp" "string-right-trim" "string-trim" "string-upcase" "string/="
  117.     "string<" "string<=" "string=" "string>" "string>=" "stringp" "sublis" "subseq"
  118.     "subsetp" "subst" "subst-if" "subst-if-not" "substitute" "substitute-if"
  119.     "substitute-if-not" "subtypep" "svref" "sxhash" "symbol-function" "symbol-macrolet"
  120.     "symbol-name" "symbol-package" "symbol-plist" "symbol-value" "symbolp"
  121.     "synonym-stream-symbol" "tagbody" "tailp" "tan" "tanh" "tenth" "terpri" "the" "third"
  122.     "throw" "time" "trace" "translate-logical-pathname" "translate-pathname"
  123.     "tree-equal" "truename" "truncate" "two-way-stream-input-stream"
  124.     "two-way-stream-output-stream" "type-error-datum" "type-error-expected-type"
  125.     "type-of" "typecase" "typep" "unbound-slot-instance" "unexport" "unintern" "union"
  126.     "unless" "unread-char" "untrace" "unuse-package" "unwind-protect"
  127.     "update-instance-for-different-class" "update-instance-for-redefined-class"
  128.     "upgraded-array-element-type" "upgraded-complex-part-type" "upper-case-p"
  129.     "use-package" "use-value" "user-homedir-pathname" "values" "values-list" "vector"
  130.     "vector-pop" "vector-push" "vector-push-extend" "vectorp" "warn" "when"
  131.     "wild-pathname-p" "with-accessors" "with-compilation-unit"
  132.     "with-condition-restarts" "with-hash-table-iterator" "with-input-from-string"
  133.     "with-open-file" "with-open-stream" "with-output-to-string"
  134.     "with-package-iterator" "with-simple-restart" "with-slots"
  135.     "with-standard-io-syntax" "write" "write-byte" "write-char" "write-line"
  136.     "write-sequence" "write-string" "write-to-string" "y-or-n-p" "yes-or-no-p" "zerop")
  137.  
  138.   "A set of extra functions to add to the function face.")
  139.  
  140. (defvar common-lisp-built-in-types
  141.   '("arithmetic-error" "array" "array-rank" "array-total-size" "atom" "base-char"
  142.     "base-string" "bignum"  "bit" "bit-vector" "boolean" "broadcast-stream"
  143.     "built-in-class" "cell-error" "char-code" "character" "class" "compiled-function" "complex" "concatenated-stream"
  144.     "condition" "cons" "control-error" "division-by-zero" "double-float" "echo-stream"
  145.     "end-of-file" "error" "extended-char" "file-error" "file-stream" "fixnum" "float" "float-digits"
  146.     "float-radix" "floating-point-inexact" "floating-point-invalid-operation"
  147.     "floating-point-overflow" "floating-point-underflow" "function" "generic-function"
  148.     "hash-table" "integer" "keyword" "list" "logical-pathname" "long-float" "method" "method-combination" "null"
  149.     "number" "package" "package-error" "parse-error" "pathname" "print-not-readable"
  150.     "program-error" "random-state" "ratio" "rational" "reader-error" "readtable" "real"
  151.     "restart" "sequence" "serious-condition" "short-float" "signed-byte" "simple-array" "simple-base-string"
  152.     "simple-bit-vector" "simple-condition" "simple-error" "simple-string"
  153.     "simple-type-error" "simple-vector" "simple-warning" "single-float" "standard-char"
  154.     "standard-class" "standard-generic-function" "standard-method" "standard-object"
  155.     "storage-condition" "stream" "stream-error" "string" "string-stream"
  156.     "structure-class" "structure-object" "style-warning" "symbol" "synonym-stream" "t"
  157.     "two-way-stream" "type-error" "unbound-slot" "unbound-variable"
  158.     "undefined-function" "vector" "warning")
  159.  
  160.   "A set of extra types to add to the type face.")
  161.  
  162. (defvar common-lisp-built-in-variables
  163.   '("**" "***" "*break-on-signals*" "*compile-file-pathname*"
  164.     "*compile-file-truename*" "*compile-print*" "*compile-verbose*" "*debug-io*"
  165.     "*debugger-hook*" "*default-pathname-defaults*" "*error-output*" "*features*"
  166.     "*gensym-counter*" "*load-pathname*" "*load-print*" "*load-truename*"
  167.     "*load-verbose*" "*macroexpand-hook*" "*modules*" "*package*" "*print-array*"
  168.     "*print-base*" "*print-case*" "*print-circle*" "*print-escape*" "*print-gensym*"
  169.     "*print-length*" "*print-level*" "*print-lines*" "*print-miser-width*"
  170.     "*print-pprint-dispatch*" "*print-pretty*" "*print-radix*" "*print-readably*"
  171.     "*print-right-margin*" "*query-io*" "*random-state*" "*read-base*"
  172.     "*read-default-float-format*" "*read-eval*" "*read-suppress*" "*readtable*"
  173.     "*standard-input*" "*standard-output*" "*terminal-io*" "*trace-output*" "++"
  174.     "+++" "//" "///" "array-dimension-limit" "array-rank-limit"
  175.     "array-total-size-limit" "boole-1" "boole-2" "boole-and" "boole-andc1" "boole-andc2"
  176.     "boole-c1" "boole-c2" "boole-clr" "boole-eqv" "boole-ior" "boole-nand" "boole-nor"
  177.     "boole-orc1" "boole-orc2" "boole-set" "boole-xor" "call-arguments-limit"
  178.     "char-code-limit" "double-float-epsilon" "double-float-negative-epsilon"
  179.     "internal-time-units-per-second" "lambda-list-keywords" "lambda-parameters-limit"
  180.     "least-negative-double-float" "least-negative-long-float"
  181.     "least-negative-normalized-double-float" "least-negative-normalized-long-float"
  182.     "least-negative-normalized-short-float" "least-negative-normalized-single-float"
  183.     "least-negative-short-float" "least-negative-single-float"
  184.     "least-positive-double-float" "least-positive-long-float"
  185.     "least-positive-normalized-double-float" "least-positive-normalized-long-float"
  186.     "least-positive-normalized-short-float" "least-positive-normalized-single-float"
  187.     "least-positive-short-float" "least-positive-single-float" "long-float-epsilon"
  188.     "long-(forward-line  )oat-negative-epsilon" "most-negative-double-float" "most-negative-fixnum"
  189.     "most-negative-long-(forward-line  )oat" "most-negative-short-float"
  190.     "most-negative-single-float" "most-positive-double-float" "most-positive-fixnum"
  191.     "most-positive-long-float" "most-positive-short-float"
  192.     "most-positive-single-float" "multiple-values-limit" "nil" "pi"
  193.     "short-float-epsilon" "short-float-negative-epsilon" "single-float-epsilon"
  194.     "single-float-negative-epsilon" "t")
  195.  
  196.    "A set of extra variables to add to the symbol face.")
  197.  
  198. (defvar common-lisp-cffi-functions
  199.   '("callback" "close-foreign-library" "convert-from-foreign"
  200.     "convert-into-foreign-memory" "convert-to-foreign" "defbitfield" "defcallback"
  201.     "defcenum" "defcfun" "defcstruct" "defctype" "defcunion" "defcvar"
  202.     "define-c-struct-wrapper" "define-foreign-library" "define-foreign-type"
  203.     "define-parse-method" "define-translation-method" "expand-from-foreign"
  204.     "expand-into-foreign-memory" "expand-to-foreign" "expand-to-foreign-dyn"
  205.     "foreign-alloc" "foreign-aref" "foreign-array-alloc" "foreign-array-free"
  206.     "foreign-array-to-lisp" "foreign-bitfield-symbol-list" "foreign-bitfield-symbols"
  207.     "foreign-bitfield-value" "foreign-enum-keyword" "foreign-enum-keyword-list"
  208.     "foreign-enum-value" "foreign-free" "foreign-funcall" "foreign-funcall-pointer"
  209.     "foreign-funcall-pointer-varargs" "foreign-funcall-varargs"
  210.     "foreign-library-loaded-p" "foreign-library-name" "foreign-library-pathname"
  211.     "foreign-library-type" "foreign-slot-count" "foreign-slot-names"
  212.     "foreign-slot-offset" "foreign-slot-pointer" "foreign-slot-type"
  213.     "foreign-slot-value" "foreign-string-alloc" "foreign-string-free"
  214.     "foreign-string-to-lisp" "foreign-symbol-pointer" "foreign-type-alignment"
  215.     "foreign-type-size" "free-converted-object" "free-translated-object"
  216.     "get-callback" "get-var-pointer" "inc-pointer" "incf-pointer"
  217.     "lisp-array-to-foreign" "lisp-string-to-foreign" "list-foreign-libraries"
  218.     "load-foreign-library" "make-pointer" "make-shareable-byte-vector" "mem-aptr"
  219.     "mem-aref" "mem-ref" "null-pointer" "null-pointer-p" "pointer-address" "pointer-eq"
  220.     "pointerp" "reload-foreign-libraries" "translate-camelcase-name"
  221.     "translate-from-foreign" "translate-into-foreign-memory"
  222.     "translate-name-from-foreign" "translate-name-to-foreign" "translate-to-foreign"
  223.     "translate-underscore-separated-name" "translation-forms-for-class"
  224.     "use-foreign-library" "with-foreign-array" "with-foreign-object"
  225.     "with-foreign-objects" "with-foreign-pointer" "with-foreign-pointer-as-string"
  226.     "with-foreign-slots" "with-foreign-string" "with-foreign-strings"
  227.     "with-pointer-to-vector-data")
  228.  
  229.   "A set of extra functions from Lisp's CFFI to add to the function face.")
  230.  
  231. (defvar common-lisp-cffi-variables
  232.   '("*built-in-float-types*" "*built-in-foreign-types*" "*built-in-integer-types*"
  233.     "*darwin-framework-directories*" "*default-foreign-encoding*"
  234.     "*foreign-library-directories*" "*other-builtin-types*")
  235.  
  236.   "A set of extra variables from Lisp's CFFI to add to the symbol face.")
  237.  
  238. (defvar common-lisp-alexandria-functions
  239.  '("alist-hash-table" "alist-plist" "appendf" "assoc-value" "binomial-coefficient"
  240.    "circular-list" "circular-list-p" "circular-tree-p" "clamp" "coercef" "compose"
  241.    "conjoin" "copy-array" "copy-file" "copy-hash-table" "copy-sequence" "copy-stream"
  242.    "count-permutations" "cswitch" "curry" "define-constant" "delete-from-plist"
  243.    "delete-from-plistf" "deletef" "destructuring-case" "destructuring-ccase"
  244.    "destructuring-ecase" "disjoin" "doplist" "emptyp" "ends-with" "ends-with-subseq"
  245.    "ensure-car" "ensure-cons" "ensure-function" "ensure-functionf" "ensure-gethash"
  246.    "ensure-list" "ensure-symbol" "eswitch" "extremum" "factorial" "featurep" "first-elt"
  247.    "flatten" "format-symbol" "gaussian-random" "hash-table-alist" "hash-table-keys"
  248.    "hash-table-plist" "hash-table-values" "if-let" "ignore-some-conditions" "iota"
  249.    "last-elt" "lastcar" "length=" "lerp" "make-circular-list" "make-gensym"
  250.    "make-gensym-list" "make-keyword" "map-combinations" "map-derangements" "map-iota"
  251.    "map-permutations" "map-product" "maphash-keys" "maphash-values" "mappend" "maxf"
  252.    "mean" "median" "minf" "multiple-value-compose" "multiple-value-prog2"
  253.    "named-lambda" "nconcf" "negative-double-float-p" "negative-fixnum-p"
  254.    "negative-float-p" "negative-integer-p" "negative-long-float-p"
  255.    "negative-rational-p" "negative-real-p" "negative-short-float-p"
  256.    "negative-single-float-p" "non-negative-double-float-p" "non-negative-fixnum-p"
  257.    "non-negative-float-p" "non-negative-integer-p" "non-negative-long-float-p"
  258.    "non-negative-rational-p" "non-negative-real-p" "non-negative-short-float-p"
  259.    "non-negative-single-float-p" "non-positive-double-float-p"
  260.    "non-positive-fixnum-p" "non-positive-float-p" "non-positive-integer-p"
  261.    "non-positive-long-float-p" "non-positive-rational-p" "non-positive-real-p"
  262.    "non-positive-short-float-p" "non-positive-single-float-p" "nreversef"
  263.    "nth-value-or" "nunionf" "of-type" "once-only" "parse-body"
  264.    "parse-ordinary-lambda-list" "plist-alist" "plist-hash-table"
  265.    "positive-double-float-p" "positive-fixnum-p" "positive-float-p"
  266.    "positive-integer-p" "positive-long-float-p" "positive-rational-p"
  267.    "positive-real-p" "positive-short-float-p" "positive-single-float-p"
  268.    "proper-list-length" "proper-list-p" "random-elt" "rassoc-value" "rcurry"
  269.    "read-file-into-byte-vector" "read-file-into-string"
  270.    "read-stream-content-into-byte-vector" "read-stream-content-into-string"
  271.    "remove-from-plist" "remove-from-plistf" "removef" "required-argument" "reversef"
  272.    "rotate" "sequence-of-length-p" "set-equal" "setp" "shuffle" "simple-parse-error"
  273.    "simple-program-error" "simple-reader-error" "simple-style-warning"
  274.    "standard-deviation" "starts-with" "starts-with-subseq" "subfactorial" "switch"
  275.    "symbolicate" "type=" "unionf" "unwind-protect-case" "variance" "when-let"
  276.    "when-let*" "whichever" "with-gensyms" "with-input-from-file" "with-output-to-file"
  277.    "with-unique-names" "write-byte-vector-into-file" "write-string-into-file" "xor")
  278.  
  279.  "Functions from the Common-Lisp package Alexandira.")
  280.  
  281. (defvar common-lisp-serapeum-functions
  282.   '("->" "@" "add-hook" "and-let*" "append1" "array-index-row-major" "ascii-char-p"
  283.     "assocadr" "assocdr" "assort" "assure" "assuref" "batches" "bcond" "bestn" "bits"
  284.     "blankp" "block-compile" "bound-value" "box" "callf" "callf2" "capped-fork"
  285.     "capped-fork2" "car-safe" "case-failure" "case-let" "case-of" "case-using" "ccase-of"
  286.     "cdr-safe" "char-case" "char-ecase" "chomp" "class-name-of" "class-name-safe"
  287.     "clear-queue" "collapse-whitespace" "collecting" "comment" "concat" "cond-every"
  288.     "cond-let" "ctypecase-of" "date-leap-year-p" "deconstruct" "def" "defalias"
  289.     "defcondition" "defconst" "defconstructor" "define-case-macro" "define-do-macro"
  290.     "define-post-modify-macro" "define-train" "define-values" "defloop" "defmethods"
  291.     "defplace" "defstruct-read-only" "defsubst" "defunion" "defunit" "defvar-unbound"
  292.     "delete-from-hash-table" "delq" "deltas" "deq" "destructuring-case-of"
  293.     "destructuring-ccase-of" "destructuring-ecase-of" "dict" "dict*" "dictq"
  294.     "dispatch-case" "dispatch-case-let" "distinct" "do-each" "do-hash-table" "do-splits"
  295.     "drop" "drop-while" "dsu-sort" "dsu-sort-new" "dynamic-closure" "ecase-let"
  296.     "ecase-of" "econd" "econd-let" "efface" "eif" "eif-let" "ellipsize" "enq" "ensure"
  297.     "ensure-vector" "ensure2" "eq*" "eql*" "equal*" "equalp*" "escape" "etypecase-of"
  298.     "eval-always" "eval-and-compile" "eval-if-constant" "example" "expand-macro"
  299.     "expand-macro-recursively" "extrema" "fbind" "fbind*" "fbindrec" "fbindrec*" "fdec"
  300.     "file-size" "file=" "filter" "filter-map" "filterf" "finc" "find-class-safe"
  301.     "find-external-symbol" "find-keyword" "firstn" "fixnump" "flip" "flip-hash-table"
  302.     "float-precision-contagion" "fmt" "fnil" "fork" "fork2" "frequencies" "front" "gcp"
  303.     "gcs" "get-unix-time" "grow" "growf" "halves" "hash-fold" "hash-table-function"
  304.     "hash-table-predicate" "hash-table-set" "heap-extract" "heap-extract-all"
  305.     "heap-extract-maximum" "heap-insert" "heap-maximum" "hook" "hook2" "href"
  306.     "href-default" "ignoring" "in" "inconsistent-graph-constraints" "intersperse"
  307.     "interval" "invalid-number-reason" "invalid-number-value" "juxt" "keep" "leaf-map"
  308.     "leaf-walk" "length<" "length<=" "length>" "length>=" "letrec" "letrec*" "lines"
  309.     "local" "local*" "longer" "longest" "lret" "lret*" "make" "make-hash-table-function"
  310.     "make-heap" "make-octet-vector" "map-tree" "mapcar-into" "mapconcat"
  311.     "maphash-return" "mapply" "match-of" "maybe-invoke-restart" "memq" "merge-tables"
  312.     "monitor" "mvfold" "mvfoldr" "mvlet" "mvlet*" "nand" "nest" "nix" "nlet" "no" "nor"
  313.     "nstring-invert-case" "nstring-upcase-initials" "nsubseq" "nth-arg" "nth-best"
  314.     "nth-best!" "nthrest" "nub" "occurs" "occurs-if" "octet-vector-p" "octet-vector="
  315.     "octets" "of-length" "once" "only-elt" "op" "opf" "ordering" "package-exports"
  316.     "package-name-keyword" "package-names" "pad-end" "pad-start" "pairhash"
  317.     "parse-float" "parse-leading-keywords" "parse-number" "parse-positive-real-number"
  318.     "parse-real-number" "partial" "partition" "partition-declarations" "partitions"
  319.     "path-join" "plist-keys" "plist-values" "pop-assoc" "pophash" "powerset" "prod"
  320.     "proper-subtype-p" "proper-supertype-p" "prune" "prune-if" "qappend" "qconc" "qlen"
  321.     "qlist" "queue" "queue-empty-p" "queuep" "random-in-range" "range" "rassocar" "ravel"
  322.     "read-eval-prefix" "receive" "remove-hook" "repeat-sequence" "reshape" "reshuffle"
  323.     "round-to" "run-hook-with-args" "run-hook-with-args-until-failure"
  324.     "run-hook-with-args-until-success" "run-hooks" "runs" "same-case-p" "scan" "select"
  325.     "selector" "seq=" "sequencep" "set-hash-table" "shape" "shrink" "shrinkf" "single"
  326.     "slice" "sort-new" "sort-values" "split-sequence" "split-sequence-if"
  327.     "split-sequence-if-not" "stable-sort-new" "string$=" "string*=" "string+"
  328.     "string-case" "string-contains-p" "string-count" "string-ecase" "string-gensym"
  329.     "string-invert-case" "string-join" "string-prefix-p" "string-replace"
  330.     "string-replace-all" "string-suffix-p" "string-token-p" "string-upcase-initials"
  331.     "string^=" "string~=" "sum" "summing" "supertypep" "swaphash" "synchronized" "take"
  332.     "take-while" "throttle" "time-since" "time-until" "tokens" "toposort" "trampoline"
  333.     "tree-case" "tree-ecase" "trim-whitespace" "true" "typecase-of" "unbits" "unbox"
  334.     "undisplace-array" "unique-name" "universal-to-unix" "unix-to-universal" "unoctets"
  335.     "unsplice" "vect" "vector=" "vref" "walk-tree" "whitespacep" "with-collector"
  336.     "with-collectors" "with-read-only-vars" "with-standard-input-syntax" "with-string"
  337.     "with-string-dispatch" "with-subtype-dispatch" "with-thunk" "with-type-dispatch"
  338.     "with-vector-dispatch" "word-wrap" "words" "write-file-into-stream"
  339.     "write-stream-into-file" "~>" "~>>")
  340.  
  341.   "A set of extra functions from serapeum to add to the function face.")
  342.  
  343. (use-package sly
  344.   :init
  345.   (defvar inferior-lisp-program "sbcl")
  346.   (setq sly-lisp-implementations
  347.         `((sbcl (,(executable-find "sbcl")))
  348.           (ccl (,(executable-find "ccl")))
  349.           (ecl (,(executable-find "ecl")))
  350.           (abcl (,(executable-find "abcl")))
  351.           (clisp (,(executable-find "clisp")))))
  352.   (setq sly-mrepl-history-file-name (concat dryad-cache-dir "sly-mrepl-history")
  353.         sly-kill-without-query-p t
  354.         sly-net-coding-system 'utf-8-unix
  355.         ;; Change this to `sly-simple-completions' for simple completion
  356.         sly-complete-symbol-function 'sly-flex-completions)
  357.   (sp-with-modes '(sly-mrepl-mode)
  358.     (sp-local-pair "'" "'" :actions nil)
  359.     (sp-local-pair "`" "`" :actions nil))
  360.  
  361.   :config
  362.   (font-lock-add-keywords
  363.    'lisp-mode
  364.    `((,(regexp-opt common-lisp-built-in-functions 'symbols) . font-lock-function-name-face)))
  365.  
  366.   (font-lock-add-keywords
  367.    'lisp-mode
  368.    (mapcar (lambda (name) (cons name 'font-lock-type-face))
  369.            common-lisp-built-in-types))
  370.  
  371.   (font-lock-add-keywords
  372.    'lisp-mode
  373.    (mapcar (lambda (name) (cons name 'font-lock-variable-name-face))
  374.            common-lisp-built-in-variables))
  375.  
  376.   (font-lock-add-keywords
  377.    'lisp-mode
  378.    `((,(regexp-opt common-lisp-cffi-functions 'symbols) . font-lock-function-name-face)))
  379.  
  380.   (font-lock-add-keywords
  381.    'lisp-mode
  382.    (mapcar (lambda (name) (cons name 'font-lock-variable-name-face))
  383.            common-lisp-cffi-variables))
  384.  
  385.   (font-lock-add-keywords
  386.    'lisp-mode
  387.    `((,(regexp-opt common-lisp-alexandria-functions 'symbols) . font-lock-function-name-face)))
  388.  
  389.   (font-lock-add-keywords
  390.    'lisp-mode
  391.    `((,(regexp-opt common-lisp-serapeum-functions 'symbols) . font-lock-function-name-face)))
  392.  
  393.   (load (expand-file-name "~/quicklisp/slime-helper.el"))
  394.  
  395.   (defun common-lisp-cleanup-sly-maybe ()
  396.     "Kill processes and leftover buffers when killing the last sly buffer."
  397.     (unless (cl-loop for buf in (delq (current-buffer) (buffer-list))
  398.                      if (and (buffer-local-value 'sly-mode buf)
  399.                              (get-buffer-window buf))
  400.                      return t)
  401.       (dolist (conn (sly--purge-connections))
  402.         (sly-quit-lisp-internal conn 'sly-quit-sentinel t))
  403.       (let (kill-buffer-hook kill-buffer-query-functions)
  404.         (mapc #'kill-buffer
  405.               (cl-loop for buf in (delq (current-buffer) (buffer-list))
  406.                        if (buffer-local-value 'sly-mode buf)
  407.                        collect buf)))))
  408.  
  409.   (defun common-lisp-init-sly ()
  410.     "Attempt to auto-start sly when opening a lisp buffer."
  411.     (cond ((or (temp-buffer-p (current-buffer))
  412.                (sly-connected-p)))
  413.           ((executable-find inferior-lisp-program)
  414.            (let ((sly-auto-start 'always))
  415.              (sly-auto-start)
  416.              (add-hook 'kill-buffer-hook #'common-lisp-cleanup-sly-maybe nil t)))
  417.           ((message "WARNING: Couldn't find `inferior-lisp-program' (%s)"
  418.                     inferior-lisp-program))))
  419.   (add-hook 'sly-mode-hook #'common-lisp-init-sly)
  420.  
  421.   (defun common-lisp-refresh-sly-version (version conn)
  422.     "Update `sly-protocol-version', which will likely be incorrect or nil due to
  423.    an issue where `load-file-name' is incorrect."
  424.     (unless sly-protocol-version
  425.       (setq sly-protocol-version (sly-version nil (locate-library "sly.el"))))
  426.     (advice-remove #'sly-check-version #'common-lisp-refresh-sly-version))
  427.   (advice-add #'sly-check-version :before #'common-lisp-refresh-sly-version))
  428.  
  429. ;; Note these contrib packages only work with SBCL and CCL, and /maybe/ ABCL
  430. (use-package sly-macrostep
  431.   :after sly
  432.   :config
  433.   (with-eval-after-load 'sly
  434.     (sly-enable-contrib 'sly-macrostep)))
  435.  
  436. ;; Working with ASDF files
  437. (use-package sly-asdf
  438.   :after sly
  439.   :config
  440.   (add-to-list 'sly-contribs 'sly-asdf #'append)
  441.   (with-eval-after-load 'sly
  442.     (sly-enable-contrib 'sly-asdf)))
  443.  
  444. ;; NAMED-READTABLES support for Sly
  445. (use-package sly-named-readtables
  446.   :after sly
  447.   (with-eval-after-load 'sly
  448.     (sly-enable-contrib 'sly-named-readtables)))
  449.  
  450. (use-package sly-repl-ansi-color
  451.   :after sly
  452.   :init
  453.   (add-to-list 'sly-contribs 'sly-repl-ansi-color nil #'eq))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement