Skip to content

Instantly share code, notes, and snippets.

View Wilfred's full-sized avatar

Wilfred Hughes Wilfred

View GitHub Profile
@Wilfred
Wilfred / init.lua
Created June 8, 2021 18:46
switch to firefox with hammerspoon
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "F", function()
local app = hs.application'firefox'
if app ~= nil then
app:activate()
end
end)
@Wilfred
Wilfred / XHP ns token.md
Created October 9, 2019 19:05 — forked from fredemmott/XHP ns token.md
XHP ns token
@Wilfred
Wilfred / MalType.st
Created June 23, 2019 15:15
MAL equality pharo
= anObject
self isIterable & anObject isIterable
ifTrue: [ ^ value = anObject value ].
self class = anObject class
ifFalse: [ ^ false ].
^ value = anObject value
Segmentation fault Tue Sep 5 19:23:15 2017
/home/wilfred/Downloads/pharo6.1-64/bin/lib/pharo/5.0-201707201942/pharo
Pharo VM version: 5.0-201707201942 Thu Jul 20 20:40:54 UTC 2017 gcc 4.6.3 [Production Spur 64-bit VM]
Built from: CoInterpreter VMMaker.oscog-eem.2254 uuid: 4f2c2cce-f4a2-469a-93f1-97ed941df0ad Jul 20 2017
With: StackToRegisterMappingCogit VMMaker.oscog-eem.2252 uuid: 2f3e9b0e-ecd3-4adf-b092-cce2e2587a5c Jul 20 2017
Revision: VM: 201707201942 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: Thu Jul 20 12:42:21 2017 -0700 $ Plugins: 201707201942 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
Build host: Linux testing-gce-74d10329-bbfd-42e5-8995-b0e3a68c73cb 3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24 16:47:06 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
plugin path: /home/wilfred/Downloads/pharo6.1-64/bin [default: /home/wilfred/Downloads/pharo6.1-64/bin/lib/pharo/5.0-201707201942/]
@Wilfred
Wilfred / whileMatchesDo.st
Created August 27, 2017 16:38
pharo conditionals example
whileMatches: aStream do: aBlock
"Execute block, passing in this instance, for every match in stream.
Be extra careful about successful matches which consume no input.
After those, make sure to advance or finish if already at end."
| wholeMatch reachedEnd |
reachedEnd := false.
[ self searchStream: aStream ]
whileTrue: [ wholeMatch := self subexpression: 1.
@Wilfred
Wilfred / dyn_prop.py
Last active November 22, 2023 16:01
dynamically defined properties in python
def attach_dyn_prop(instance, prop_name, prop_fn):
"""Attach prop_fn to instance with name prop_name.
Assumes that prop_fn takes self as an argument.
Reference: https://stackoverflow.com/a/1355444/509706
"""
class_name = instance.__class__.__name__ + 'Child'
child_class = type(class_name, (instance.__class__,), {prop_name: property(prop_fn)})
@Wilfred
Wilfred / regex.org
Last active January 7, 2020 17:22
Native Rust Regular Expressions in Remacs

RFC: Use Rust’s regex crate

We want to port Remacs to use a regex crate implemented in Rust. The Rust implementations are highly optimised, and this would simplify the Remacs codebase.

The two major crates are Rust’s regex crate, and the fancy-regex crate.

@Wilfred
Wilfred / dashtest2.el
Last active August 10, 2017 08:45
function calls vs aliases
;;; dashtest2.el --- benchmarking dash -*- lexical-binding: t -*-
(defun -first-item-fn (lst)
(car lst))
(defalias '-first-item-alias 'car)
(defun wh/benchmark ()
(interactive)
(let ((items (-repeat 20 'foo)))
@Wilfred
Wilfred / calculate_3.el
Last active June 27, 2017 20:52
Exploring programmatically generated elisp with suggest.el
;; given 1, how do we calculate 3?
(length (key-description (char-to-string 1)))
(length (key-description (string 1)))
(1+ (1+ 1))
(length (number-to-string (ftruncate 1)))
(length (number-to-string (fround 1)))
(length (number-to-string (ffloor 1)))
(length (number-to-string (fceiling 1)))
(length (number-to-string (float 1)))
(length (number-to-string (sqrt 1)))
@Wilfred
Wilfred / example.el
Created June 2, 2017 16:00
Confusing Emacs argument parsing with cl-defun
(cl-defun wh/foo (arg1 arg2 &key (kwarg1 t))
(list arg1 arg2 kwarg1))
;; We've forgotten arg2, but we get the error:
;; (error "Keyword argument 2 not one of (:kwarg1)")
(wh/foo 1 :kwarg1 2)
;; Instead, it would be clearer to say
;; "Expected a keyword argument (one of (:kwargs1)) but got 1"