-
Notifications
You must be signed in to change notification settings - Fork 0
/
du.el
44 lines (37 loc) · 1.27 KB
/
du.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
;;; du.el --- Collection of useful functions
(defun du/parse-vertical-lines (list)
(let ((result '()) (buff '()))
(dolist (el list)
(if (eq el '|)
(progn
(push (nreverse buff) result)
(setq buff '()))
(push el buff)))
(unless (null buff) (push (nreverse buff) result))
(nreverse result)))
(defmacro du/defpacks (name &rest packages)
(unless (and (symbolp name) (not (eql name '|)))
(error "Enter the name of the package category!"))
`(progn
,@(mapcar
(lambda (package)
`(use-package ,(car package) ,@(cdr package)))
`,(du/parse-vertical-lines (cdr packages)))))
(defun du/deffont (font)
(when (find-font (font-spec :name font))
(set-face-attribute 'default nil :font font :height 120)))
(defmacro du/unless-map (&rest cases)
`(progn
,@(mapcar #'(lambda (case) `(unless ,(car case) ,(cadar case))) cases)))
(defun du/save-directories (backups saves)
(du/unless-map
((file-directory-p backups) (make-directory backups))
((file-directory-p saves) (make-directory saves)))
(setq backup-directory-alist
`((".*" . ,backups)))
(setq auto-save-file-name-transforms
`((".*" ,saves t))))
(defun du/fullscreen ()
(interactive)
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32
'(2 "_NET_WM_STATE_FULLSCREEN" 0)))