cb6425cf31ba

Merge.
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Sun, 25 Aug 2019 14:49:34 -0400
parents 930ee3b48e3c (current diff) f64186f7a65e (diff)
children 9d8af88da734
branches/tags (none)
files weechat/plugins.conf

Changes

--- a/.hgsubstate	Sun Aug 25 14:49:02 2019 -0400
+++ b/.hgsubstate	Sun Aug 25 14:49:34 2019 -0400
@@ -2,7 +2,7 @@
 1fc4a9fbead7e0acc4c828b346f3be2658ec3df9 mercurial/templates
 b6a8b49e2173ba5a1b34d00e68e0ed8addac3ebd vim/bundle/abolish
 a16a9b63eb85cc0960a7f25c54647ac1f99f3360 vim/bundle/ack
-d0bec1e6ea5d4a036cbbb8693a94583b91778ecc vim/bundle/badwolf
+7e97c2baea5edfb8b374677570df085108066590 vim/bundle/badwolf
 24f6d94dd03ba0fdc703265fe281f70cf2b45ba6 vim/bundle/boxdraw
 b542a7bc4d9bc5da8fb12e110fe7975131fb57a4 vim/bundle/clam
 8295187ea1210138c0b171d8e3ec3569936f4c1a vim/bundle/commentary
--- a/bin/go-dep-graph	Sun Aug 25 14:49:02 2019 -0400
+++ b/bin/go-dep-graph	Sun Aug 25 14:49:34 2019 -0400
@@ -7,4 +7,4 @@
     echo '}'
 }
 
-render | dot -o "$1.png" -Tpng
+render | dot -o "dependencies.png" -Tpng
--- a/fish/config.fish	Sun Aug 25 14:49:02 2019 -0400
+++ b/fish/config.fish	Sun Aug 25 14:49:34 2019 -0400
@@ -5,6 +5,7 @@
 function ef; nvim ~/.config/fish/config.fish; end
 function ew; nvim (which $argv[1]); end
 function cw; cat (which $argv[1]); end
+function gw; gist (which $argv[1]); end
 function eff; nvim ~/.config/fish/functions; end
 function eg; nvim ~/.gitconfig; end
 function eh; nvim ~/.hgrc; end
@@ -44,6 +45,7 @@
 complete -c s -w ssh
 complete -c cw -w which
 complete -c ew -w which
+complete -c gw -w which
 
 # }}}
 # Bind Keys {{{
--- a/fish/functions/ep.fish	Sun Aug 25 14:49:02 2019 -0400
+++ b/fish/functions/ep.fish	Sun Aug 25 14:49:34 2019 -0400
@@ -3,6 +3,7 @@
     case alephnull
         cd ~/.plan
         nvim README.markdown
+        make
         git cm 'Update' -a
         git push origin master
         cd -
--- a/gitconfig	Sun Aug 25 14:49:02 2019 -0400
+++ b/gitconfig	Sun Aug 25 14:49:34 2019 -0400
@@ -58,6 +58,9 @@
     delete-remote-branch = "!sh -c 'git push $1 --delete $2' -"
     delete-branch = "!sh -c 'git delete-local-branch $1; git remotes | cut -f1 | sort | uniq | xargs -n1 -I % git delete-local-reference-to-remote-branch % $1' -"
     delete-current-branch = "!bash -c 'git checkout master && git delete-branch $1' - $(git current-branch)"
+    clean-local-branches = "!sh -c 'git branch --merged master | grep -v master$ | xargs git branch -d' -"
+    clean-remote-tracking-branches = "!sh -c 'git branch -r --merged master | grep -v /master$ | xargs git branch -rd' -"
+    clean-branches = "!sh -c 'git checkout master && git fetch origin && git merge --ff-only origin/master && git clean-local-branches && git clean-remote-tracking-branches' -"
 
     current-branch = rev-parse --abbrev-ref HEAD
 
--- a/gitignore	Sun Aug 25 14:49:02 2019 -0400
+++ b/gitignore	Sun Aug 25 14:49:34 2019 -0400
@@ -16,3 +16,5 @@
 *.lx64fsl
 *.dx64fsl
 .sjl-rsync-exclude
+
+*.waiting
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/grcat/conf.curl	Sun Aug 25 14:49:34 2019 -0400
@@ -0,0 +1,22 @@
+# request
+regexp=(^\* .*)
+colours=bright_black
+=======
+# request
+regexp=(^> .*)
+colours=bright_black
+=======
+# response
+regexp=(^< .*)
+colours=blue
+=======
+# ok response code
+regexp=^< HTTP.+ ([23]...*)
+colours=blue, bold green
+=======
+# error response code
+regexp=^< HTTP.+ ([45]...*)
+colours=blue, bold red
+=======
+regexp=.*\[.* bytes data\]
+colours=bright_black
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/grcat/conf.go-test	Sun Aug 25 14:49:34 2019 -0400
@@ -0,0 +1,13 @@
+regexp=(^=== RUN).*
+colours=cyan,bold cyan
+=======
+regexp=(^--- PASS).*
+colours=green,bold green
+=======
+regexp=(^--- FAIL).*
+colours=red,bold red
+=======
+regexp=(^(ok|FAIL|\?)\s.*$)
+colours=bright_black,bright_black
+
+
--- a/grcat/conf.tail-vm	Sun Aug 25 14:49:02 2019 -0400
+++ b/grcat/conf.tail-vm	Sun Aug 25 14:49:34 2019 -0400
@@ -3,7 +3,7 @@
 colours=default,red
 =======
 # warn
-regexp=(WARN )
+regexp=(WARNING )
 colours=default,yellow
 =======
 # info
--- a/lisp/batchcolor.lisp	Sun Aug 25 14:49:02 2019 -0400
+++ b/lisp/batchcolor.lisp	Sun Aug 25 14:49:34 2019 -0400
@@ -1,5 +1,5 @@
 (eval-when (:compile-toplevel :load-toplevel :execute)
-  (ql:quickload '(:adopt :cl-ppcre ) :silent t))
+  (ql:quickload '(:adopt :cl-ppcre) :silent t))
 
 (defpackage :batchcolor
   (:use :cl)
@@ -9,32 +9,40 @@
 
 ;;;; Configuration ------------------------------------------------------------
 (defparameter *version* "0.0.1")
-(defparameter *colors* (make-hash-table :test #'equal))
+
+(defun rgb-code (r g b)
+  ;; The 256 color mode color values are essentially r/g/b in base 6, but
+  ;; shifted 16 higher to account for the intiial 8+8 colors.
+  (+ (* r 36)
+     (* g 6)
+     (* b 1)
+     16))
+
+(defparameter *colors* (let ((result (make-array 256 :fill-pointer 0)))
+                         (dotimes (r 6)
+                           (dotimes (g 6)
+                             (dotimes (b 6)
+                               (unless (< (+ r g b) 3)
+                                 ;; Don't use dark, hard-to-read colors.
+                                 (vector-push-extend (rgb-code r g b) result)))))
+                         result))
 
 
 ;;;; Functionality ------------------------------------------------------------
-(defun rgb-code (color)
-  (destructuring-bind (r g b) color
-    ;; The 256 color mode color values are essentially r/g/b in base 6, but
-    ;; shifted 16 higher to account for the intiial 8+8 colors.
-    (+ (* r 36)
-       (* g 6)
-       (* b 1)
-       16)))
-
-(defun random-color ()
-  (loop :for color = (list (random 6) (random 6) (random 6))
-        :while (<= (apply #'+ color) 3)
-        :finally (return color)))
+(defun djb2 (string)
+  ;; http://www.cse.yorku.ca/~oz/hash.html
+  (reduce (lambda (hash c)
+            (mod (+ (* 33 hash) c) (expt 2 64)))
+          string
+          :initial-value 5381
+          :key #'char-code))
 
 (defun find-color (string)
-  (let ((current (gethash string *colors*)))
-    (if current
-      current
-      (setf (gethash string *colors*) (random-color)))))
+  (aref *colors* (mod (djb2 string)
+                      (length *colors*))))
 
 (defun ansi-color-start (color)
-  (format nil "~C[38;5;~Dm" #\Escape (rgb-code color)))
+  (format nil "~C[38;5;~Dm" #\Escape color))
 
 (defun ansi-color-end ()
   (format nil "~C[0m" #\Escape))
--- a/mutt/muttrc	Sun Aug 25 14:49:02 2019 -0400
+++ b/mutt/muttrc	Sun Aug 25 14:49:34 2019 -0400
@@ -2,6 +2,7 @@
 
 set alias_file       = ~/.mutt/alias         # where to store aliases
 set header_cache     = ~/.mutt/cache/headers # where to store headers
+set header_cache_backend=tokyocabinet
 set message_cachedir = ~/.mutt/cache/bodies  # where to store bodies
 # set certificate_file = ~/.mutt/certificates  # where to store certs
 set mailcap_path     = ~/.mutt/mailcap       # entries for filetypes
@@ -11,7 +12,7 @@
 # Editor {{{
 
 # Use Vim to compose email, with a few default options.
-set editor = "nvim -c 'normal! }' -c 'redraw'"
+set editor = "nvim -c 'set ft=mdmail' -c 'normal! }' -c 'redraw'"
 
 # }}}
 # Contacts {{{
@@ -187,8 +188,6 @@
 
 # Quickly change mailboxes
 macro index c "<change-folder>?<toggle-mailboxes>"     "change folder"
-macro index \' "<change-folder>+sjl/INBOX<enter>"   "go to INBOX"
-macro index \" "<change-folder>+sjl/archive<enter>" "go to archive"
 
 # Search with notmuch
 macro index S "<enter-command>unset wait_key<enter><shell-escape>mutt-notmuch-py -G ~/.mail/search<enter><change-folder-readonly>~/.mail/search<enter>" "search mail (using notmuch)"
@@ -223,6 +222,8 @@
 bind compose p postpone-message
 bind compose P pgp-menu
 
+macro compose H "| pandoc -r markdown -w html -o ~/.mutt/temp/neomutt-alternative.html<enter><attach-file>~/.mutt/temp/neomutt-alternative.html<enter><tag-entry><previous-entry><tag-entry><group-alternatives>"
+
 # }}}
 # Attachment {{{
 
--- a/vim/bundle/neorepl/plugin/neorepl.vim	Sun Aug 25 14:49:02 2019 -0400
+++ b/vim/bundle/neorepl/plugin/neorepl.vim	Sun Aug 25 14:49:34 2019 -0400
@@ -24,20 +24,34 @@
     let g:neorepl_jobid = result
 endfunction " }}}
 
-function! NeoReplSendRaw(payload) " {{{
+
+" Optional arguments:
+"
+" * ignoreBlankLines
+function! NeoReplSendRaw(payload, ...) " {{{
+    let ignoreBlankLines = a:0 >= 1 ? a:1 : 0
+
     for line in (split(a:payload, '\n'))
-        call jobsend(g:neorepl_jobid, line . "\n")
-        sleep 2m " please kill me
+        if !ignoreBlankLines || line != ""
+            call jobsend(g:neorepl_jobid, line . "\n")
+            sleep 2m " please kill me
+        endif
     endfor
 endfunction " }}}
 
-function! NeoReplSendSelection() " {{{
-    " Make sure you've DESELECTEDthe text before calling this, otherwise it'll
-    " run once per text line because Vim hates me.
+" Optional arguments:
+"
+" * ignoreBlankLines
+"
+" Make sure you've DESELECTED the text before calling this, otherwise it'll run
+" once per text line because Vim hates me.
+function! NeoReplSendSelection(...) " {{{
+    let ignoreBlankLines = a:0 >= 1 ? a:1 : 0
+
     let old_z = @z
     normal! gv"zy
 
-    call NeoReplSendRaw(@z . "\n")
+    call NeoReplSendRaw(@z . "\n", ignoreBlankLines)
     let @z = old_z
 endfunction " }}}
 
--- a/vim/custom-dictionary.utf-8.add	Sun Aug 25 14:49:02 2019 -0400
+++ b/vim/custom-dictionary.utf-8.add	Sun Aug 25 14:49:34 2019 -0400
@@ -287,3 +287,4 @@
 upsert
 upserts
 lysed
+Syslog
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vim/syntax/mdmail.vim	Sun Aug 25 14:49:34 2019 -0400
@@ -0,0 +1,23 @@
+if exists("b:current_syntax")
+  finish
+endif
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Start with the mail syntax as a base.
+runtime! syntax/mail.vim
+unlet b:current_syntax
+
+" Headers are up to the first blank line.  Everything after that up to my
+" signature is the body, which we'll highlight as Markdown.
+syn include @markdownBody syntax/markdown.vim
+syn region markdownMailBody start="^$" end="\(^-- $\)\@=" contains=@markdownBody
+
+" The signature starts at the magic line and ends at the end of the file.
+syn region mailSignature start="^-- $" end="\%$"
+hi def link mailSignature Comment
+
+let b:current_syntax = "mdmail"
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
--- a/vim/vimrc	Sun Aug 25 14:49:02 2019 -0400
+++ b/vim/vimrc	Sun Aug 25 14:49:34 2019 -0400
@@ -1013,12 +1013,7 @@
 endfunction "}}}
 
 function! SendLispForm() "{{{
-    let view = winsaveview()
-
-    execute "normal! vab\<esc>"
-    call NeoReplSendSelection()
-
-    call winrestview(view)
+    call SelectAndSendToNeoRepl("vab")
 endfunction "}}}
 
 function! SelectToplevelLispForm() "{{{
@@ -1338,12 +1333,20 @@
 " }}}
 " Fish {{{
 
+function! SendFishParagraph() "{{{
+    call SelectAndSendToNeoRepl("vip", 1)
+endfunction "}}}
+
 augroup ft_fish
     au!
 
     au BufNewFile,BufRead *.fish setlocal filetype=fish
 
     au FileType fish setlocal foldmethod=marker foldmarker={{{,}}}
+    au FileType fish nnoremap <buffer> <localleader>e :call NeoReplSendCurrentLine()<cr>
+    au FileType fish nnoremap <buffer> <localleader>E :call SendFishParagraph()<cr>
+    au FileType fish nnoremap <buffer> <localleader>F :call NeoReplSendEntireFile(1)<cr>
+    au FileType fish nnoremap <buffer> <localleader>c :call NeoReplSendRaw("clear")<cr>
 augroup END
 
 " }}}
@@ -1386,20 +1389,10 @@
 endfunction "}}}
 
 function! SendGNUPlotParagraph() "{{{
-    let view = winsaveview()
-
-    execute "normal! ^vip\<esc>"
-    call NeoReplSendSelection()
-
-    call winrestview(view)
+    call SelectAndSendToNeoRepl("^vip")
 endfunction "}}}
 function! SendGNUPlotBuffer() "{{{
-    let view = winsaveview()
-
-    execute "normal! ggVG"
-    call NeoReplSendSelection()
-
-    call winrestview(view)
+    call SelectAndSendToNeoRepl("ggVG")
 endfunction "}}}
 
 augroup ft_gnuplot
@@ -1430,11 +1423,11 @@
         else
             return '>1'
         endif
-    elseif line =~# '\v^\S.*[{(]$'
+    elseif line =~# '\v^\S.*[{(`]$'
         " Things that open a toplevel block, e.g.:
         "     func foo () {
         return '>1'
-    elseif line =~#'\v^[})]$'
+    elseif line =~#'\v^[})`]$'
         " The close of a toplevel block, e.g.:
         "     }
         " This doesn't close the fold because we want to fold the space after it
@@ -1645,15 +1638,6 @@
     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()
@@ -1683,7 +1667,7 @@
     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>f :call NeoReplSendEntireFile()<cr>
     au FileType makerlisp nnoremap <buffer> <localleader>c :call NeoReplSendRaw("(cls)")<cr>
 
     ")
@@ -1843,14 +1827,7 @@
     "fucking kill me
     NeoRepl fish
 endfunction "}}}
-function! SendPythonLine() "{{{
-    let view = winsaveview()
-
-    execute "normal! ^vg_\<esc>"
-    call NeoReplSendSelection()
-
-    call winrestview(view)
-endfunction "}}}
+
 function! SendPythonParagraph() "{{{
     let view = winsaveview()
 
@@ -1917,7 +1894,7 @@
     au FileType python nnoremap <buffer> <silent> <localleader>o :call OpenPythonRepl()<cr>
 
     " Send the current line to the REPL
-    au FileType python nnoremap <buffer> <silent> <localleader>l :call SendPythonLine()<cr>
+    au FileType python nnoremap <buffer> <silent> <localleader>l :call NeoReplSendCurrentLine()<cr>
 
     " Send the current paragraph to the REPL
     au FileType python nnoremap <buffer> <silent> <localleader>p :call SendPythonParagraph()<cr>
@@ -1987,110 +1964,19 @@
 augroup END
 
 " }}}
-" Scheme {{{
-
-function! OpenSchemeRepl() "{{{
-    NeoRepl scheme
-    set syntax=scheme
-    syn match replPrompt /\v^\*/
-    syn match replPrompt /\v^[-_a-zA-Z]+\>/
-
-    syn match replResult /\v^#\<[^>]+\>$/
-    hi def link replResult Debug
-endfunction "}}}
-function! SendSchemeForm() "{{{
-    let view = winsaveview()
-
-    execute "normal! vab\<esc>"
-    call NeoReplSendSelection()
-
-    call winrestview(view)
+" Sh {{{
+
+function! SendShellParagraph() "{{{
+    call SelectAndSendToNeoRepl("vip", 1)
 endfunction "}}}
-function! SendToplevelSchemeForm() "{{{
-    let view = winsaveview()
-
-    " If we're on the first char of the form, calling PareditFindDefunBck will
-    " move us to the previous form, which we don't want.  So instead we'll just
-    " always move a char to the right.
-    silent! normal! l
-
-    call PareditFindDefunBck()
-    execute "normal! vab\<esc>"
-    call NeoReplSendSelection()
-
-    call winrestview(view)
-endfunction "}}}
-function! SendSchemeBuffer() "{{{
-    call NeoReplSendRaw('(load "'. expand("%:p") . '")' . "\n")
-endfunction "}}}
-function! DescribeSchemeSymbol() "{{{
-    let old_z = @z
-
-    normal! "zyiw
-    call NeoReplSendRaw("(describe '" . @z . ")\n")
-
-    let @z = old_z
-endfunction "}}}
-function! DescribeSchemePrompt() "{{{
-    call NeoReplSendRaw("(describe '" . input("? ") . ")\n")
-endfunction "}}}
-
-augroup ft_scheme
+
+augroup ft_sh
     au!
 
-    " key  desc                   mnemonic
-    " \o - connect neorepl        [o]pen scheme
-    " \f - send current form      [f]orm
-    " \e - send top-level form    [e]val
-    " \r - send entire file       [r]eload file
-    " \c - send ctrl-l            [c]lear
-    " \d - describe symbol        [d]escribe
-    " \D - describe prompt        [d]escribe
-
-    au FileType scheme nnoremap <buffer> <silent> <localleader>o :call OpenSchemeRepl()<cr>
-
-    " Send the current form to the REPL
-    au FileType scheme nnoremap <buffer> <silent> <localleader>f :call SendSchemeForm()<cr>
-
-    " Send the current top-level form to the REPL
-    au FileType scheme nnoremap <buffer> <silent> <localleader>e :call SendToplevelSchemeForm()<cr>
-
-    " Send the entire buffer to the REPL ([r]eload)
-    au FileType scheme nnoremap <buffer> <silent> <localleader>r :call SendSchemeBuffer()<cr>
-
-    " Clear the REPL
-    au FileType scheme nnoremap <buffer> <silent> <localleader>c :call NeoReplSendRaw("")<cr>
-
-    " Describe symbol under the cursor
-    au FileType scheme nnoremap <buffer> <silent> <localleader>d :call DescribeSchemeSymbol()<cr>
-
-    " Describe the last thing we typed
-    au FileType scheme inoremap <buffer> <silent> <c-d> <esc>mzb:call DescribeSchemeSymbol()<cr>`za
-
-    " Describe prompt
-    au FileType scheme nnoremap <buffer> <silent> <localleader>D :call DescribeSchemePrompt()<cr>
-
-    au FileType scheme RainbowParenthesesActivate
-    au syntax scheme RainbowParenthesesLoadRound
-    au syntax scheme RainbowParenthesesLoadSquare
-    au syntax scheme RainbowParenthesesLoadBraces
-
-    au FileType scheme silent! call TurnOnLispFolding()
-
-    au FileType scheme call EnableParedit()
-
-    " Indent top-level form.
-    au FileType scheme nmap <buffer> gi mz:silent normal99[(<cr>v%='z
-    " ])
-
-    " au FileType lisp setlocal equalprg=LISP=sbcl\ lispindent
-
-    " Navigate trees of sexps with arrows
-    au FileType scheme call s:vim_sexp_mappings()
-    au FileType scheme noremap <buffer> <left> :<c-u>call SexpBack()<cr>
-    au FileType scheme noremap <buffer> <right> :<c-u>call SexpForward()<cr>
-    au FileType scheme noremap <buffer> <up> :<c-u>call SexpUp()<cr>
-    au FileType scheme noremap <buffer> <down> :<c-u>call SexpDown()<cr>
+    au FileType sh nnoremap <buffer> <localleader>e :call NeoReplSendCurrentLine()<cr>
+    au FileType sh nnoremap <buffer> <localleader>E :call SendShellParagraph()<cr>
+    au FileType sh nnoremap <buffer> <localleader>F :call NeoReplSendEntireFile(1)<cr>
+    au FileType sh nnoremap <buffer> <localleader>c :call NeoReplSendRaw("clear")<cr>
 augroup END
 
 " }}}
@@ -2104,68 +1990,6 @@
 augroup END " }}}
 
 " }}}
-" Shen {{{
-
-" Helper Functions {{{
-function! HighlightShenRepl() "{{{
-    syn match replPrompt /\v^\(\d+-\)/
-    " syn match replComment /\v^;.*/
-
-    " syn match replResult /\v^#\<[^>]+\>$/
-    hi def link replResult Debug
-    hi def link replComment Comment
-endfunction "}}}
-
-function! OpenShenRepl() "{{{
-    NeoRepl rlwrap ./shen
-    call HighlightShenRepl()
-endfunction "}}}
-
-function! SetShenLispWords() "{{{
-    if exists("b:did_set_lisp_words")
-        return
-    endif
-
-    let b:did_set_lisp_words = 1
-
-    " setlocal lispwords+=block
-endfunction "}}}
-" }}}
-
-augroup ft_shen " {{{
-    au!
-
-    " au FileType shen nnoremap <buffer> U :syntax sync fromstart<cr>:redraw!<cr>:call TurnOnLispFolding()<cr>
-
-    au FileType shen call SetShenLispWords()
-    au FileType shen call EnableParedit()
-    au FileType shen silent! call TurnOnLispFolding()
-
-    " au FileType shen RainbowParenthesesActivate
-    " au syntax shen RainbowParenthesesLoadRound
-
-    " au FileType shen setlocal equalprg=lispindent
-
-    " Handy stuff
-    au FileType shen nnoremap <buffer> [] :call DuplicateLispForm()<cr>
-
-    " [o]pen repl
-    " [s]end to repl
-    " [c]lear repl
-    au FileType shen nnoremap <buffer> <silent> <localleader>o :call OpenShenRepl()<cr>
-    au FileType shen nnoremap <buffer> <silent> <localleader>e :call SendToplevelLispForm()<cr>
-    au FileType shen nnoremap <buffer> <silent> <localleader>c :call NeoReplSendRaw("")<cr>
-    au FileType shen nnoremap <buffer> gi :call IndentToplevelLispForm()<cr>
-
-    " Navigate trees of sexps with arrows
-    au FileType shen call s:vim_sexp_mappings()
-    au FileType shen noremap <buffer> <left>  :<c-u>call SexpBack()<cr>
-    au FileType shen noremap <buffer> <right> :<c-u>call SexpForward()<cr>
-    au FileType shen noremap <buffer> <up>    :<c-u>call SexpUp()<cr>
-    au FileType shen noremap <buffer> <down>  :<c-u>call SexpDown()<cr>
-augroup END " }}}
-
-" }}}
 " Standard In {{{
 
 augroup ft_stdin
@@ -2414,7 +2238,26 @@
 " }}}
 " NeoRepl {{{
 
-nnoremap <leader>S 0v$:call NeoReplSendSelection()<cr>
+function! SelectAndSendToNeoRepl(selectionString, ...) "{{{
+    let ignoreBlankLines = a:0 >= 1 ? a:1 : 0
+
+    let view = winsaveview()
+
+    execute "normal! " . a:selectionString . "\<esc>"
+    call NeoReplSendSelection(ignoreBlankLines)
+
+    call winrestview(view)
+endfunction "}}}
+
+function! NeoReplSendEntireFile(...) "{{{
+    let ignoreBlankLines = a:0 >= 1 ? a:1 : 0
+
+    call SelectAndSendToNeoRepl("ggVG", ignoreBlankLines)
+endfunction "}}}
+
+function! NeoReplSendCurrentLine() "{{{
+    call SelectAndSendToNeoRepl("^vg_")
+endfunction "}}}
 
 " }}}
 " NERD Tree {{{
--- a/weechat/plugins.conf	Sun Aug 25 14:49:02 2019 -0400
+++ b/weechat/plugins.conf	Sun Aug 25 14:49:34 2019 -0400
@@ -1,152 +1,1 @@
-#
-# weechat -- plugins.conf
-#
-# WARNING: It is NOT recommended to edit this file by hand,
-# especially if WeeChat is running.
-#
-# Use /set or similar command to change settings in WeeChat.
-#
-# For more info, see: https://weechat.org/doc/quickstart
-#
-
-[var]
-fifo.fifo = "on"
-lua.check_license = "off"
-perl.buffers.color_current = "black,green"
-perl.buffers.color_default = "default"
-perl.buffers.color_hotlist_highlight = "lightmagenta"
-perl.buffers.color_hotlist_low = "default"
-perl.buffers.color_hotlist_message = "green"
-perl.buffers.color_hotlist_private = "lightgreen"
-perl.buffers.color_number = "green"
-perl.buffers.color_whitelist_buffers = ""
-perl.buffers.color_whitelist_default = ""
-perl.buffers.color_whitelist_highlight = ""
-perl.buffers.color_whitelist_low = ""
-perl.buffers.color_whitelist_message = ""
-perl.buffers.color_whitelist_private = ""
-perl.buffers.hide_merged_buffers = "all"
-perl.buffers.indenting = "on"
-perl.buffers.indenting_number = "on"
-perl.buffers.short_names = "on"
-perl.buffers.show_category = "off"
-perl.buffers.show_number = "on"
-perl.buffers.show_prefix = "off"
-perl.buffers.show_prefix_empty = "on"
-perl.buffers.sort = "number"
-perl.check_license = "on"
-perl.colorize_lines.avail_buffer = "all"
-perl.colorize_lines.blacklist_buffers = ""
-perl.colorize_lines.blacklist_channels = ""
-perl.colorize_lines.buffer_autoset = "off"
-perl.colorize_lines.buffers = "all"
-perl.colorize_lines.chat = "off"
-perl.colorize_lines.highlight = "on"
-perl.colorize_lines.hotlist_max_level_nicks_add = "off"
-perl.colorize_lines.lines = "off"
-perl.colorize_lines.look_highlight = "on"
-perl.colorize_lines.look_highlight_regex = "on"
-perl.colorize_lines.nicks = ""
-perl.colorize_lines.own_lines = "off"
-perl.colorize_lines.shuffle = "off"
-python.check_license = "on"
-python.growl.hostname = ""
-python.growl.icon = "icon.png"
-python.growl.password = ""
-python.growl.show_channel_topic = "on"
-python.growl.show_dcc = "on"
-python.growl.show_highlighted_message = "on"
-python.growl.show_invite_message = "on"
-python.growl.show_notice_message = "off"
-python.growl.show_private_action_message = "on"
-python.growl.show_private_message = "on"
-python.growl.show_public_action_message = "off"
-python.growl.show_public_message = "off"
-python.growl.show_server = "on"
-python.growl.show_upgrade_ended = "on"
-python.growl.sticky = "off"
-python.growl.sticky_away = "on"
-python.notification_center.show_highlights = "on"
-python.notification_center.show_message_text = "on"
-python.notification_center.show_private_message = "on"
-python.notification_center.sound = "off"
-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"
-python.slack.distracting_channels = ""
-python.slack.external_user_suffix = "*"
-python.slack.group_name_prefix = "&"
-python.slack.map_underline_to = "_"
-python.slack.migrated = "true"
-python.slack.muted_channels_activity = "personal_highlights"
-python.slack.never_away = "false"
-python.slack.record_events = "false"
-python.slack.render_bold_as = "bold"
-python.slack.render_italic_as = "italic"
-python.slack.send_typing_notice = "true"
-python.slack.server_aliases = ""
-python.slack.shared_name_prefix = "%"
-python.slack.short_buffer_names = "false"
-python.slack.show_reaction_nicks = "false"
-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"
-python.slack.unhide_buffers_with_activity = "false"
-ruby.check_license = "on"
-tcl.check_license = "on"
-
-[desc]
-perl.colorize_lines.avail_buffer = "messages will be colored in buffer (all = all buffers, channel = channel buffers, query = query buffers (default: all "
-perl.colorize_lines.blacklist_buffers = "comma-separated list of channels to be ignored (e.g. freenode.#weechat,*.#python)"
-perl.colorize_lines.blacklist_channels = "comma separated list with channelname. Channels in this list will be ignored. (e.g.: freenode.#weechat,freenode.#weechat-fr)"
-perl.colorize_lines.buffer_autoset = "toggle highlight color in chat area for buffer_autoset (default: off)"
-perl.colorize_lines.buffers = "buffer type affected by the script (all/channel/query, default: all)"
-perl.colorize_lines.chat = "colors text in chat area with according nick color (default: on)"
-perl.colorize_lines.highlight = "highlight messages will be fully highlighted in chat area (on = whole line will be highlighted, off = only nick will be highlighted, always = a highlight will always color the whole message) (default: on)"
-perl.colorize_lines.hotlist_max_level_nicks_add = "toggle highlight for hotlist (default: off)"
-perl.colorize_lines.look_highlight = "toggle highlight color in chat area for option weechat.look.highlight (default: off)"
-perl.colorize_lines.look_highlight_regex = "toggle highlight color in chat area for option weechat.look.highlight_regex (default: off)"
-perl.colorize_lines.nicks = "comma separated list with nicknames. Only messages from nicks in this list will be colorized. (e.g.: freenode.nils_2,freenode.flashcode,freenode.weebot). You can also give a filename with nicks. The filename has to start with "/" (e.g.: /buddylist.txt). The format has to be: one nick each line with <servername>.<nickname>"
-perl.colorize_lines.own_lines = "colors own written messages (default: off)"
-perl.colorize_lines.shuffle = "toggle shuffle color mode for chats area (default: off)"
-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."
-python.slack.distracting_channels = "List of channels to hide."
-python.slack.external_user_suffix = "The suffix appended to nicks to indicate external users."
-python.slack.group_name_prefix = "The prefix of buffer names for groups (private channels)."
-python.slack.map_underline_to = "When sending underlined text to slack, use this formatting character for it. The default ("_") sends it as italics. Use "*" to send bold instead."
-python.slack.muted_channels_activity = "Control which activity you see from muted channels, either none, personal_highlights, all_highlights or all. none: Don't show any activity. personal_highlights: Only show personal highlights, i.e. not @channel and @here. all_highlights: Show all highlights, but not other messages. all: Show all activity, like other channels."
-python.slack.never_away = "Poke Slack every five minutes so that it never marks you "away"."
-python.slack.record_events = "Log all traffic from Slack to disk as JSON."
-python.slack.render_bold_as = "When receiving bold text from Slack, render it as this in weechat."
-python.slack.render_italic_as = "When receiving bold text from Slack, render it as this in weechat. If your terminal lacks italic support, consider using "underline" instead."
-python.slack.send_typing_notice = "Alert Slack users when you are typing a message in the input bar (Requires reload)"
-python.slack.server_aliases = "A comma separated list of `subdomain:alias` pairs. The alias will be used instead of the actual name of the slack (in buffer names, logging, etc). E.g `work:no_fun_allowed` would make your work slack show up as `no_fun_allowed` rather than `work.slack.com`."
-python.slack.shared_name_prefix = "The prefix of buffer names for shared channels."
-python.slack.short_buffer_names = "Use `foo.#channel` rather than `foo.slack.com.#channel` as the internal name for Slack buffers. Overrides server_aliases."
-python.slack.show_reaction_nicks = "Display the name of the reacting user(s) alongside each reactji."
-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."
-python.slack.unhide_buffers_with_activity = "When activity occurs on a buffer, unhide it even if it was previously hidden (whether by the user or by the distracting_channels setting)."
+/home/sjl/Dropbox/Settings/plugins.conf
\ No newline at end of file