Skip to content

Instantly share code, notes, and snippets.

Wilfred Hughes Wilfred

Block or report user

Report or block Wilfred

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@Wilfred
Wilfred / MalType.st
Created Jun 23, 2019
MAL equality pharo
View MalType.st
= anObject
self isIterable & anObject isIterable
ifTrue: [ ^ value = anObject value ].
self class = anObject class
ifFalse: [ ^ false ].
^ value = anObject value
View segfault_pharo.log
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 Aug 27, 2017
pharo conditionals example
View whileMatchesDo.st
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 May 16, 2019
dynamically defined properties in python
View dyn_prop.py
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 Mar 13, 2019
Native Rust Regular Expressions in Remacs
View regex.org

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 Aug 10, 2017
function calls vs aliases
View dashtest2.el
;;; 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 Jun 27, 2017
Exploring programmatically generated elisp with suggest.el
View calculate_3.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 Jun 2, 2017
Confusing Emacs argument parsing with cl-defun
View example.el
(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"
@Wilfred
Wilfred / remove-props.el
Created Mar 25, 2017
remove text properties
View remove-props.el
;; Loosely based on `erc-remove-text-properties-region'.
(defun wh/remove-text-properties-region ()
"Remove all text properties from the current buffer."
(interactive)
(let ((inhibit-read-only t))
(set-text-properties (point-min) (point-max) nil)))
You can’t perform that action at this time.