994750f7b6dd

Merge.
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Thu, 18 Apr 2019 14:48:52 -0400
parents 9336c053ff7a (current diff) 855cbad5f857 (diff)
children 62f9cb575c0f 7452a4fd1499
branches/tags (none)
files vim/vimrc

Changes

--- a/bin/code-to-pdf	Thu Apr 18 14:46:57 2019 -0400
+++ b/bin/code-to-pdf	Thu Apr 18 14:48:52 2019 -0400
@@ -1,25 +1,27 @@
 #!/usr/bin/env bash
 
+set -euo pipefail
+
 TITLE="$1"
 shift
 
 enscript -1 --media=Letter \
     --toc \
     --header '%H - $N | | page $% of $= in file $v' \
-    --font "Menlo-Regular@8" \
-    --header-font "Menlo-Bold@10" \
     --fancy-header=sjl \
+    --font "UbuntuMono-Regular@10" \
+    --header-font "UbuntuMono-Bold@12" \
     --title "$TITLE" \
     --baselineskip 3 \
     --line-numbers \
     --highlight \
     --color \
     --mark-wrapped-lines=arrow \
-    --margins=20:40:30:30 \
-    --landscape \
-    -p - \
+    --margins=50:50:18:50 \
+    --portrait \
+    --output - \
     --word-wrap $* \
-    | pstopdf -i -o code.pdf
+    | ps2pdf - code.pdf
 
-    # --margins=60:60:18:60 \
-    # --portrait \
+    # --margins=20:40:30:30 \
+    # --landscape \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/makerlisp	Thu Apr 18 14:48:52 2019 -0400
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+cd ~/src/makerlisp/src/uSDimage
+rlwrap-lisp \
+    --only-cook '^> ' \
+    ../lisp/linux/lisp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/makerlisp-raw	Thu Apr 18 14:48:52 2019 -0400
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+cd ~/src/makerlisp/src/uSDimage
+../lisp/linux/lisp "$@"
--- a/bin/rlwrap-lisp	Thu Apr 18 14:46:57 2019 -0400
+++ b/bin/rlwrap-lisp	Thu Apr 18 14:48:52 2019 -0400
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-rlwrap -m$ \
+rlwrap -m$$$$ \
        --multi-line-ext .lisp \
        -a___ \
        --only-cook '^\[[a-zA-Z ]+\] [-a-zA-Z0-9._/]+>' \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/enscript/clisp.st	Thu Apr 18 14:48:52 2019 -0400
@@ -0,0 +1,31 @@
+/**
+ * Name: clisp
+ * Description: Common Lisp.
+ */
+
+state clisp extends HighlightEntry
+{
+  /* Comments. */
+  /(;.*)(\n)/ {
+    comment_face (true);
+    language_print ($1);
+    comment_face (false);
+    language_print ($2);
+  }
+
+  /* String constants. */
+  /\"/ {
+    string_face (true);
+    language_print ($0);
+    call (c_string);
+    string_face (false);
+  }
+
+}
+
+
+/*
+Local variables:
+mode: c
+End:
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/enscript/sjl.hdr	Thu Apr 18 14:48:52 2019 -0400
@@ -0,0 +1,49 @@
+% 
+% Default simple header.
+% Copyright (c) 1995 Markku Rossi.
+% Author: Markku Rossi <mtr@iki.fi>
+%
+
+%
+% This file is part of GNU Enscript.
+% 
+% Enscript is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% Enscript is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with Enscript.  If not, see <http://www.gnu.org/licenses/>.
+%
+
+% -- code follows this line --
+%Format: fmodstr	$D{%a %b %d %H:%M:%S %Y}
+%Format: pagenumstr	$V$%
+%HeaderHeight: 36
+
+/do_header {	% print default simple header
+  gsave
+    d_header_x d_header_y HFpt_h 3 div add translate
+
+    HF setfont
+    user_header_p {
+      5 0 moveto user_header_left_str show
+
+      d_header_w user_header_center_str stringwidth pop sub 2 div
+      0 moveto user_header_center_str show
+
+      d_header_w user_header_right_str stringwidth pop sub 5 sub
+      0 moveto user_header_right_str show
+    } {
+      5 0 moveto fname show
+      45 0 rmoveto fmodstr show
+      45 0 rmoveto pagenumstr show
+    } ifelse
+
+  grestore
+} def
--- a/eqclient.ini	Thu Apr 18 14:46:57 2019 -0400
+++ b/eqclient.ini	Thu Apr 18 14:48:52 2019 -0400
@@ -392,8 +392,8 @@
 User_86_Blue=155
 [Options]
 IgnoreFile1=1
-Camera1-Distance=200.000000
-Camera1-DirHeading=233.153778
+Camera1-Distance=30.000000
+Camera1-DirHeading=192.000000
 Camera1-Heading=0.000000
 Camera1-Pitch=0.000000
 Camera1-Height=5.000000
--- a/lisp/clhs.lisp	Thu Apr 18 14:46:57 2019 -0400
+++ b/lisp/clhs.lisp	Thu Apr 18 14:48:52 2019 -0400
@@ -118,49 +118,64 @@
     ("Look up MAKE-ARRAY in a local copy of the HyperSpec and open it in lynx:" .
      "clhs --url file:///home/sjl/doc/hyperspec/ --open lynx make-array")))
 
-(adopt:define-interface *ui*
-    (:name "clhs"
-     :usage "[OPTIONS] SYMBOL"
-     :summary "Look up a symbol in the Common Lisp HyperSpec."
-     :documentation *documentation*
-     :examples *examples*)
-  ((help)
-   :documentation "display help and exit"
-   :manual "Display help and exit."
-   :long "help"
-   :short #\h
-   :reduce (constantly t))
-  ((rebuild-cache)
-   :documentation "rebuild the symbol cache"
-   :manual "Rebuild the symbol cache, even if it already exists, instead of looking up a symbol."
-   :long "rebuild-cache"
-   :reduce (constantly t))
-  ((open)
-   :documentation (format nil "program to use to open hyperspec URLs (default ~A)" *default-open-command*)
-   :manual (format nil "The program to use to open hyperspec URLs.  The default is: ~A" *default-open-command*)
-   :long "open"
-   :short #\o
-   :parameter "COMMAND"
-   :initial-value *default-open-command*
-   :reduce #'adopt:newest)
-  ((url)
-   :documentation (format nil "base HyperSpec URL (default ~A)" *default-hyperspec-url*)
-   :manual (format nil
-                   "The base HyperSpec URL.  The default is: ~A~@
-                   ~@
-                   A local copy of the HyperSpec can be used with a file:// prefix."
-                   *default-hyperspec-url*)
-   :long "url"
-   :short #\u
-   :parameter "URL"
-   :initial-value *default-hyperspec-url*
-   :reduce #'adopt:newest))
+
+(defparameter *o-help*
+  (adopt:make-option 'help
+    :help "display help and exit"
+    :manual "Display help and exit."
+    :long "help"
+    :short #\h
+    :reduce (constantly t)))
+
+(defparameter *o-rebuild-cache*
+  (adopt:make-option 'rebuild-cache
+    :help "rebuild the symbol cache"
+    :manual "Rebuild the symbol cache, even if it already exists, instead of looking up a symbol."
+    :long "rebuild-cache"
+    :reduce (constantly t)))
+
+(defparameter *o-open*
+  (adopt:make-option 'open
+    :help (format nil "program to use to open hyperspec URLs (default ~A)" *default-open-command*)
+    :manual (format nil "The program to use to open hyperspec URLs.  The default is: ~A" *default-open-command*)
+    :long "open"
+    :short #\o
+    :parameter "COMMAND"
+    :initial-value *default-open-command*
+    :reduce #'adopt:newest))
+
+(defparameter *o-url*
+  (adopt:make-option 'url
+    :help (format nil "base HyperSpec URL (default ~A)" *default-hyperspec-url*)
+    :manual (format nil
+                    "The base HyperSpec URL.  The default is: ~A~@
+                     ~@
+                     A local copy of the HyperSpec can be used with a file:// prefix."
+                    *default-hyperspec-url*)
+    :long "url"
+    :short #\u
+    :parameter "URL"
+    :initial-value *default-hyperspec-url*
+    :reduce #'adopt:newest))
+
+
+(defparameter *ui*
+  (adopt:make-interface
+    :name "clhs"
+    :usage "[OPTIONS] SYMBOL"
+    :summary "Look up a symbol in the Common Lisp HyperSpec."
+    :help *documentation*
+    :examples *examples*
+    :contents (list *o-help*
+                    *o-rebuild-cache*
+                    *o-open*
+                    *o-url*)))
 
 (defun toplevel ()
   (handler-case
       (multiple-value-bind (arguments options) (adopt:parse-options *ui*)
         (when (gethash 'help options)
-          (adopt:print-usage-and-exit *ui*))
+          (adopt:print-help-and-exit *ui*))
         (let ((*open* (gethash 'open options))
               (*url* (gethash 'url options))
               (target (first arguments)))
--- a/lisp/example.lisp	Thu Apr 18 14:46:57 2019 -0400
+++ b/lisp/example.lisp	Thu Apr 18 14:48:52 2019 -0400
@@ -17,31 +17,38 @@
 
 
 ;;;; CLI ----------------------------------------------------------------------
-(adopt:define-interface *ui*
-    (:name "example"
-     :usage "[-n NAME]"
-     :summary "Say Hello."
-     :documentation "An example program to show how to make well-behaved CLI tools in Common Lisp."
-     :examples '(("Say hello:" . "example")
-                 ("Say hello to Alice:" . "example --name Alice")))
-  (help
-    :documentation "display help and exit"
+(defparameter *help*
+  (adopt:make-option 'help
+    :help "display help and exit"
     :long "help"
     :short #\h
-    :reduce (constantly t))
-  (name
-    :documentation (format nil "say hello to NAME (default ~A)" *default-name*)
+    :reduce (constantly t)))
+
+(defparameter *name*
+  (adopt:make-option 'name
+    :help (format nil "say hello to NAME (default ~A)" *default-name*)
     :long "name"
     :short #\n
     :parameter "NAME"
     :initial-value *default-name*
     :reduce #'adopt:newest))
 
+(defparameter *ui*
+  (adopt:make-interface
+    :name "example"
+    :usage "[-n NAME]"
+    :summary "Say Hello."
+    :help "An example program to show how to make well-behaved CLI tools in Common Lisp."
+    :examples '(("Say hello:" . "example")
+                ("Say hello to Alice:" . "example --name Alice"))
+    :contents (list *help* *name*)))
+
+
 (defun toplevel ()
   (handler-case
       (multiple-value-bind (arguments options) (adopt:parse-options *ui*)
         (when (gethash 'help options)
-          (adopt:print-usage-and-exit *ui*))
+          (adopt:print-help-and-exit *ui*))
         (unless (null arguments)
           (error "Unrecognized command-line arguments: ~S" arguments))
         (run (gethash 'name options)))
--- a/lisp/genpass.lisp	Thu Apr 18 14:46:57 2019 -0400
+++ b/lisp/genpass.lisp	Thu Apr 18 14:48:52 2019 -0400
@@ -90,9 +90,6 @@
 
 
 ;;;; User Interface -----------------------------------------------------------
-(adopt:define-string *documentation*
-  "Generate a random password.")
-
 (defparameter *examples*
   '(("Generate a random passphrase no longer than 24 characters:"
      . "genpass --length 24")
@@ -101,65 +98,98 @@
     ("Generate a six word passphrase with no spaces:"
      . "genpass --words 6 --smush")))
 
-(adopt:define-interface *ui*
-    (:name "genpass"
-     :usage "[OPTIONS]"
-     :summary "Generate a random password."
-     :documentation *documentation*
-     :examples *examples*)
-  ((help)
-   :documentation "Display help and exit."
-   :long "help"
-   :short #\h
-   :reduce (constantly t))
-  ((length)
-   :documentation "Ensure password is no longer than N characters (default 40)."
-   :long "length"
-   :short #\l
-   :parameter "N"
-   :initial-value 40
-   :reduce #'adopt:newest
-   :key #'parse-integer)
-  ((words)
-   :documentation "If non-zero, generate passphrases of N words instead of opaque strings (default 4)."
-   :long "words"
-   :short #\w
-   :parameter "N"
-   :initial-value 4
-   :reduce #'adopt:newest
-   :key #'parse-integer)
-  ((no-words words)
-   :documentation "Shorthand for --words=0."
-   :long "no-words"
-   :short #\W
-   :reduce (constantly 0))
-  ((smart)
-   :documentation "Smart mode (the default).  Generate as with --words, but add a number on the end to satisfy the red tape on many sites."
-   :long "smart"
-   :short #\s
-   :initial-value t
-   :reduce (constantly t))
-  ((no-smart smart)
-   :documentation "Turn off smart mode."
-   :long "no-smart"
-   :short #\S
-   :reduce (constantly nil))
-  ((smush)
-   :documentation "Don't include spaces in passphrases."
-   :long "smush"
-   :short #\m
-   :reduce (constantly t))
-  ((no-smush smush)
-   :documentation "Include spaces in passphrases (the default)."
-   :long "no-smush"
-   :short #\M
-   :reduce (constantly nil)))
+
+(defparameter *help*
+  (adopt:make-option 'help
+    :help "Display help and exit."
+    :long "help"
+    :short #\h
+    :reduce (constantly t)))
+
+(defparameter *length*
+  (adopt:make-option 'length
+    :help "Ensure password is no longer than N characters (default 40)."
+    :long "length"
+    :short #\l
+    :parameter "N"
+    :initial-value 40
+    :reduce #'adopt:newest
+    :key #'parse-integer))
+
+(defparameter *words*
+  (adopt:make-option 'words
+    :help "If non-zero, generate passphrases of N words instead of opaque strings (default 4)."
+    :long "words"
+    :short #\w
+    :parameter "N"
+    :initial-value 4
+    :reduce #'adopt:newest
+    :key #'parse-integer))
+
+(defparameter *no-words*
+  (adopt:make-option 'no-words
+    :result-key 'words
+    :help "Shorthand for --words=0."
+    :long "no-words"
+    :short #\W
+    :reduce (constantly 0)))
+
+(defparameter *smart*
+  (adopt:make-option 'smart
+    :help "Smart mode (the default).  Generate as with --words, but add a number on the end to satisfy the red tape on many sites."
+    :long "smart"
+    :short #\s
+    :initial-value t
+    :reduce (constantly t)))
+
+(defparameter *no-smart*
+  (adopt:make-option 'no-smart
+    :result-key 'smart
+    :help "Turn off smart mode."
+    :long "no-smart"
+    :short #\S
+    :reduce (constantly nil)))
+
+(defparameter *smush*
+  (adopt:make-option 'smush
+    :help "Don't include spaces in passphrases."
+    :long "smush"
+    :short #\m
+    :reduce (constantly t)))
+
+(defparameter *no-smush*
+  (adopt:make-option 'no-smush :result-key 'smush
+    :help "Include spaces in passphrases (the default)."
+    :long "no-smush"
+    :short #\M
+    :reduce (constantly nil)))
+
+
+(defparameter *password-options*
+  (adopt:make-group 'password-options
+    :title "Password Options"
+    :help "The format of generated passwords can be customized in a number of ways."
+    :options (list *length*
+                   *words* *no-words*
+                   *smart* *no-smart*
+                   *smush* *no-smush*)))
+
+
+(defparameter *ui*
+  (adopt:make-interface
+    :name "genpass"
+    :usage "[OPTIONS]"
+    :summary "Generate a random password."
+    :help "Generate a random password."
+    :examples *examples*
+    :contents (list *help* *password-options*)))
+
 
 (defun toplevel ()
   (handler-case
       (multiple-value-bind (arguments options) (adopt:parse-options *ui*)
         (when (gethash 'help options)
-          (adopt:print-usage-and-exit *ui*))
+          (adopt:print-help-and-exit *ui*))
         (when arguments
           (error "Unrecognized command line arguments: ~S" arguments))
         (run (gethash 'length options)
--- a/lisp/lispindent.lisp	Thu Apr 18 14:46:57 2019 -0400
+++ b/lisp/lispindent.lisp	Thu Apr 18 14:48:52 2019 -0400
@@ -267,26 +267,38 @@
   (indent-lines)
   t)
 
-(adopt:define-interface *ui*
-    (:name "lispindent"
-     :usage ""
-     :summary "Indent Common Lisp code."
-     :documentation (format nil
-                            "Read Common Lisp code from standard input, indent ~
-                            it according to some simple rules and configuration, ~
-                            and write the result to standard output."))
-  ((help)
-   :documentation "display help and exit"
-   :manual "Display help and exit."
-   :long "help"
-   :short #\h
-   :reduce (constantly t)))
+
+(adopt:define-string *doc-help*
+  "Read Common Lisp code from standard input, indent it according to some ~
+   simple rules and configuration, and write the result to standard output.")
+
+(adopt:define-string *doc-manual*
+  "~A~@
+   ~@
+   Configuration is read from ~~/.lispwords and ./.lispwords"
+   *doc-help*)
+
+(defparameter *ui*
+  (adopt:make-interface
+    :name "lispindent"
+    :usage "[OPTIONS]"
+    :summary "Indent Common Lisp code."
+    :help *doc-help*
+    :manual *doc-manual*
+    :contents
+    (list (adopt:make-option 'help
+            :help "display help and exit"
+            :manual "Display help and exit."
+            :long "help"
+            :short #\h
+            :reduce (constantly t)))))
+
 
 (defun toplevel ()
   (handler-case
       (multiple-value-bind (arguments options) (adopt:parse-options *ui*)
         (when (gethash 'help options)
-          (adopt:print-usage-and-exit *ui*))
+          (adopt:print-help-and-exit *ui*))
         (when arguments
           (error "Unrecognized arguments: ~S" arguments))
         (run))
--- a/lisp/search.lisp	Thu Apr 18 14:46:57 2019 -0400
+++ b/lisp/search.lisp	Thu Apr 18 14:48:52 2019 -0400
@@ -46,43 +46,49 @@
   If no FILEs are given, standard input will be searched.  Standard input can ~
   also be searched by specifying - as a filename.")
 
-(adopt:define-interface *ui*
-    (:name "search"
-     :usage "PATTERN [FILE...]"
-     :summary "Print lines that match a regular expression."
-     :documentation *documentation*)
-  (help
-    :documentation "display help and exit"
-    :long "help"
-    :short #\h
-    :reduce (constantly t))
-  (literal
-    :documentation "treat PATTERN as a literal string instead of a regex"
-    :long "literal"
-    :short #\l
-    :reduce (constantly t))
-  ((no-literal literal)
-   :documentation "treat PATTERN as a regex (the default)"
-   :long "no-literal"
-   :short #\L
-   :reduce (constantly nil))
-  (invert
-    :documentation "print non-matching lines"
-    :long "invert"
-    :short #\v
-    :initial-value nil
-    :reduce (constantly t))
-  ((no-invert invert)
-   :documentation "print matching lines (the default)"
-   :long "no-invert"
-   :short #\V
-   :reduce (constantly nil)))
+
+(defparameter *ui*
+  (adopt:make-interface
+    :name "search"
+    :usage "PATTERN [FILE...]"
+    :summary "Print lines that match a regular expression."
+    :help *documentation*
+    :contents
+    (list
+      (adopt:make-option 'help
+        :help "display help and exit"
+        :long "help"
+        :short #\h
+        :reduce (constantly t))
+      (adopt:make-option 'literal
+        :help "treat PATTERN as a literal string instead of a regex"
+        :long "literal"
+        :short #\l
+        :reduce (constantly t))
+      (adopt:make-option 'no-literal
+        :result-key 'literal
+        :help "treat PATTERN as a regex (the default)"
+        :long "no-literal"
+        :short #\L
+        :reduce (constantly nil))
+      (adopt:make-option 'invert
+        :help "print non-matching lines"
+        :long "invert"
+        :short #\v
+        :initial-value nil
+        :reduce (constantly t))
+      (adopt:make-option 'no-invert
+        :result-key 'invert
+        :help "print matching lines (the default)"
+        :long "no-invert"
+        :short #\V
+        :reduce (constantly nil)))))
 
 (defun toplevel ()
   (handler-case
       (multiple-value-bind (arguments options) (adopt:parse-options *ui*)
         (when (gethash 'help options)
-          (adopt:print-usage-and-exit *ui*))
+          (adopt:print-help-and-exit *ui*))
         (when (null arguments)
           (error "PATTERN is required"))
         (destructuring-bind (pattern . paths) arguments
--- a/lispwords	Thu Apr 18 14:46:57 2019 -0400
+++ b/lispwords	Thu Apr 18 14:48:52 2019 -0400
@@ -120,3 +120,6 @@
 
 ; adopt
 (2 define-interface)
+(1 make-option)
+
+
--- a/vim/bundle/neorepl/plugin/neorepl.vim	Thu Apr 18 14:46:57 2019 -0400
+++ b/vim/bundle/neorepl/plugin/neorepl.vim	Thu Apr 18 14:48:52 2019 -0400
@@ -32,6 +32,8 @@
 endfunction " }}}
 
 function! NeoReplSendSelection() " {{{
+    " Make sure you've DESELECTEDthe text before calling this, otherwise it'll
+    " run once per text line because Vim hates me.
     let old_z = @z
     normal! gv"zy
 
--- a/vim/vimrc	Thu Apr 18 14:46:57 2019 -0400
+++ b/vim/vimrc	Thu Apr 18 14:48:52 2019 -0400
@@ -923,10 +923,16 @@
     call HighlightLispRepl()
 endfunction "}}}
 
+function! OpenLispReplMakerlisp() "{{{
+    NeoRepl makerlisp
+endfunction "}}}
+function! OpenLispReplMakerlispRaw() "{{{
+    NeoRepl makerlisp-raw
+endfunction "}}}
+
 function! OpenLispReplSBCL() "{{{
     NeoRepl sbcl-vlime
 endfunction "}}}
-
 function! OpenLispReplSBCLRaw() "{{{
     NeoRepl sbcl-vlime-raw
 endfunction "}}}
@@ -1583,6 +1589,65 @@
 augroup END
 
 " }}}
+" Makerlisp {{{
+
+function! HighlightMakerlispRepl() "{{{
+    setlocal nolist
+
+    " set syntax=lisp
+    syn match replPrompt /\v^\>/
+    syn match replComment /\v^;.*/
+
+    " syn match replResult /\v^#\<[^>]+\>$/
+    hi def link replResult Debug
+    hi def link replComment Comment
+endfunction "}}}
+
+function! SendEntireFile() "{{{
+    let view = winsaveview()
+
+    execute "normal! ggVG\<esc>"
+    call NeoReplSendSelection()
+
+    call winrestview(view)
+endfunction "}}}
+
+function! OpenLispReplMakerlispRaw() "{{{
+    NeoRepl makerlisp-raw
+    call HighlightMakerlispRepl()
+endfunction "}}}
+
+augroup ft_makerlisp " {{{
+    au!
+
+    au BufNewFile,BufRead *.l set filetype=makerlisp
+    au BufNewFile,BufRead *.l setlocal syntax=lisp
+
+    au FileType makerlisp nnoremap <buffer> U :syntax sync fromstart<cr>:redraw!<cr>:call TurnOnLispFolding()<cr>
+    au FileType makerlisp call SetLispWords()
+    au FileType makerlisp call EnableParedit()
+    au FileType makerlisp silent! call TurnOnLispFolding()
+    au FileType makerlisp RainbowParenthesesActivate
+    au FileType makerlisp setlocal iskeyword+=!,?,%,-
+    au FileType makerlisp setlocal lisp
+    au FileType makerlisp setlocal equalprg=lispindent
+
+    " Open REPL
+    au FileType makerlisp nnoremap <buffer> <silent> <localleader>Om :call OpenLispReplMakerlispRaw()<cr>
+
+    " Misc mappings
+    au FileType makerlisp nnoremap <buffer> gi :call IndentToplevelLispForm()<cr>
+    au FileType makerlisp nnoremap <buffer> [] :call DuplicateLispForm()<cr>
+    au FileType makerlisp nnoremap <buffer> <localleader>( :call PareditToggle()<cr>
+
+    au FileType makerlisp nnoremap <buffer> <localleader>e :call SendToplevelLispForm()<cr>
+    au FileType makerlisp nnoremap <buffer> <localleader>f :call SendEntireFile()<cr>
+    au FileType makerlisp nnoremap <buffer> <localleader>c :call NeoReplSendRaw("(cls)")<cr>
+
+    ")
+augroup END " }}}
+
+" }}}
 " Markdown {{{
 
 augroup ft_markdown
@@ -2163,6 +2228,7 @@
     au FileType htmldjango setlocal commentstring={#\ %s\ #}
     au FileType clojurescript setlocal commentstring=;\ %s
     au FileType lisp setlocal commentstring=;;\ %s
+    au FileType makerlisp setlocal commentstring=;;\ %s
     au FileType puppet setlocal commentstring=#\ %s
     au FileType fish setlocal commentstring=#\ %s
     au FileType gnuplot setlocal commentstring=#\ %s
--- a/weechat/plugins.conf	Thu Apr 18 14:46:57 2019 -0400
+++ b/weechat/plugins.conf	Thu Apr 18 14:48:52 2019 -0400
@@ -73,9 +73,6 @@
 python.slack.auto_open_threads = "false"
 python.slack.background_load_all_history = "false"
 python.slack.channel_name_typing_indicator = "true"
-python.slack.color_buflist_muted_channels = "darkgray"
-python.slack.color_reaction_suffix = "darkgray"
-python.slack.color_thread_suffix = "lightcyan"
 python.slack.colorize_private_chats = "false"
 python.slack.debug_level = "3"
 python.slack.debug_mode = "false"
@@ -97,7 +94,6 @@
 python.slack.slack_api_token = "xoxp-3324703083-436133997184-447755985685-90585fad41071ee30fb518ad29831038"
 python.slack.slack_timeout = "20000"
 python.slack.switch_buffer_on_join = "true"
-python.slack.thread_messages_in_channel = "false"
 python.slack.thread_suffix_color = "lightcyan"
 python.slack.unfurl_auto_link_display = "both"
 python.slack.unfurl_ignore_alt_text = "false"
@@ -122,9 +118,6 @@
 python.slack.auto_open_threads = "Automatically open threads when mentioned or inresponse to own messages."
 python.slack.background_load_all_history = "Load history for each channel in the background as soon as it opens, rather than waiting for the user to look at it."
 python.slack.channel_name_typing_indicator = "Change the prefix of a channel from # to > when someone is typing in it. Note that this will (temporarily) affect the sort order if you sort buffers by name rather than by number."
-python.slack.color_buflist_muted_channels = "Color to use for muted channels in the buflist"
-python.slack.color_reaction_suffix = "Color to use for the [:wave:(@user)] suffix on messages that have reactions attached to them."
-python.slack.color_thread_suffix = "Color to use for the [thread: XXX] suffix on messages that have threads attached to them."
 python.slack.colorize_private_chats = "Whether to use nick-colors in DM windows."
 python.slack.debug_level = "Show only this level of debug info (or higher) when debug_mode is on. Lower levels -> more messages."
 python.slack.debug_mode = "Open a dedicated buffer for debug messages and start logging to it. How verbose the logging is depends on log_level."
@@ -145,7 +138,6 @@
 python.slack.slack_api_token = "List of Slack API tokens, one per Slack instance you want to connect to. See the README for details on how to get these."
 python.slack.slack_timeout = "How long (ms) to wait when communicating with Slack."
 python.slack.switch_buffer_on_join = "When /joining a channel, automatically switch to it as well."
-python.slack.thread_messages_in_channel = "When enabled shows thread messages in the parent channel."
 python.slack.thread_suffix_color = "Color to use for the [thread: XXX] suffix on messages that have threads attached to them."
 python.slack.unfurl_auto_link_display = "When displaying ("unfurling") links to channels/users/etc, determine what is displayed when the text matches the url without the protocol. This happens when Slack automatically creates links, e.g. from words separated by dots or email addresses. Set it to "text" to only display the text written by the user, "url" to only display the url or "both" (the default) to display both."
 python.slack.unfurl_ignore_alt_text = "When displaying ("unfurling") links to channels/users/etc, ignore the "alt text" present in the message and instead use the canonical name of the thing being linked to."