;;; db-customize.el --- Custom variables -*- lexical-binding: t -*- ;;; Commentary: ;;; Code: (require 'gnutls) (defgroup personal-settings nil "A bunch of functions and variables for personalizing emacs." :prefix "db/" :group 'convenience :group 'help :tag "Personal settings") (defcustom db/jabber-id "" "Personal XMPP ID." :group 'personal-settings :type 'string) (defcustom db/important-documents-path "~/Documents/library/" "Path to look for documents that can be listed in extended search commands like `db/helm-shortcuts’." :group 'personal-settings :type 'string) (defcustom db/path-to-onenote "c:/Program Files (x86)/Microsoft Office/Office15/ONENOTE.EXE" "Path to OneNote executable, for opening corresponding org-mode links." :group 'personal-settings :type 'file) (defcustom db/path-to-outlook "c:/Program Files (x86)/Microsoft Office/Office15/OUTLOOK.EXE" "Path to Outlook executable, for opening corresponding org-mode links." :group 'personal-settings :type 'file) (defun db/update-cert-file-directory (symbol new-value) "Set SYMBOL to NEW-VALUE and add all certificate in it to `gnutls-trustfiles’. Assumes that NEW-VALUE points to a directory, and certificates are assumed to be of the form *.crt." (set symbol new-value) (when (file-directory-p new-value) (dolist (cert-file (directory-files new-value t ".crt$")) (add-to-list 'gnutls-trustfiles cert-file)))) (defcustom db/cert-file-directory "~/.local/etc/certs/" "Local directory with additional certificates." :group 'personal-settings :type 'string :set #'db/update-cert-file-directory) (defcustom db/rfc-cache-path nil "Path where RFC documents are automatically downloaded to when opening rfc: links. If this path is not set, i.e., is null, no automatic download will happen." :group 'personal-settings :type '(choice (const nil) file)) (defcustom db/after-init-load-files nil "A list of files to be loaded by `db/run-init' as the last step." :group 'personal-settings :type '(repeat file)) (defcustom org-working-task-id "" "Task ID of default working task." :group 'personal-settings :type 'string) (defcustom org-break-task-id "" "Task ID of default break task." :group 'personal-settings :type 'string) (defcustom org-home-task-id "" "Task ID of default home task." :group 'personal-settings :type 'string) (defcustom db/org-clock-current-task-file "~/.org-current-task" "File to save the currently clocked in task to." :group 'personal-settings :type 'string) ;; NB: some of those files should also be elements of `org-agenda-files', but ;; this is not done automatically. The reason is that automatically changing ;; `org-agenda-files' when setting those variables may conflict with the ;; customization of `org-agenda-files' itself. Thus, when setting one of those ;; variables would update `org-agenda-files' (possibly saving the customiztion), ;; the original value of `org-agenda-files' would be gone. Conversely, loading ;; the customization for `org-agenda-files' would overwrite the work done by ;; custom setters. Thus, the only reasonable thing to do is to not update ;; `org-agenda-files' automatically and leave it to the user to update it. (defcustom db/org-default-org-file nil "Path to default org-mode file for general use. You may also want to add this file to `org-agenda-files'." :group 'personal-settings :type '(choice (const nil) file)) (defcustom db/org-default-work-file nil "Path to default org-mode file at work. You may also want to add this file to `org-agenda-files'." :group 'personal-settings :type '(choice (const nil) file)) (defcustom db/org-default-home-file nil "Path to default org-mode file at home. You may also want to add this file to `org-agenda-files'." :group 'personal-settings :type '(choice (const nil) file)) (defcustom db/org-default-notes-file nil "Path to default org-mode file for notes. You may also want to add this file to `org-agenda-files'." :group 'personal-settings :type '(choice (const nil) file)) (defcustom db/org-default-refile-file nil "Path to default org-mode file for capturing. This file is used by `org-agenda' to query for tasks that need to be refiled, independently of whether it's part of `org-agenda-files' or not. You may still want to add this file to `org-agenda-files' to have appointments, deadlines, etc shown in the main agenda view." :group 'personal-settings :type '(choice (const nil) file)) (defcustom db/org-default-pensieve-file nil "Path to default org-mode file for private notes." :group 'personal-settings :type '(choice (const nil) file)) (defcustom db/frequently-used-features '(("Mail" ?m db/gnus) ("Agenda" ?a db/org-agenda) ("Init File" ?i db/find-user-init-file) ("Main Org File" ?o (lambda () (interactive) (find-file db/org-default-org-file))) ("EMMS" ?M emms) ("Shell" ?s db/run-or-hide-shell) ("EShell" ?e db/run-or-hide-eshell) ("scratch" ?r db/scratch) ("Org Clock Goto" ?c org-clock-goto) ("Info Lookup" ?I counsel-info-lookup-symbol) ("Unicode Lookup" ?U counsel-unicode-char)) "Mapping of frequently used features to functions implementing them. Can be used in application shortcuts such as `db/helm-shortcuts’. Each entry is a list of three items: a short description, a shortcut character, and the function to call. Customizing this variable redefines the global `hydra-feature-shortcuts'. Instead of a shortcut character, nil can be chosen, in which case no entry in the `hydra-feature-shortcuts' will be generated." :group 'personal-settings :type '(repeat (list string (choice character (const nil)) function)) :set #'(lambda (symbol value) (set-default symbol value) ;; Update hydra when already possible available (when (fboundp 'db/define-feature-shortcuts-hydra) (db/define-feature-shortcuts-hydra)))) (provide 'db-customize) ;;; db-customize ends here