emacs/lisp/dconf-mode.el
2022-06-19 16:57:03 -08:00

40 lines
1.2 KiB
EmacsLisp

;;; dconf-mode.el --- Edit dconf settings in an emacs buffer
;;; Commentary:
;; I haven't completely given up on GNOME. This is a little wrapper I've ported
;; from my vim config to modify and save the running GNOME state to files.
;; The relevant vim settings:
;; autocmd BufReadPre *.gsets silent !dconf dump /org/gnome/%:t:r/ > %
;; autocmd BufReadPost *.gsets set ft=dosini
;; autocmd BufWritePost *.gsets silent !cat % | dconf load /org/gnome/%:t:r/
;;; Code:
(defun dconf-load-current-file ()
"Load the current file into dconf's live registry."
(interactive)
(shell-command
(concat "cat " buffer-file-name
" | dconf load /org/gnome/" (file-name-base buffer-file-name) "/")))
(defun dconf-dump-current-file ()
"Load dconf's live registry into the current file."
(interactive)
(erase-buffer)
(shell-command
(concat "dconf dump /org/gnome/" (file-name-base buffer-file-name) "/")
(current-buffer)))
(define-derived-mode dconf-mode conf-mode "Dconf"
"Major mode for interacting with the dconf database."
(add-hook 'after-save-hook 'dconf-load-current-file)
:after-hook (dconf-dump-current-file))
;;;###autoload
(add-to-list 'auto-mode-alist '("\\.gsets" . dconf-mode))
(provide 'dconf-mode)
;;; dconf-mode.el ends here