moved everything back into one conf file...much better now
This commit is contained in:
parent
7d0e2145fd
commit
40e947ad83
|
@ -1 +1 @@
|
|||
conf/main.org
|
||||
conf.org
|
|
@ -1 +0,0 @@
|
|||
lib.org
|
163
conf/lib/lib.org
163
conf/lib/lib.org
|
@ -1,163 +0,0 @@
|
|||
This is code that is used generally throughout the emacs config
|
||||
* macros
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
;; lovingly stolen from aaron harris
|
||||
(defmacro nd/with-advice (adlist &rest body)
|
||||
"Execute BODY with temporary advice in ADLIST.
|
||||
|
||||
Each element of ADLIST should be a list of the form
|
||||
(SYMBOL WHERE FUNCTION [PROPS])
|
||||
suitable for passing to `advice-add'. The BODY is wrapped in an
|
||||
`unwind-protect' form, so the advice will be removed even in the
|
||||
event of an error or nonlocal exit."
|
||||
(declare (debug ((&rest (&rest form)) body))
|
||||
(indent 1))
|
||||
`(progn
|
||||
,@(mapcar (lambda (adform)
|
||||
(cons 'advice-add adform))
|
||||
adlist)
|
||||
(unwind-protect (progn ,@body)
|
||||
,@(mapcar (lambda (adform)
|
||||
`(advice-remove ,(car adform) ,(nth 2 adform)))
|
||||
adlist))))
|
||||
#+END_SRC
|
||||
* functions
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun nd/filter-list-prefix (prefix str-list)
|
||||
"Return a subset of STR-LIST whose first characters are PREFIX."
|
||||
(seq-filter (lambda (i)
|
||||
(and (stringp i)
|
||||
(string-prefix-p prefix i)))
|
||||
str-list))
|
||||
|
||||
(defun nd/move-key (keymap-from keymap-to key)
|
||||
"Move KEY from KEYMAP-FROM keymap to KEYMAP-TO keymap."
|
||||
(define-key keymap-to key (lookup-key keymap-from key))
|
||||
(define-key keymap-from key nil))
|
||||
|
||||
(defun nd/get-apps-from-mime (mimetype)
|
||||
"Return all applications that can open a given MIMETYPE.
|
||||
The list is comprised of alists where pairs are of the form (name . command)."
|
||||
(let* ((case-fold-search nil)
|
||||
(mime-regex (concat "^MimeType=.*" mimetype ";.*$"))
|
||||
(desktop-dirs '("/usr/share/applications"
|
||||
"/usr/local/share/applications"
|
||||
"~/.local/share/applications"))
|
||||
(desktop-files (mapcan (lambda (d) (directory-files d t ".*\\.desktop" t)) desktop-dirs))
|
||||
(app-list))
|
||||
(dolist (file desktop-files app-list)
|
||||
(with-temp-buffer
|
||||
(insert-file-contents file)
|
||||
(let* ((tb (buffer-string)))
|
||||
(if (string-match mime-regex tb)
|
||||
(let* ((exec (progn (string-match "^Exec=\\(.*\\)$" tb)
|
||||
(match-string 1 tb)))
|
||||
(name (or
|
||||
(progn (string-match "^Name=\\(.*\\)$" tb)
|
||||
(match-string 1 tb))
|
||||
exec)))
|
||||
(setq app-list (cons `(,name . ,exec) app-list)))))))))
|
||||
|
||||
(defun nd/get-apps-bulk-from-mime (mimetype)
|
||||
"Like `nd/get-apps-from-mime' but only includes apps that can open
|
||||
multiple files at once for given MIMETYPE."
|
||||
(let ((case-fold-search nil))
|
||||
(seq-filter (lambda (a) (string-match ".*%[FU].*" (car a))) (nd/get-apps-from-mime mimetype))))
|
||||
|
||||
(defun nd/execute-desktop-command (cmd file)
|
||||
"Opens FILE using CMD in separate process where CMD is from a
|
||||
desktop file exec directive."
|
||||
(let* ((cmd-arg (replace-regexp-in-string "%[fuFU]" file cmd t t)))
|
||||
(call-process-shell-command (concat cmd-arg " &"))))
|
||||
|
||||
(defun nd/get-mime-type (file)
|
||||
"Get the mime type of FILE."
|
||||
(let* ((cmd (concat "file --mime-type -b " file))
|
||||
(mt (shell-command-to-string cmd)))
|
||||
(replace-regexp-in-string "\n\\'" "" mt)))
|
||||
|
||||
(defvar nd/device-mount-dir (concat "/media/" (user-login-name)))
|
||||
|
||||
(defun nd/get-mounted-directories (&optional mount-path)
|
||||
"Scan MOUNT-PATH (defaults to /media/$USER for devices that have
|
||||
been mounted by udevil."
|
||||
(seq-filter #'file-directory-p (directory-files nd/device-mount-dir t "^\\([^.]\\|\\.[^.]\\|\\.\\..\\)")))
|
||||
|
||||
(defun nd/device-mountable-p (devpath)
|
||||
"Returns label or uuid if device at DEVPATH is has a readable
|
||||
filesystem and is a usb drive."
|
||||
(let ((devprops (shell-command-to-string (concat "udevadm info --query=property " devpath))))
|
||||
(and (string-match-p (regexp-quote "ID_FS_TYPE") devprops)
|
||||
(string-match-p (regexp-quote "ID_BUS=usb") devprops)
|
||||
(progn
|
||||
(or (string-match "ID_FS_LABEL=\\(.*\\)\n" devprops)
|
||||
(string-match "ID_FS_UUID=\\(.*\\)\n" devprops))
|
||||
(match-string 1 devprops)))))
|
||||
|
||||
(defun nd/get-mountable-devices ()
|
||||
"Return paths of all mountable devices. (see `nd/device-mountable-p')."
|
||||
(seq-filter #'car
|
||||
(mapcar (lambda (d) `(,(nd/device-mountable-p d) . ,d))
|
||||
(directory-files "/dev" t "sd.[0-9]+"))))
|
||||
|
||||
(defun nd/mount-device (dev &rest opts)
|
||||
"Mount device DEV using udevil."
|
||||
(call-process "udevil" nil nil nil "mount" dev))
|
||||
|
||||
(defun nd/get-mountpoint (dev)
|
||||
"Get the filesystem mountpoint for device DEV."
|
||||
(let ((mp (shell-command-to-string (concat "printf %s \"$(findmnt -n -o TARGET " dev ")\""))))
|
||||
(and (not (equal "" mp)) mp)))
|
||||
#+END_SRC
|
||||
* interactive
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun nd/split-and-follow-horizontally ()
|
||||
"Split window horizontally and move focus."
|
||||
(interactive)
|
||||
(split-window-below)
|
||||
(balance-windows)
|
||||
(other-window 1))
|
||||
|
||||
(defun nd/split-and-follow-vertically ()
|
||||
"Split window vertically and move focus."
|
||||
(interactive)
|
||||
(split-window-right)
|
||||
(balance-windows)
|
||||
(other-window 1))
|
||||
|
||||
(defun nd/switch-to-previous-buffer ()
|
||||
"Switch the buffer to the last opened buffer."
|
||||
(interactive)
|
||||
(switch-to-buffer (other-buffer (current-buffer) 1)))
|
||||
|
||||
(defun nd/config-reload ()
|
||||
"Reloads main configuration file at runtime."
|
||||
(interactive)
|
||||
(org-babel-load-file (expand-file-name "~/.emacs.d/conf/main.org")))
|
||||
|
||||
(defun nd/config-visit ()
|
||||
"Opens the main conf.org file (the one that really matters)."
|
||||
(interactive)
|
||||
(find-file "~/.emacs.d/conf/main.org"))
|
||||
|
||||
(defun nd/kill-current-buffer ()
|
||||
"Kill the current buffer."
|
||||
(interactive)
|
||||
(kill-buffer (current-buffer)))
|
||||
|
||||
(defun nd/close-all-buffers ()
|
||||
"Kill all buffers without regard for their origin."
|
||||
(interactive)
|
||||
(mapc 'kill-buffer (buffer-list)))
|
||||
|
||||
(defun nd/org-close-all-buffers ()
|
||||
"Kill all org buffers."
|
||||
(interactive)
|
||||
(mapc 'kill-buffer (org-buffer-list)))
|
||||
|
||||
(defun nd/open-urxvt ()
|
||||
"Launch urxvt in the current directory."
|
||||
(interactive)
|
||||
(let ((cwd (expand-file-name default-directory)))
|
||||
(call-process "urxvt" nil 0 nil "-cd" cwd)))
|
||||
#+END_SRC
|
1305
conf/main.org
1305
conf/main.org
File diff suppressed because it is too large
Load Diff
|
@ -1 +0,0 @@
|
|||
org.org
|
1812
conf/org/org.org
1812
conf/org/org.org
File diff suppressed because it is too large
Load Diff
4
init.el
4
init.el
|
@ -7,10 +7,10 @@
|
|||
(package-refresh-contents)
|
||||
(package-install 'use-package))
|
||||
|
||||
(defvar nd/conf-dir "~/.emacs.d/conf/"
|
||||
(defvar nd/conf-dir "~/.emacs.d/"
|
||||
"The absolute path to the EMACS configuration directory.")
|
||||
|
||||
(defvar nd/conf-main (expand-file-name "main.org" nd/conf-dir)
|
||||
(defvar nd/conf-main (expand-file-name "conf.org" nd/conf-dir)
|
||||
"The absolute path the main EMACS configuration file.")
|
||||
|
||||
(org-babel-load-file nd/conf-main)
|
||||
|
|
Loading…
Reference in New Issue