X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/9867e4bbee2bcfe7050b0c9d98cbf72653f658ac..77b5eb0f4f15bc85f6ec7ad344dd0da26239814e:/.emacs.d/init.el?ds=inline diff --git a/.emacs.d/init.el b/.emacs.d/init.el index 5594987..32989b0 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -1,6 +1,6 @@ ;;; init.el --- bandali's emacs configuration -*- lexical-binding: t -*- -;; Copyright (C) 2018-2020 Amin Bandali +;; Copyright (C) 2018-2021 Amin Bandali ;; This program is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -135,27 +135,19 @@ This sets each user option VAR's value to the corresponding VALUE. ;; (package-generate-description-file d "refinery-theme-pkg.el")) (run-with-idle-timer 0.01 nil #'require 'package) (with-eval-after-load 'package - (when (= (length package-archives) 1) - (csetq - package-archives - `(,@package-archives - ;; ("bndl" . "https://p.bndl.org/elpa/") - ("org" . "https://orgmode.org/elpa/")) - package-load-list - '(;; GNU ELPA - (debbugs "0.26") - (delight "1.7") - (ebdb "0.6.21") - (orgalist "1.13") - (rt-liberation "1.31") - (yasnippet "0.14.0") - (expand-region "0.11.0") - (emms "6.2") - ;; bndl - ;; (refinery-theme "0.1.1") - ;; Org ELPA - (org-plus-contrib "20201109")))) - (package-initialize)) + ;; (csetq + ;; ;; package-archives + ;; ;; `(,@package-archives + ;; ;; ("bndl" . "https://p.bndl.org/elpa/")) + ;; package-load-list + ;; '(;; GNU ELPA + ;; (debbugs "0.29") + ;; (delight "1.7") + ;; (emms "7.7") + ;; (expand-region "0.11.0") + ;; (rt-liberation "2.4") + ;; (yasnippet "0.14.0"))) +(package-initialize)) (csetq package-archive-upload-base "/ssh:caffeine:~/www/p/elpa") @@ -221,8 +213,10 @@ This sets each user option VAR's value to the corresponding VALUE. ;;;; C-level customizations (csetq + ;; line-spacing 3 ;; completion case sensitivity completion-ignore-case t + read-buffer-completion-ignore-case t ;; minibuffer enable-recursive-minibuffers t resize-mini-windows t @@ -246,7 +240,11 @@ This sets each user option VAR's value to the corresponding VALUE. indent-tabs-mode nil tab-width 4) -(set-fontset-font t 'arabic "Vazir") +(when (display-graphic-p) + (set-fontset-font t 'arabic "Vazir")) +;; ;; (set-frame-font "Drafting Mono-14:weight=light" nil t) +;; (set-frame-font "Drafting Mono:pixelsize=16" nil t) +;; (set-face-attribute 'bold nil :weight 'semi-bold) ;;;; Elisp-level customizations @@ -287,6 +285,9 @@ This sets each user option VAR's value to the corresponding VALUE. ;; ;; (keyboard-translate ?\] ?\]) ;; ) +;; minibuffer +(csetq read-file-name-completion-ignore-case t) + ;; startup ;; don't need to see the startup echo area message (advice-add #'display-startup-echo-area-message :override #'ignore) @@ -340,7 +341,12 @@ This sets each user option VAR's value to the corresponding VALUE. display-time-mail-icon '(image :type xpm :file "gnus/gnus-pointer.xpm" :ascent center) - display-time-use-mail-icon t) + display-time-use-mail-icon t + zoneinfo-style-world-list + `(,@zoneinfo-style-world-list + ("Etc/UTC" "UTC") + ("Asia/Tehran" "Tehran") + ("Australia/Melbourne" "Melbourne"))) (display-time-mode)) (run-with-idle-timer 0.1 nil #'require 'battery) @@ -356,6 +362,14 @@ This sets each user option VAR's value to the corresponding VALUE. (require 'winner) (winner-mode 1) +(run-with-idle-timer 0.1 nil #'require 'windmove) +(with-eval-after-load 'windmove + (csetq windmove-wrap-around t) + (global-set-key (kbd "M-H") #'windmove-left) + (global-set-key (kbd "M-L") #'windmove-right) + (global-set-key (kbd "M-K") #'windmove-up) + (global-set-key (kbd "M-J") #'windmove-down)) + (with-eval-after-load 'compile ;; don't display *compilation* buffer on success. based on ;; https://stackoverflow.com/a/17788551, with changes to use `cl-letf' @@ -426,11 +440,6 @@ This sets each user option VAR's value to the corresponding VALUE. ;; this will fail if gpg>=2.1 is not available epg-pinentry-mode 'loopback) -;; (require 'pinentry) -;; workaround for systemd-based distros: -;; (setq pinentry--socket-dir server-socket-dir) -;; (pinentry-start) - ;; auth-source (csetq auth-sources '("~/.authinfo.gpg") @@ -438,21 +447,30 @@ This sets each user option VAR's value to the corresponding VALUE. ;; info (with-eval-after-load 'info - (add-to-list - 'Info-directory-list - (expand-file-name - (convert-standard-filename "info/") source-directory))) + (csetq + Info-directory-list + `(,@Info-directory-list + ,(expand-file-name + (convert-standard-filename "info/") source-directory) + "/usr/share/info/"))) ;; faces -(with-eval-after-load 'faces - (let* ((grey "#e7e7e7") - (darker-grey "#d9d9d9") - (box ;; `(:line-width -1 :style released-button) - 'unspecified)) - (set-face-attribute 'mode-line nil - :background grey :box box) - (set-face-attribute 'mode-line-inactive nil - :background darker-grey :box box))) +(when (display-graphic-p) + (with-eval-after-load 'faces + (let* ((grey "#e7e7e7") + ;; (darker-grey "#d9d9d9") + ;; (box ;; 'unspecified + ;; `(;; :line-width -1 + ;; :style released-button)) + ) + ;; (set-face-attribute 'fixed-pitch nil :family "Source Code Pro") + (set-face-attribute 'fixed-pitch nil :family "Inconsolata") + (set-face-attribute 'mode-line nil + :background grey ;; :box box + :inherit 'fixed-pitch) + ;; (set-face-attribute 'mode-line-inactive nil + ;; :background darker-grey :box box) + ))) ;;; Useful utilities @@ -530,6 +548,12 @@ Make N (default: 1) copies of the current line or region." (dotimes (_ (abs n1)) (insert text)))))) +(defun b/invert-default-face () + "Invert the `default' face (swap its background and foreground). +Effectively a very simple light/dark theme toggle switch." + (interactive) + (invert-face 'default)) + ;;; General key bindings @@ -539,6 +563,7 @@ Make N (default: 1) copies of the current line or region." (global-set-key (kbd "C-c j") #'b/join-line-top) (global-set-key (kbd "C-S-j") #'b/join-line-top) (global-set-key (kbd "C-c x") #'execute-extended-command) +(global-set-key (kbd "C-c v") #'b/invert-default-face) ;; evaling and macro-expanding (global-set-key (kbd "C-c e b") #'eval-buffer) @@ -555,6 +580,7 @@ Make N (default: 1) copies of the current line or region." (global-set-key (kbd "C-c f .") #'find-file) (global-set-key (kbd "C-c f d") #'find-name-dired) (global-set-key (kbd "C-c f l") #'find-library) +(global-set-key (kbd "C-c f p") #'find-file-at-point) ;; frames (global-set-key (kbd "C-c F m") #'make-frame-command) @@ -600,51 +626,21 @@ Make N (default: 1) copies of the current line or region." (completing-read "Find recent file: " recentf-list))) (global-set-key (kbd "C-c f r") #'b/recentf-open)) -(fido-mode 1) -(defun b/icomplete--fido-mode-setup () - "Customizations to `fido-mode''s minibuffer." - (when (and icomplete-mode (icomplete-simple-completing-p)) - (setq-local - ;; icomplete-compute-delay 0.1 - ;; icomplete-hide-common-prefix t - icomplete-separator " · " - completion-styles '(basic substring partial-completion flex)))) -(add-hook 'minibuffer-setup-hook #'b/icomplete--fido-mode-setup 1) +;; (fido-mode 1) +;; (defun b/icomplete--fido-mode-setup () +;; "Customizations to `fido-mode''s minibuffer." +;; (when (and icomplete-mode (icomplete-simple-completing-p)) +;; (setq-local +;; ;; icomplete-compute-delay 0.1 +;; ;; icomplete-hide-common-prefix t +;; icomplete-separator " · " +;; completion-styles '(basic substring partial-completion flex)))) +;; (add-hook 'minibuffer-setup-hook #'b/icomplete--fido-mode-setup 1) (require 'bandali-eshell) (require 'bandali-ibuffer) -;; outline -;; (with-eval-after-load 'outline -;; (when (featurep 'which-key) -;; (which-key-add-key-based-replacements -;; "C-c @" "outline" -;; "s-O" "outline")) -;; (define-key outline-minor-mode-map (kbd "") -;; #'outline-toggle-children) -;; (define-key outline-minor-mode-map (kbd "M-p") -;; #'outline-previous-visible-heading) -;; (define-key outline-minor-mode-map (kbd "M-n") -;; #'outline-next-visible-heading) -;; (defvar b/outline-prefix-map) -;; (define-prefix-command 'b/outline-prefix-map) -;; (define-key outline-minor-mode-map (kbd "s-O") -;; 'b/outline-prefix-map) -;; (define-key b/outline-prefix-map (kbd "TAB") -;; #'outline-toggle-children) -;; (define-key b/outline-prefix-map (kbd "a") -;; #'outline-hide-body) -;; (define-key b/outline-prefix-map (kbd "H") -;; #'outline-hide-body) -;; (define-key b/outline-prefix-map (kbd "S") -;; #'outline-show-all) -;; (define-key b/outline-prefix-map (kbd "h") -;; #'outline-hide-subtree) -;; (define-key b/outline-prefix-map (kbd "s") -;; #'outline-show-subtree)) -;; (add-hook 'prog-mode-hook #'outline-minor-mode) - (require 'bandali-dired) (with-eval-after-load 'help @@ -669,15 +665,12 @@ Make N (default: 1) copies of the current line or region." (csetq shr-max-width 80) -;; Email (with Gnus, message, and EBDB) +;; Email (with Gnus, message, and smtpmail) (require 'bandali-gnus) -(with-eval-after-load 'sendmail - (csetq sendmail-program (executable-find "msmtp") - ;; message-sendmail-extra-arguments '("-v" "-d") - mail-specify-envelope-from t - mail-envelope-from 'header)) (require 'bandali-message) -(require 'bandali-ebdb) +;; (with-eval-after-load 'smtpmail +;; (csetq smtpmail-queue-mail t +;; smtpmail-queue-dir (concat b/maildir "queue/"))) ;; IRC (with ERC) (require 'bandali-erc) @@ -746,19 +739,6 @@ Make N (default: 1) copies of the current line or region." (with-eval-after-load 'flyspell (csetq flyspell-mode-line-string " fly")) -;; flycheck -;; (run-with-idle-timer 0.6 nil #'require 'flycheck) -;; (with-eval-after-load 'flycheck -;; (csetq -;; ;; Use the load-path from running Emacs when checking elisp files -;; flycheck-emacs-lisp-load-path 'inherit -;; ;; Only flycheck when I actually save the buffer -;; flycheck-check-syntax-automatically '(mode-enabled save) -;; flycheck-mode-line-prefix "flyc")) -;; (define-key flycheck-mode-map (kbd "M-P") #'flycheck-previous-error) -;; (define-key flycheck-mode-map (kbd "M-N") #'flycheck-next-error) -;; (add-hook 'prog-mode-hook #'flycheck-mode) - ;; ispell ;; http://endlessparentheses.com/ispell-and-apostrophes.html ;; (run-with-idle-timer 0.6 nil #'require 'ispell) @@ -838,9 +818,6 @@ Make N (default: 1) copies of the current line or region." (with-eval-after-load 'css-mode (csetq css-indent-offset 2)) -;; po-mode -;; (add-hook 'po-mode-hook (lambda nil (run-with-timer 0.1 nil 'View-exit))) - ;; auctex ;; (csetq font-latex-fontify-sectioning 'color) @@ -1014,6 +991,12 @@ Make N (default: 1) copies of the current line or region." (delight 'mml-mode " mml" "mml") (delight 'yas-minor-mode "" "yasnippet")) +;; po-mode +(require 'bandali-po) + +(with-eval-after-load 'emms + (csetq emms-directory (b/var "emms"))) + ;;; Post initialization