# HG changeset patch # User Steve Losh # Date 1460324493 0 # Node ID 70a831232f0f86e08bd324f004da3c4b3bdbe1d7 # Parent f453bfba01a73c4604b448b2b585c70901e74343 Roswell and more diff -r f453bfba01a7 -r 70a831232f0f .hgignore --- a/.hgignore Sun Apr 10 21:40:53 2016 +0000 +++ b/.hgignore Sun Apr 10 21:41:33 2016 +0000 @@ -37,3 +37,5 @@ fish/local.fish ipython/profile_default/history.sqlite weechat/certs/ca-bundle.crt + +roswell/clhs diff -r f453bfba01a7 -r 70a831232f0f bash_profile --- a/bash_profile Sun Apr 10 21:40:53 2016 +0000 +++ b/bash_profile Sun Apr 10 21:41:33 2016 +0000 @@ -15,7 +15,7 @@ fi } -export PATH=~/bin:~/lib/dotfiles/bin:/usr/local/share/python:/usr/local/bin/:$PATH +export PATH=~/bin:~/lib/dotfiles/bin:~/.roswell/bin:/usr/local/share/python:/usr/local/bin/:$PATH alias h='hg' alias g='git' diff -r f453bfba01a7 -r 70a831232f0f bin/nrepl --- a/bin/nrepl Sun Apr 10 21:40:53 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -set -e - -rlwrap sbcl --eval "(ql:quickload 'nrepl)" --eval "(nrepl:start-server)" "$@" diff -r f453bfba01a7 -r 70a831232f0f bin/nrepl-ccl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/nrepl-ccl Sun Apr 10 21:41:33 2016 +0000 @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -e + +ccl --eval "(ql:quickload 'nrepl)" --eval "(nrepl:start-server)" "$@" diff -r f453bfba01a7 -r 70a831232f0f bin/nrepl-sbcl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/nrepl-sbcl Sun Apr 10 21:41:33 2016 +0000 @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -e + +rlwrap sbcl --eval "(ql:quickload 'nrepl)" --eval "(nrepl:start-server)" "$@" diff -r f453bfba01a7 -r 70a831232f0f fish/config.fish --- a/fish/config.fish Sun Apr 10 21:40:53 2016 +0000 +++ b/fish/config.fish Sun Apr 10 21:41:33 2016 +0000 @@ -64,9 +64,7 @@ end end end -set -gx PATH "/usr/X11R6/bin" -prepend_to_path "/usr/texbin" -prepend_to_path "/sbin" +set -gx PATH "/sbin" prepend_to_path "/usr/sbin" prepend_to_path "/bin" prepend_to_path "/usr/bin" @@ -75,13 +73,8 @@ prepend_to_path "/usr/local/sbin" prepend_to_path "/usr/local/share/npm/bin" prepend_to_path "$HOME/lib/dotfiles/bin" -prepend_to_path "/opt/local/bin" -prepend_to_path "/opt/subversion/bin" prepend_to_path "$HOME/lib/hg/hg" -prepend_to_path "$HOME/Library/Haskell/bin" -prepend_to_path "/usr/local/Cellar/ruby/1.9.3-p194/bin" -prepend_to_path "/Applications/Postgres.app/Contents/MacOS/bin" -prepend_to_path "$HOME/.rbenv/shims" +prepend_to_path "$HOME/.roswell/bin" prepend_to_path "$HOME/bin" set BROWSER open diff -r f453bfba01a7 -r 70a831232f0f lispwords --- a/lispwords Sun Apr 10 21:40:53 2016 +0000 +++ b/lispwords Sun Apr 10 21:41:33 2016 +0000 @@ -22,8 +22,3 @@ ; sketch (1 with-pen) (3 defsketch) -(1 scancode-case) - -; my shit -(1 vector-push-extend-all) - diff -r f453bfba01a7 -r 70a831232f0f roswell/clhs.ros --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/roswell/clhs.ros Sun Apr 10 21:41:33 2016 +0000 @@ -0,0 +1,166 @@ +#!/bin/sh +#|-*- mode:lisp -*-|# +#| +exec ros -Q -- $0 "$@" +|# + +#| + +A Roswell script to open the HyperSpec page of a specified symbol in the default browser. + +Usage +----- + + $ clhs [SYMBOL] + + +Installation +------------ + +Just download this script, give execute permission, and move to somewhere your shell can find it (assuming `~/.roswell/bin/` is in $PATH in the following example). + + $ wget https://gist.githubusercontent.com/fukamachi/3510ea1609c1b52830c2/raw/clhs.ros -O clhs + $ chmod u+x clhs + $ mv clhs ~/.roswell/bin + +You may want to `ros build` for creating an executable file for fast execution. + + $ ros build clhs.ros + $ mv clhs ~/.roswell/bin + + +Environment variables +--------------------- + + CLHS_BASE_URL: + The base URL of HyperSpec. The default is LispWorks'. + + CLHS_OPEN_COMMAND: + Command name to open an URL with the default browser. + The default value is 'open' for Mac and 'xdg-open' for Linux. + + +Copyright +--------- + +Copyright (c) 2015 Eitaro Fukamachi, Masatoshi Sano + + +LICENSE +------- + +This script is licensed under the MIT License. + +|# + +;; Loading dependencies +(unless (find-package :uiop) + (ql:quickload '(:uiop) :silent t)) + + +;; +;; Special variables + +(defparameter *clhs-base-url* + (or (uiop:getenv "CLHS_BASE_URL") + "http://www.lispworks.com/documentation/HyperSpec/")) + +(defparameter *clhs-cache-directory* + (let ((cache-dir + (uiop:ensure-directory-pathname (uiop:getenv "XDG_CACHE_HOME") + (merge-pathnames ".cache/" (user-homedir-pathname))))) + (merge-pathnames #P"clhs/" cache-dir))) + +(defparameter *clhs-cache-file* + (merge-pathnames #P"symbols-map.sexp" *clhs-cache-directory*)) + +(defparameter *open-command* + (or (uiop:getenv "CLHS_OPEN_COMMAND") + #+darwin "open" + #+linux "xdg-open" + #+(or windows win32) "explorer" + #-(or darwin linux windows win32) + (error "CLHS_OPEN_COMMAND is not set."))) + + +;; +;; Utilities + +(defun terminate (code &optional message &rest args) + (when message + (format *error-output* "~&~A~%" + (apply #'format nil (princ-to-string message) args))) + (uiop:quit code)) + +;; Copied from Qlot +(defmacro with-package-functions (package-designator functions &body body) + (let ((args (gensym "ARGS"))) + `(flet (,@(loop for fn in functions + collect `(,fn (&rest ,args) + (apply + ,(if (and (listp fn) (eq (car fn) 'setf)) + `(eval `(function (setf ,(intern ,(string (cadr fn)) ,package-designator)))) + `(symbol-function (intern ,(string fn) ,package-designator))) + ,args)))) + ,@body))) + +(defun retrieve-url (url) + (with-package-functions :drakma (http-request) + (tagbody retry + (multiple-value-bind (body status) + (http-request url) + (unless (= status 200) + (restart-case + (error "Failed to retrieve ~S (Code=~A)" url status) + (retry-request () + :report "Retry the request to URL." + (go retry)))) + (return-from retrieve-url body))))) + + +;; +;; Here we go! + +(defun clhs-url (path) + (format nil "~A~A" *clhs-base-url* path)) + +(defun retrieve-clhs-symbols-map () + (ql:quickload '(:drakma :plump :clss) :silent t) + + (with-package-functions :plump (parse text attribute) + (with-package-functions :clss (select) + (let ((body (retrieve-url (clhs-url "Front/X_AllSym.htm")))) + (map 'list + (lambda (a) + (cons (text a) + (let ((path (attribute a "href"))) + ;; Omit "../" and URL fragment + (subseq path 3 (position #\# path))))) + (select "a[rel=definition]" (parse body))))))) + +(defun clhs-symbols-map () + (if (probe-file *clhs-cache-file*) + (uiop:read-file-form *clhs-cache-file*) + (let ((symbols (retrieve-clhs-symbols-map))) + (ensure-directories-exist *clhs-cache-file*) + (with-open-file (out *clhs-cache-file* + :direction :output + :if-does-not-exist :create) + (prin1 symbols out)) + symbols))) + +(defun find-symbol-path (target-symbol) + (cdr (assoc target-symbol (clhs-symbols-map) + :test #'string-equal))) + +(defun main (&optional target-symbol &rest argv) + (declare (ignore argv)) + (unless target-symbol + (terminate -1 "Usage: clhs [SYMBOL]")) + + (let ((path (find-symbol-path target-symbol))) + (if path + (let ((url (clhs-url path))) + (format t "~&Opening ~S~%" url) + (uiop:run-program `(,*open-command* ,url) :ignore-error-status t :output :interactive)) + (terminate -1 "Symbol not found: ~A" target-symbol)))) diff -r f453bfba01a7 -r 70a831232f0f vim/ftplugin/lisp/lispfolding.vim --- a/vim/ftplugin/lisp/lispfolding.vim Sun Apr 10 21:40:53 2016 +0000 +++ b/vim/ftplugin/lisp/lispfolding.vim Sun Apr 10 21:41:33 2016 +0000 @@ -10,9 +10,9 @@ function! GetLispFold() let inline_fn_comment_re = '\v^ *;;( .*)?$' - if getline(v:lnum) =~ '^;;;; .*' + if getline(v:lnum) =~ '^;;;; ' return "0" - elseif getline(v:lnum) =~ '^;;;.*' + elseif getline(v:lnum) =~ '^;;; ' return "1" elseif getline(v:lnum) =~ inline_fn_comment_re if getline(v:lnum + 1) =~ inline_fn_comment_re @@ -20,34 +20,15 @@ else return "<2" endif - elseif getline(v:lnum) =~ '^; .*' + elseif getline(v:lnum) =~ '^; ' return "0" - elseif getline(v:lnum) =~ '^(let.*\s' + elseif getline(v:lnum) =~ '^(let[*]? ' " let over lambda return ">1" - elseif getline(v:lnum) =~ '^(defun.*\s' - return ">1" - elseif getline(v:lnum) =~ '^(test.*\s' - return ">1" - elseif getline(v:lnum) =~ '^(defmacro.*\s' - return ">1" - elseif getline(v:lnum) =~ '^(defmethod.*\s' - return ">1" - elseif getline(v:lnum) =~ '^(defgeneric.*\s' - return ">1" - elseif getline(v:lnum) =~ '^(defparameter.*\s' + elseif getline(v:lnum) =~ '^(test ' return ">1" - elseif getline(v:lnum) =~ '^(defconstant.*\s' - return ">1" - elseif getline(v:lnum) =~ '^(deftype.*\s' - return ">1" - elseif getline(v:lnum) =~ '^(defvar.*\s' - return ">1" - elseif getline(v:lnum) =~ '^(defclass.*\s' - return ">1" - elseif getline(v:lnum) =~ '^(defstruct.*\s' - return ">1" - elseif getline(v:lnum) =~ '^(define-.*\s' + elseif getline(v:lnum) =~ '^(def\S\+ ' + " fuck it just fold everything that looks kinda deffy return ">1" elseif getline(v:lnum) =~ '^\s*$' let my_lispnum = v:lnum diff -r f453bfba01a7 -r 70a831232f0f vim/vimrc --- a/vim/vimrc Sun Apr 10 21:40:53 2016 +0000 +++ b/vim/vimrc Sun Apr 10 21:41:33 2016 +0000 @@ -909,8 +909,12 @@ hi def link replResult Debug hi def link replComment Comment endfunction "}}} -function! OpenLispRepl() "{{{ - NeoRepl nrepl +function! OpenLispReplSBCL() "{{{ + NeoRepl nrepl-sbcl + call HighlightLispRepl() +endfunction "}}} +function! OpenLispReplCCL() "{{{ + NeoRepl nrepl-ccl call HighlightLispRepl() endfunction "}}} function! SetLispWords() "{{{ @@ -1040,7 +1044,8 @@ " [s]end to repl " [c]lear repl au FileType lisp silent! call OozeMapKeys() - au FileType lisp nnoremap o :call OpenLispRepl() + au FileType lisp nnoremap os :call OpenLispReplSBCL() + au FileType lisp nnoremap oc :call OpenLispReplCCL() au FileType lisp nnoremap s :call SendToplevelLispForm() au FileType lisp nnoremap c :call NeoReplSendRaw("nil\n"):sleep 20m:call NeoReplSendRaw(" ") au FileType lisp nnoremap gi :call IndentToplevelLispForm() @@ -2034,6 +2039,32 @@ let g:ackprg = 'ag --smart-case --nogroup --nocolor --column' " }}} +" Airline {{{ + +if !exists('g:airline_symbols') + let g:airline_symbols = {} +endif + +let g:airline_theme='badwolf' + +let g:airline_theme_patch_func = 'AirlineThemePatch' +function! AirlineThemePatch(palette) + if g:airline_theme == 'badwolf' + for colors in values(a:palette.inactive) + let colors[2] = 15 + endfor + endif +endfunction + +let g:airline_left_sep = '⮀' +let g:airline_left_alt_sep = '⮁' +let g:airline_right_sep = '⮂' +let g:airline_right_alt_sep = '⮃' +let g:airline_symbols.branch = '⭠' +let g:airline_symbols.readonly = '⭤' +let g:airline_symbols.linenr = '⭡' + +" }}} " Autoclose {{{ nmap x ToggleAutoCloseMappings @@ -2251,7 +2282,7 @@ augroup END let NERDTreeHighlightCursorline = 1 -let NERDTreeIgnore = ['.vim$', '\~$', '.*\.pyc$', 'pip-log\.txt$', 'whoosh_index', +let NERDTreeIgnore = ['\~$', '.*\.pyc$', 'pip-log\.txt$', 'whoosh_index', \ 'xapian_index', '.*.pid', 'monitor.py', '.*-fixtures-.*.json', \ '.*\.o$', 'db.db', 'tags.bak', '.*\.pdf$', '.*\.mid$', \ '.*\.midi$'] @@ -2280,13 +2311,6 @@ let g:paredit_electric_return = 1 " }}} -" Powerline {{{ - -let g:Powerline_symbols = 'fancy' -let g:Powerline_cache_enabled = 1 -let g:Powerline_colorscheme = 'badwolf' - -" }}} " Python-Mode {{{ let g:pymode_doc = 1 diff -r f453bfba01a7 -r 70a831232f0f w3m-keymap --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/w3m-keymap Sun Apr 10 21:41:33 2016 +0000 @@ -0,0 +1,2 @@ +keymap q EXIT +keymap K EXIT