Skip to content

Instantly share code, notes, and snippets.

@pesterhazy
pesterhazy / git-ag
Created March 1, 2014 17:55
Search your git repository using ag (the silver searcher)
#!/bin/bash
# Put additional ignore patterns (one by line) in .grepignore
#
git-ag () {
if [[ "$1" = "-a" ]]
then
all=1
shift
#!/usr/bin/env zsh
#
# Grep in the files of the current git repository *with a list of exclusions*, using `git grep` or `ag`.
#
# Exclusions are defined in .grepignore. Each line is a regex suitable for grep(2); if the filename
# matches any of the regexes, it is excluded from the search.
#
# Works with zsh (bash not tested).
#
# Versions for `git grep` and `ag` are provided.
@pesterhazy
pesterhazy / .zshrc
Created October 5, 2014 17:16
symlink dotfiles in your dropbox folder to your $HOME
dropbox-update-dotfiles () {
src="$HOME/Dropbox/Linux/dotfiles"
dst="$HOME"
if [[ ! -d "$src" ]]; then
print Using $HOME/dotfiles.
src="$HOME/dotfiles"
fi
if [[ ! -d "$src" ]]; then
print "Directory $src not found."
@pesterhazy
pesterhazy / in_vagrant
Created December 22, 2014 13:09
in_vagrant: transparently execute command inside vagrant
#!/bin/bash
#
# Syntax:
#
# ./in_vagrant [command] [args]
#
# Example usage:
#
# Set up a Vagrantfile with a config called "foo"
#
@pesterhazy
pesterhazy / equalsstar.clj
Created February 13, 2015 15:42
Debugging aid: show differences between two data structures
(defn =* [a b]
(if (= a b)
true
(do
(println "No match:" a b)
(println "Dfference:" )
(clojure.pprint/pprint (clojure.data/diff a b))
false)))
@pesterhazy
pesterhazy / constrain.clj
Last active August 29, 2015 14:15
Constrain a sequence in clojure
(defn constrain
"Truncate a sequence
Returns a two-element vector to signal whether of not the seq has
been truncated"
[max coll]
(let [[head tail] (split-at max coll)]
(if (seq tail)
[nil (take max coll)]
[coll])))
@pesterhazy
pesterhazy / nixos-14.12-vagrant
Last active August 29, 2015 14:16
Trying out nixos 14.12 in vagrant
# The vagrant box provided by @zimbatm is still on 14.02. Follow
# this recipe to update the machine to 14.12
#
# Make sure you have a recent version of `vagrant` (https://www.vagrantup.com)
# and virtualbox.
mkdir nixos-test
cd nixos-test
vagrant init zimbatm/nixbox64 # creates Vagrantfile
vagrant up # brings up the box
@pesterhazy
pesterhazy / when-seq.clj
Created May 11, 2015 08:48
when-seq: conditionally apply operation on sequence in threading macro
(defn when-seq
"If condition is true, perform seq operation f on xs with args; otherwise return f.
Intended for use in the thread first macro. For example:
(-> []
(when-seq x conj x))
will be [:foo] if x is :foo, [] if x is nil"
[xs condition f & args]
@pesterhazy
pesterhazy / guard-nil.clj
Last active August 29, 2015 14:21
guard-nil: ensure non-nil argument, raise descriptive exception otherwise
(defmacro guard-nil
"Returns `x` unless it is nil, in which case a descriptive exception is raised"
[x]
`(if-some [v# ~x]
v#
(throw (AssertionError. (str "Form should not be nil: " (pr-str '~x))))))
@pesterhazy
pesterhazy / profiles.clj
Last active August 29, 2015 14:22
profiles.clj for leiningen: vinyasa.pull pulls lein dependencies into a running repl
;; An example of `profiles.clj'. You can install it by placing it in the
;; ~/.lein/profiles.clj folder
;;
;; Based on the example given in: https://github.com/zcaudate/vinyasa
{:user {:dependencies [[org.clojure/tools.namespace "0.2.4"]
[leiningen #=(leiningen.core.main/leiningen-version)]
[im.chit/vinyasa "0.3.4"]]
:injections
[(require '[vinyasa.inject :as inject])