Skip to content

Instantly share code, notes, and snippets.

@gfixler
gfixler / theofthe.hs
Last active October 6, 2015 23:58
Militia Name Generator
-- Clojure -> Haskell port of: https://gist.github.com/nasser/1db446782cf7f3587283
import System.Random (getStdRandom, randomR)
pick :: [a] -> IO a
pick xs = do
n <- getStdRandom $ randomR (0, length xs - 1)
return $ xs !! n
adjs = ["people's", "brave", "invincible", "unstoppable", "righteous", "just", "honorable", "terrifying", "peaceful"]
@gfixler
gfixler / vim_mapkey.vim
Created July 25, 2012 18:19
Vim Mapkey() function: an inverse for maparg()
function! Mapkey (keys, mode)
" Inverse of maparg()
" Pass in a key sequence and the first letter of a Vim mode.
" Returns key mapping mapped to it in that mode, else '' if none.
" <Keys> - e.g. "<Space>" and "<CR>" - are matched case-insensitively,
" as are things before dashes, e.g. the "C-S-" part of "<C-S-A>".
" Chorded "<keys>" are not handled properly yet (i.e. "<C-Space>")
" Example:
" :nnoremap <Tab> :bn<CR>
" :call Mapkey(':bn<CR>', 'n')
@gfixler
gfixler / showsh.vim
Created July 27, 2012 18:18
Vim: Show-And-Shell - simple, shell session playback
" SHOW-AND-SHELL
" An *extremely* simplistic shell 'simulator'.
" Allows for copying a shell session into vim,
" marking up 'typed' sections, then stepping
" through a simulation of using the shell with
" a single key. Useful for didactic demos.
"
" Usage:
" Load or create a ShowShell file.
" Run :ShowShell_setup()
@gfixler
gfixler / blamecol.py
Created August 26, 2012 12:25
Simple SVN blame temporal grayscale colorization
#!/usr/bin/env python
'''
SVN blame temporal colorizer
Pipe shell output of `svn blame` through this.
Creates a grayscale heatmap of recentness of line changes.
Normalizes range of revisions over 20 shades of gray.
Usage:
@gfixler
gfixler / sendit
Last active December 12, 2015 10:29
Gnome Nautilus script to zip/scp files to server.
#!/bin/bash
# zip/scp selected file(s) to server; copy URL to X clipboard
# put in ~/.gnome2/nautilus
# Put these 4 lines in ~/.sendit:
# SENDIT_USER='username' # your scp login
# SENDIT_SITE='yoursite.com' # site to scp to
# SENDIT_PATH='website/path' # where to 'sendit'
# SENDIT_LINK='http://www.yoursite.com/path' # for copying URL
@gfixler
gfixler / gist:5368404
Last active December 16, 2015 03:18
ThatOtherFile - Stateless buffer toggling in Vim, via basename. Toggle between proj/file.ext and proj/<basename>/<basename>_file.ext
function! ThatOtherFile (basename)
" Toggle between ./file.ext and ./<basename>/<basename>_file.ext
" Prompts to create missing <basename> directory if absent.
let path = expand('%:p:h')
let filename = expand('%:p:t')
let opath = path[-len(a:basename):]
let ofilename = filename[:len(a:basename)]
if opath == a:basename
if ofilename == a:basename.'_'
let opath = path[:-len(a:basename) - 1]
aol bpm
aar bbs
abe bcf
ade bef
adm ben
ahl bim
ame bnf
amr bns
ana bob
ann boo
Intro
Why Vim?
Approach
Configuration
vim as Language
Getting Things Done
Searching Your Text
Moving Around Your Text
Changing Text
Deleting Text
#!/bin/bash
#Heith Seewald 2012
#Feel free to extend/modify to meet your needs.
#Maya on Ubuntu v.1
#This is the base installer... I’ll add more features in later versions.
#if you have any issues, feel free email me at heiths@gmail.com
#### Lets run a few checks to make sure things work as expected.
#Make sure we’re running with root permissions.
if [ `whoami` != root ]; then
@gfixler
gfixler / tripod.hs
Last active December 12, 2016 22:23
101 Tripod Hits song lookup
#!/usr/bin/env stack
{- stack --resolver lts-7.13 --install-ghc runghc -}
import Data.Maybe (mapMaybe)
import System.Environment (getArgs)
song :: Int -> Maybe String
song 1 = Just "A Shandy Too Far"
song 2 = Just "Adult Contemporary"
song 3 = Just "Air Guitar"