;; Time-stamp: <2020-04-13 14:36:53 (tslil@bison)> ;; ----------------------------------------------------------------------------- ;; Spelling (use-package spell-fu :ensure t :config (setq ispell-dictionary "british" ispell-personal-dictionary "~/.aspell.en.pws") ;; The default was this "\\b\\([[:alpha:]][[:alpha:]']*\\)\\b", but that ;; didn't play well with ``LaTeX's quoting system''. (setq-default spell-fu-word-regexp "\\([[:alpha:]]+\\('[[:alpha:]]\\)*\\)")) (setq sentence-end-double-space nil) (add-hook 'mail-mode-hook (lambda () (electric-pair-local-mode 1) (turn-on-auto-fill) (spell-fu-mode 1) (company-mode 1))) (add-hook 'text-mode-hook (lambda () ;; (set-input-method "Adga") (subword-mode 1) (electric-pair-local-mode 1) (turn-on-auto-fill) (siege-mode 1) (spell-fu-mode 1) )) (use-package dictionary :ensure t :defer t) ;; ----------------------------------------------------------------------------- ;; Org (use-package org :defer t :bind (:map org-mode-map ("M-h" . nil)) ;; :hook (org-mode . (lambda () ;; (activate-input-method default-input-method))) :config (setq org-use-sub-superscripts (quote {}) org-modules nil)) ;; ----------------------------------------------------------------------------- ;; Deft (use-package deft :ensure t :defer t :commands (deft) :bind (("C-z" . deft-take-note) ("C-c C-z" . deft)) :config (setq deft-default-extension "org" deft-directory "~/store/notes" deft-use-filename-as-title nil deft-use-filter-string-for-filename t deft-file-naming-rules '((noslash . "_") (nospace . "_") (case-fn . downcase)) deft-org-mode-title-prefix t) (defvar deft-take-note-pre-grab '((region-thing . (let ((r (if (region-active-p) (buffer-substring (region-beginning) (region-end)) (thing-at-point 'line)))) (if r (concat r "\n") ""))) (bfn . (let ((f (buffer-file-name)) (b (buffer-name))) (if f f (concat b " (no file associated)"))))) "List of pairs of symbol names and (functions evaluating to) strings evaluated before the buffer is created, and made available for deft-take-note-default-contents.") (defvar deft-take-note-post-grab '() "List of pairs of symbol names and (functions evaluating to) strings evaluated after the buffer is created, and made available for deft-take-note-default-contents.") (defvar deft-take-note-default-contents '(region-thing bfn "\n") "List with string literals and symbols defined in the pre and post grab lists to be inserted into the buffer.") (defun deft-take-note () (interactive) (let ((pre-alist (mapcar #'(lambda (elt) `(,(car elt) . ,(eval (cdr elt)))) deft-take-note-pre-grab))) (let ((bn (concat (format-time-string "%Y%m%d-%H:%M:%S.%N-%Z") "." deft-default-extension))) (switch-to-buffer bn) (set-visited-file-name (expand-file-name (concat deft-directory "/" bn))) (let ((complete-alist (append pre-alist (mapcar #'(lambda (elt) `(,(car elt) . ,(eval (cdr elt)))) deft-take-note-post-grab)))) (mapc #'(lambda (elt) (if (eq (type-of elt) 'string) (insert elt) (insert (cdr (assoc elt complete-alist))))) deft-take-note-default-contents)))))) ;; ----------------------------------------------------------------------------- ;; Useful keybinds (defun vi-open-line-above () "Insert a newline above the current line and put point at beginning." (interactive) (unless (bolp) (beginning-of-line)) (newline) (forward-line -1) (indent-according-to-mode)) (defun vi-open-line-below () "Insert a newline below the current line and put point at beginning." (interactive) (unless (eolp) (end-of-line)) (newline-and-indent)) (global-set-key (kbd "M-o") 'vi-open-line-below) (global-set-key (kbd "C-o") 'vi-open-line-above) (global-set-key (kbd "M-C-+") 'text-scale-increase) (global-set-key (kbd "M-C--") 'text-scale-decrease)