dkellner-misc.el 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. ;; dkellner-misc.el --- miscellaneous settings
  2. (setq default-directory "~/")
  3. (setq make-backup-files nil)
  4. (setq kill-ring-max 1000)
  5. (setq-default require-final-newline t)
  6. (setq-default indent-tabs-mode nil)
  7. (setq-default fill-column 79)
  8. (use-package recentf
  9. :demand t
  10. :config
  11. (setq recentf-max-saved-items 250)
  12. (add-to-list 'recentf-exclude no-littering-etc-directory)
  13. (add-to-list 'recentf-exclude no-littering-var-directory)
  14. (add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?:"))
  15. (use-package dired
  16. :bind (("C-x C-d" . dired))
  17. :config
  18. (require 'dired-x)
  19. (setq dired-listing-switches "-ahl"
  20. dired-omit-files "^\\.")
  21. (add-hook 'dired-mode-hook
  22. (lambda () (dired-omit-mode))))
  23. ;; Remove trailing whitespace on save:
  24. (add-hook 'before-save-hook #'delete-trailing-whitespace)
  25. ;; Highlight unnecessary whitespace:
  26. (use-package whitespace
  27. :config
  28. (setq whitespace-style '(face empty tabs lines-tail trailing))
  29. (global-whitespace-mode t)
  30. :diminish global-whitespace-mode)
  31. (use-package flycheck
  32. :config
  33. (global-flycheck-mode)
  34. :diminish flycheck-mode)
  35. (use-package iedit)
  36. (use-package expand-region
  37. :bind (("C-=" . er/expand-region)))
  38. ;; Enable commands that are disabled by default:
  39. (put 'upcase-region 'disabled nil)
  40. (put 'downcase-region 'disabled nil)
  41. (put 'narrow-to-region 'disabled nil)
  42. ;; Some keybindings for convenience:
  43. (use-package iy-go-to-char
  44. :bind (("C-f" . iy-go-up-to-char)
  45. ("C-b" . iy-go-up-to-char-backward)))
  46. (use-package avy
  47. :bind (("M-g g" . avy-goto-line)
  48. ("M-g M-g" . avy-goto-line)
  49. ("M-g M-s" . avy-goto-word-1)
  50. ("M-g M-r" . avy-copy-region)))
  51. (use-package ibuffer
  52. :bind (("C-x C-b" . ibuffer))
  53. :config
  54. (setq ibuffer-formats '((mark modified read-only locked " "
  55. (name 40 40 :left :elide)
  56. " "
  57. (size 9 -1 :right)
  58. " "
  59. (mode 16 16 :left :elide)
  60. " " filename-and-process))))
  61. ;; Just kill the current buffer on pressing C-x k, don't ask which one to kill:
  62. (bind-key "C-x k" #'dkellner/kill-current-buffer)
  63. (defun dkellner/kill-current-buffer ()
  64. "Kill the current buffer."
  65. (interactive)
  66. (kill-buffer (current-buffer)))
  67. ;; Why would one ever want to suspend Emacs?! :)
  68. (global-unset-key (kbd "C-z"))
  69. (global-unset-key (kbd "C-x C-z"))
  70. ;; I use "C-c g" for `recompile' in my own mode for the Python debugger
  71. ;; (see dkellner-python.el). I don't want to care if it's actually
  72. ;; `compilation-mode` or `dkellner/pdb-mode` I'm seeing, so I bind it
  73. ;; for the former as well.
  74. (defun dkellner/bind-recompile ()
  75. "Locally bind `recompile' to \"C-c g\""
  76. (local-set-key (kbd "C-c g") 'recompile))
  77. (add-hook 'compilation-mode-hook 'dkellner/bind-recompile)
  78. (use-package markdown-mode)
  79. (use-package highlight-indentation)
  80. (use-package yaml-mode
  81. :config
  82. (add-hook 'yaml-mode-hook #'highlight-indentation-current-column-mode))
  83. (use-package which-key
  84. :config
  85. (which-key-mode)
  86. :diminish which-key-mode)
  87. (setq term-ansi-default-program "/usr/bin/zsh")
  88. (setq browse-url-browser-function #'browse-url-firefox)
  89. (setq browse-url-firefox-arguments '("-p" "exwm"))
  90. (global-set-key (kbd "C-x C-c") #'save-buffers-kill-emacs)
  91. ;; C-x k to kill all buffers, not C-x # for buffers opened by emacsclient.
  92. ;; see https://www.emacswiki.org/emacs/EmacsClient#toc36
  93. (add-hook 'server-switch-hook
  94. (lambda ()
  95. (when (current-local-map)
  96. (use-local-map (copy-keymap (current-local-map))))
  97. (when server-buffer-clients
  98. (local-set-key (kbd "C-x k") 'server-edit))))
  99. (setq shell-file-name "/bin/sh")
  100. (use-package crux
  101. :bind (([remap move-beginning-of-line] . crux-move-beginning-of-line)
  102. ("C-c e" . crux-eval-and-replace)
  103. ("C-c o" . crux-open-with)
  104. ("C-c r" . crux-rename-file-and-buffer)
  105. ("C-c u" . crux-view-url)
  106. ("C-c D" . crux-delete-file-and-buffer)))
  107. (use-package helpful
  108. :config
  109. (setq counsel-describe-function-function #'helpful-callable
  110. counsel-describe-variable-function #'helpful-variable))
  111. (provide 'dkellner-misc)