# HG changeset patch # User Steve Losh # Date 1363296584 14400 # Node ID e2adcd899a6e4c6321a4ce8200d50e2adbaadda6 # Parent 103f13addfd22051dc070be92ff4795d8d2a25e6 Moar. diff -r 103f13addfd2 -r e2adcd899a6e dotcss/debuggex.com.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dotcss/debuggex.com.css Thu Mar 14 17:29:44 2013 -0400 @@ -0,0 +1,7 @@ +h2 { display: none; } +div.centered-text { display: none; } +div { display: none; } +div.topcontainer { display: block; } +div.topcontainer div { display: block; } +div.nfa { display: block; } +div.ui-slider { display: block; } diff -r 103f13addfd2 -r e2adcd899a6e dotcss/dpaste.com.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dotcss/dpaste.com.css Thu Mar 14 17:29:44 2013 -0400 @@ -0,0 +1,4 @@ +pre { + font-family: Menlo; + font-size: 12px; +} diff -r 103f13addfd2 -r e2adcd899a6e dotcss/gist.github.com.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dotcss/gist.github.com.css Thu Mar 14 17:29:44 2013 -0400 @@ -0,0 +1,6 @@ + +.line-data, .file-data pre, .line-number { + font-family: Menlo; + line-height: 1.4; + font-size: 12px; +} diff -r 103f13addfd2 -r e2adcd899a6e dotcss/linkedin.com.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dotcss/linkedin.com.css Thu Mar 14 17:29:44 2013 -0400 @@ -0,0 +1,15 @@ +#network-stat-widget, +#jobsForYou, +#groupsForYou, +#companiesForYou, +#pymk, +#today-news-wrapper, +.guided-setup +{ + display: none; +} + +.member-photo, .feed-photo { + margin-left: 10px !important; + border: 1px solid black !important; +} diff -r 103f13addfd2 -r e2adcd899a6e dotcss/unisubs.sifterapp.com.css --- a/dotcss/unisubs.sifterapp.com.css Tue Feb 19 11:29:09 2013 -0500 +++ b/dotcss/unisubs.sifterapp.com.css Thu Mar 14 17:29:44 2013 -0400 @@ -5,7 +5,7 @@ padding: 8px 8px 6px 0px !important; } tr.issue td.subject span.assignee { - display: none; + /* display: none; */ } tr.issue td { border-bottom: 1px solid #eee !important; diff -r 103f13addfd2 -r e2adcd899a6e dotcss/weather.com.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dotcss/weather.com.css Thu Mar 14 17:29:44 2013 -0400 @@ -0,0 +1,209 @@ +// First grab Stylebot: https://chrome.google.com/webstore/detail/stylebot/oiaejidbmkiecgbjeifoejpgmdaleoha?hl=en + +#wx-breaking-now { + display: none; +} + +#wx-wrapper { + border-style: none; +} + +#wx-rail { + display: none; +} + +div.wx-inner { + display: none; +} + +div.wx-module.wx-gptADS { + display: none; +} + +div.wx-next a { + display: none; +} + +div.wx-nav-arrow.wx-k-lg-rt { + display: none; +} + +div.wx-content { + display: none; +} + +div.wx-social-share-ls-wrapper ul { + display: none; +} + +div.wx-search form input { + display: none; +} + +div.wx-searchButton { + display: none; +} + +div.wx-search { + display: none; +} + +#wx-bottom-inner { + height: 400px; +} + +dl.wx-1 { + display: none; +} + +dl.wx-2 { + display: none; +} + +dl.wx-3 { + display: none; +} + +dl.wx-4 { + display: none; +} + +ul.wx-social { + display: none; +} + +div.wx-legal { + display: none; +} + +#wx-Strip { + display: none; +} + +#wx-header-tools { + display: none; +} + +div.wx-desktop-weather-btn a { + display: none; +} + +div.wx-desktop-weather-bg { + display: none; +} + +span.wx-icon.wx-desktop-weather { + display: none; +} + +li.twc-weather-edit-location { + display: none; +} + +div.wx-grid6of6 { + height: 0; + margin-bottom: 0; + padding-bottom: 0; +} + +#wx-inner-rail { + clear: left; +} + +div.fby-tab.fby-tab-r a { + display: none; +} + +div.fby-tab.fby-tab-r { + display: none; +} + +div.wx-prev a { + display: none; +} + +div.wx-nav-arrow.wx-k-lg-lt { + display: none; +} + +div.wx-free-title h3 { + display: none; +} + +a.wx-icon.wx-cond.wx-phone { + display: none; +} + +a.wx-icon.wx-cond.wx-desktop { + display: none; +} + +a.wx-icon.wx-cond.wx-tablet { + display: none; +} + +div.wx-social-share-bar { + display: none; +} + +div.wx-lifestyles div { + display: none; +} + +#fsr_modalOverlay { + display: none; +} + +div.fsrwin { + display: none; +} + +div.wx-24hour.wx-module.wx-grid3of6.wx-weather { + margin-left: 0; + padding-left: 0; +} + +div#wx-footer { + border-top: 0; +} + +div#wx-top-wrap { + width: 660px; +} + +div#wx-main { + float: none; + margin: 0 auto; +} + +div.trc_rbox_outer { + display: none; +} + +div.trc_rbox_header.trc_rbox_border_elm { + display: none; +} + +div.trc_rbox_container div { + display: none; +} + +div.wx-map { + margin-left: 165px; +} + +div#wx-forecast-container div.wx-map { + margin-left: 0; +} + +.wx-grid6of6 { + width: auto; +} + +div.wx-corsican { + display: none; +} + +div.wx-module.wx-featured.wx-wwir-module.wx-cond-bg { + display: none; +} \ No newline at end of file diff -r 103f13addfd2 -r e2adcd899a6e dotjs/unisubs.sifterapp.com.js --- a/dotjs/unisubs.sifterapp.com.js Tue Feb 19 11:29:09 2013 -0500 +++ b/dotjs/unisubs.sifterapp.com.js Thu Mar 14 17:29:44 2013 -0400 @@ -1,140 +1,10 @@ -/* - * jQuery Hotkeys Plugin - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * - * Based upon the plugin by Tzury Bar Yochay: - * http://github.com/tzuryby/hotkeys - * - * Original idea by: - * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/ -*/ -(function(jQuery){ - jQuery.hotkeys = { - version: "0.8", - - specialKeys: { - 8: "backspace", 9: "tab", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause", - 20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home", - 37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del", - 96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7", - 104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/", - 112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8", - 120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 191: "/", 224: "meta" - }, - - shiftNums: { - "`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&", - "8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<", - ".": ">", "/": "?", "\\": "|" - } - }; - function keyHandler( handleObj ) { - // Only care when a possible input has been specified - if ( typeof handleObj.data !== "string" ) { - return; - } - - var origHandler = handleObj.handler, - keys = handleObj.data.toLowerCase().split(" "); - - handleObj.handler = function( event ) { - // Don't fire in text-accepting inputs that we didn't directly bind to - if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) || - event.target.type === "text") ) { - return; - } - - // Keypress represents characters, not special keys - var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[ event.which ], - character = String.fromCharCode( event.which ).toLowerCase(), - key, modif = "", possible = {}; - - // check combinations (alt|ctrl|shift+anything) - if ( event.altKey && special !== "alt" ) { - modif += "alt+"; - } - - if ( event.ctrlKey && special !== "ctrl" ) { - modif += "ctrl+"; - } - - // TODO: Need to make sure this works consistently across platforms - if ( event.metaKey && !event.ctrlKey && special !== "meta" ) { - modif += "meta+"; - } - - if ( event.shiftKey && special !== "shift" ) { - modif += "shift+"; - } - - if ( special ) { - possible[ modif + special ] = true; - - } else { - possible[ modif + character ] = true; - possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true; - - // "$" can be triggered as "Shift+4" or "Shift+$" or just "$" - if ( modif === "shift+" ) { - possible[ jQuery.hotkeys.shiftNums[ character ] ] = true; - } - } - - for ( var i = 0, l = keys.length; i < l; i++ ) { - if ( possible[ keys[i] ] ) { - return origHandler.apply( this, arguments ); - } - } - }; - } - jQuery.each([ "keydown", "keyup", "keypress" ], function() { - jQuery.event.special[ this ] = { add: keyHandler }; - }); -})($); - $(function() { $('ul.state li.priority').each(function(idx, el) { $(el).closest('.issue').find('h2').append( - '' + $(el).text() + '' - ); + '' + $(el).text() + ''); $(el).remove(); }); - $tickets = $('tr.issue td.subject a'); - - if ($tickets.length) { - for (var i=0; i < 9; i++) { - var $t = $tickets.eq(i); - - $t.prepend('' + (i + 1) + ''); - $t.css('position', 'relative'); - $('span.keyshortcut', $t) - .css('position', 'absolute') - .css('color', '#D3DEE7') - .css('left', '-90px') - .css('font-weight', 'bold') - .css('top', '-1px') - } - - $d = $(document); - - $d.bind('keydown', '1', function(e) { go(e); }); - $d.bind('keydown', '2', function(e) { go(e); }); - $d.bind('keydown', '3', function(e) { go(e); }); - $d.bind('keydown', '4', function(e) { go(e); }); - $d.bind('keydown', '5', function(e) { go(e); }); - $d.bind('keydown', '6', function(e) { go(e); }); - $d.bind('keydown', '7', function(e) { go(e); }); - $d.bind('keydown', '8', function(e) { go(e); }); - $d.bind('keydown', '9', function(e) { go(e); }); - - var go = function(e) { - var num = parseInt(e.data, 0) - 1; - document.location = $tickets.eq(num).attr('href'); - }; - } - $('div.comment').each(function (idx, el) { var id = $(el).attr('id'); var link = 'permalink'; diff -r 103f13addfd2 -r e2adcd899a6e fish/config.fish --- a/fish/config.fish Tue Feb 19 11:29:09 2013 -0500 +++ b/fish/config.fish Thu Mar 14 17:29:44 2013 -0400 @@ -24,6 +24,10 @@ function eg; vim ~/.gitconfig; end function es; vim ~/.slate; end +function fixopenwith + /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user +end + function ss; bcvi --wrap-ssh -- $argv; end function bcvid; dtach -A /tmp/bcvi.socket bcvi --listener; end @@ -43,8 +47,8 @@ function weechat; weechat-curses $argv; end -function collapse; "sed -e 's/ */ /g'"; end -function cuts; "cut -d' '"; end +function collapse; sed -e 's/ */ /g'; end +function cuts; cut -d' '; end function v; vim $argv; end function V; vim . $argv; end diff -r 103f13addfd2 -r e2adcd899a6e mutt/muttrc --- a/mutt/muttrc Tue Feb 19 11:29:09 2013 -0500 +++ b/mutt/muttrc Thu Mar 14 17:29:44 2013 -0400 @@ -196,6 +196,10 @@ macro pager \Cu "|urlview" "call urlview to open links" macro pager s "cat > ~/Desktop/" "save message as" +# Quickly change mailboxes +macro pager \' "+steve-stevelosh.com/INBOX" "go to stevelosh/INBOX" +macro pager \" "+steve-stevelosh.com/archive" "go to stevelosh/archive" + # }}} # Compose {{{ diff -r 103f13addfd2 -r e2adcd899a6e pentadactylrc --- a/pentadactylrc Tue Feb 19 11:29:09 2013 -0500 +++ b/pentadactylrc Thu Mar 14 17:29:44 2013 -0400 @@ -58,3 +58,9 @@ " Shut up. javascript dactyl.beep = function() { return false; } + +" Okay DDG let's see if I can stand you. +" nope set defsearch=duckduckgo + +" Train myself to use t instead of cmd-t +nmap -builtin diff -r 103f13addfd2 -r e2adcd899a6e vim/vimrc --- a/vim/vimrc Tue Feb 19 11:29:09 2013 -0500 +++ b/vim/vimrc Thu Mar 14 17:29:44 2013 -0400 @@ -217,6 +217,9 @@ function! MakeSpacelessIabbrev(from, to) execute "iabbrev ".a:from." ".a:to."=EatChar('\\s')" endfunction +function! MakeSpacelessBufferIabbrev(from, to) + execute "iabbrev ".a:from." ".a:to."=EatChar('\\s')" +endfunction call MakeSpacelessIabbrev('sl/', 'http://stevelosh.com/') call MakeSpacelessIabbrev('bb/', 'http://bitbucket.org/') @@ -486,8 +489,17 @@ " Don't move on * nnoremap * * -" Use c-\ to do c-] but open it in a new split. -nnoremap vzvzz +" Jumping to tags. +" +" Basically, jumps to tags (like normal) and opens the tag in a new +" split instead. +" +" Both of them will align the destination line to the upper middle part of the +" screen. Both will pulse the cursor line so you can see where the hell you +" are. will also fold everything in the buffer and then unfold just +" enough for you to see the destination line. +nnoremap mzzvzz15`z:Pulse +nnoremap vmzzMzvzz15`z:Pulse " Keep search matches in the middle of the window. nnoremap n nzzzv @@ -848,6 +860,7 @@ au FileType javascript setlocal foldmethod=marker au FileType javascript setlocal foldmarker={,} + au FileType javascript call MakeSpacelessBufferIabbrev('clog', 'console.log();') " Make { insert a pair of brackets in such a way that the cursor is correctly " positioned inside of them AND the following code doesn't get unfolded. @@ -855,6 +868,15 @@ augroup END " }}} +" Lilypond {{{ + +augroup ft_lilypond + au! + + au FileType lilypond setlocal foldmethod=marker foldmarker={,} +augroup END + +" }}} " Lisp {{{ augroup ft_lisp @@ -1203,7 +1225,8 @@ let NERDTreeHighlightCursorline = 1 let NERDTreeIgnore = ['.vim$', '\~$', '.*\.pyc$', 'pip-log\.txt$', 'whoosh_index', \ 'xapian_index', '.*.pid', 'monitor.py', '.*-fixtures-.*.json', - \ '.*\.o$', 'db.db', 'tags.bak'] + \ '.*\.o$', 'db.db', 'tags.bak', '.*\.pdf$', '.*\.mid$', + \ '.*\.midi$'] let NERDTreeMinimalUI = 1 let NERDTreeDirArrows = 1 @@ -1394,10 +1417,15 @@ " Motion for "next/last object". "Last" here means "previous", not "final". " Unfortunately the "p" motion was already taken for paragraphs. " -" Next acts on the next object of the given type in the current line, last acts -" on the previous object of the given type in the current line. +" Next acts on the next object of the given type, last acts on the previous +" object of the given type. These don't necessarily have to be in the current +" line. " -" Currently only works for (, [, {, b, r, B, ', and ". +" Currently works for (, [, {, and their shortcuts b, r, B. +" +" Next kind of works for ' and " as long as there are no escaped versions of +" them in the string (TODO: fix that). Last is currently broken for quotes +" (TODO: fix that). " " Some examples (C marks cursor positions, V means visually selected): " @@ -1411,33 +1439,113 @@ " foo = bar " C " -" vil" -> select inside last double quotes print "hello ", name -" C +" vin" -> select inside next double quotes print "hello ", name +" C " print "hello ", name " VVVVVV -onoremap an :call NextTextObject('a', 'f') -xnoremap an :call NextTextObject('a', 'f') -onoremap in :call NextTextObject('i', 'f') -xnoremap in :call NextTextObject('i', 'f') +onoremap an :call NextTextObject('a', '/') +xnoremap an :call NextTextObject('a', '/') +onoremap in :call NextTextObject('i', '/') +xnoremap in :call NextTextObject('i', '/') -onoremap al :call NextTextObject('a', 'F') -xnoremap al :call NextTextObject('a', 'F') -onoremap il :call NextTextObject('i', 'F') -xnoremap il :call NextTextObject('i', 'F') +onoremap al :call NextTextObject('a', '?') +xnoremap al :call NextTextObject('a', '?') +onoremap il :call NextTextObject('i', '?') +xnoremap il :call NextTextObject('i', '?') + function! s:NextTextObject(motion, dir) - let c = nr2char(getchar()) + let c = nr2char(getchar()) + let d = '' + + if c ==# "b" || c ==# "(" || c ==# ")" + let c = "(" + elseif c ==# "B" || c ==# "{" || c ==# "}" + let c = "{" + elseif c ==# "r" || c ==# "[" || c ==# "]" + let c = "[" + elseif c ==# "'" + let c = "'" + elseif c ==# '"' + let c = '"' + else + return + endif + + " Find the next opening-whatever. + execute "normal! " . a:dir . c . "\" + + if a:motion ==# 'a' + " If we're doing an 'around' method, we just need to select around it + " and we can bail out to Vim. + execute "normal! va" . c + else + " Otherwise we're looking at an 'inside' motion. Unfortunately these + " get tricky when you're dealing with an empty set of delimiters because + " Vim does the wrong thing when you say vi(. + + let open = '' + let close = '' - if c ==# "b" - let c = "(" - elseif c ==# "B" - let c = "{" - elseif c ==# "r" - let c = "[" - endif + if c ==# "(" + let open = "(" + let close = ")" + elseif c ==# "{" + let open = "{" + let close = "}" + elseif c ==# "[" + let open = "\\[" + let close = "\\]" + elseif c ==# "'" + let open = "'" + let close = "'" + elseif c ==# '"' + let open = '"' + let close = '"' + endif + + " We'll start at the current delimiter. + let start_pos = getpos('.') + let start_l = start_pos[1] + let start_c = start_pos[2] - exe "normal! ".a:dir.c."v".a:motion.c + " Then we'll find it's matching end delimiter. + if c ==# "'" || c ==# '"' + " searchpairpos() doesn't work for quotes, because fuck me. + let end_pos = searchpos(open) + else + let end_pos = searchpairpos(open, '', close) + endif + + let end_l = end_pos[0] + let end_c = end_pos[1] + + call setpos('.', start_pos) + + if start_l == end_l && start_c == (end_c - 1) + " We're in an empty set of delimiters. We'll append an "x" + " character and select that so most Vim commands will do something + " sane. v is gonna be weird, and so is y. Oh well. + execute "normal! ax\\" + execute "normal! vi" . c + elseif start_l == end_l && start_c == (end_c - 2) + " We're on a set of delimiters that contain a single, non-newline + " character. We can just select that and we're done. + execute "normal! vi" . c + else + " Otherwise these delimiters contain something. But we're still not + " sure Vim's gonna work, because if they contain nothing but + " newlines Vim still does the wrong thing. So we'll manually select + " the guts ourselves. + let whichwrap = &whichwrap + set whichwrap+=h,l + + execute "normal! va" . c . "hol" + + let &whichwrap = whichwrap + endif + endif endfunction " }}}