Skip to content

Instantly share code, notes, and snippets.

View mickesv's full-sized avatar

Mikael Svahnberg mickesv

View GitHub Profile
(defun kursplan-get-latest-revision-number (course-code &optional lang)
"Get the latest revision of kursplan in language LANG (\"se\" or \"en\") for COURSE-CODE."
(let* ((lang (or lang "sv"))
(url (format "https://edu.bth.se/utbildning/utb_kursplaner.asp?sok=%s" course-code))
(pattern (format "kursplan\\?kurskod=%s&revision=\\([0-9]+\\)&lang=%s" course-code lang)))
(with-temp-buffer
(url-insert-file-contents url)
(goto-char (point-min))
(re-search-forward pattern nil t nil)
(match-string 1))))
@mickesv
mickesv / clony.sh
Created September 16, 2020 08:36
Clony McCloneface done the Unix way
#!/usr/bin/env bash
CHUNKSIZE=5
STARTDIR=.
EXTENSION=txt
TMPFILE="/tmp/chunk-tmp"
OUTFILE="./clony-out.txt"
FINDFLAGS=""
@mickesv
mickesv / jstest
Last active May 24, 2017 11:03
simple js quiz macros for org-mode
#
# Javascript (jquery) Quiz-package for org-mode
#
# Copyright(c) Mikael Svahnberg, 2017.
#
#
# Load relevant libraries
@mickesv
mickesv / jstree
Last active May 24, 2017 11:00
Tree-view for org-mode
#
# Javascript (jquery) Tree-view macros for org-mode
#
# Copyright(c) Mikael Svahnberg, 2017.
#
#
# Load relevant libraries
@mickesv
mickesv / brainfuck
Created April 2, 2015 08:32
Brainfuck implementation in Math.js
# Implementation of Brainfuck in Math.js
# Why? Because I can, and because I wanted to find out if Math.js was Turing complete
#
# Does not support nested iterations or input yet. Embryo for nested iterations is there though.
# 1=dp(start at 10), 2=out, 3="",4=ip, 5=lastip, 6=mute, 7=isp
d=zeros(100);d[1]=10;d[2]="";d[3]="";d[4]=1;d[5]=1;d[6]=0;d[7]=100;
mov(d,dir)=subset(d,index(1),d[1]+dir);
mod(d,m)=subset(d,index(d[1]),d[d[1]]+m);
@mickesv
mickesv / gist:46cf5710dc1bf3ad843a
Created December 12, 2014 12:34
Yank and add some lines around the yank (I use this a lot in e-mails)
(defun msv-yank-with-lines (arg)
(interactive "P")
(let ((num 20))
(when arg
(setq num arg))
(insert "\n" (make-string num ?-) "\n")
(yank)
(insert "\n" (make-string num ?-) "\n")
))
@mickesv
mickesv / gist:7ec7f5b8fa4befa7bb56
Created December 1, 2014 12:04
Emacs cleanup unused buffers
(setq msv-cleanup-list '(dired-mode doc-view-mode image-mode magit-status-mode magit-log-edit-mode debugger-mode archive-mode))
(defun msv-cleanup ()
"Clean up and kill buffers that are no longer needed"
(interactive)
(save-excursion
(let ((count 0))
(dolist (buffer (buffer-list))
(set-buffer buffer)
(when (member major-mode msv-cleanup-list)
@mickesv
mickesv / gist:29b66a670fc4955c0f70
Created December 1, 2014 12:03
Emacs Gnus search mail from everywhere
;; Search mail from everywhere
;; (As long as you have started gnus already
(defun msv-search-mail ()
(interactive)
(with-current-buffer "*Group*"
(save-excursion
(beginning-of-buffer)
(search-forward "All Mail")
(call-interactively (gnus-group-make-nnir-group nil)))))
@mickesv
mickesv / gist:ac7e706e04c2fc303832
Created December 1, 2014 12:02
Emacs Unread Mailcount in mode-line
;; Add unread mailcount to modeline
;; I "cheat" by letting geektools run a script to do the real work once every 30secs, and then store it in a file.
;; (works better than letting emacs freeze to do the same thing)
;; ----------
(setq msv-checkmail-timeout 10)
(setq msv-mailcount "")
(defun msv-check-mailcount ()
(if (boundp 'msv-time-last)
(if (> (nth 1 (current-time)) (+ msv-time-last msv-checkmail-timeout))
@mickesv
mickesv / gist:f381e6e7dec365e70a85
Created December 1, 2014 11:59
Emacs Application Launcher
;; --------------------
;; Application Launcher
;; --------------------
;; For OSX, where the "open" command knows most of what you would like to do.
(setq msv-launchers '(("conk" . (shell-command "open -a conkeror"))
("fox" . (shell-command "open -a firefox"))
("pfox" . (shell-command "open -a firefox --args -private"))
("finder" . (shell-command "open ~/Documents"))
("download" . (shell-command "open ~/Downloads"))