summary refs log tree commit diff
path: root/config/init-base.el
blob: 799dce6cebcbc4e688e9f6b8a0f5db2ce985a0c7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
;;; init-base.el --- base configuration -*- lexical-binding: t -*-
;; Author: Franck Cuny <franck@fcuny.net>

;;; Commentary:

;; commentary

;;; Code:

(setq sentence-end-double-space nil
      create-lockfiles nil                 ;; don't use a lock file
      tab-always-indent 'complete          ;; when using TAB, always indent
      initial-major-mode 'fundamental-mode ;; default mode for the scratch buffer
      initial-scratch-message ""           ;; makes the scratch buffer empty
      confirm-kill-emacs #'yes-or-no-p     ;; ask before killing emacs
      use-short-answers t                  ;; use y-or-n
      minibuffer-message-timeout 0.5       ;; How long to display an echo-area message
      ring-bell-function 'ignore           ;; really no bell
      visible-bell nil                     ;; no bell
      indent-tabs-mode nil                 ;; turn off tab indentation
      delete-by-moving-to-trash t          ;; delete files by moving them to the trash
      user-full-name "Franck Cuny"
      user-mail-address "franck@fcuny.net"
      history-length 200
      history-delete-duplicates t
      require-final-newline t
      auto-save-default nil                ;; no autosave
      backup-inhibited t                   ;; no backups
      completion-ignored-extensions '(".class" ".cp" ".elc" ".fmt" ".git/" ".pyc" ".so" "~"))

;; Use UTF-8 everywhere
(prefer-coding-system       'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)

(use-package recentf
  :custom
  (recentf-max-saved-items 2000)
  (recentf-max-menu-items  200)
  (recentf-exclude
   '("~\\'" "\\`out\\'" "\\.log\\'" "^/[^/]*:" "\\.el\\.gz\\'" "\\.gz\\'"))
  :config
  (recentf-mode t))

(use-package savehist
  :config
  (savehist-mode t))

(use-package saveplace
  :config
  (save-place-mode t))

(use-package autorevert
  :custom
  (auto-revert-use-notify nil)
  :config
  (global-auto-revert-mode t))

(global-set-key (kbd "M-j") 'join-line)

(use-package which-key
  :diminish
  :ensure t
  :hook (after-init . which-key-mode))

(use-package imenu
  :config
  (setq imenu-auto-rescan t))

(when (memq window-system '(mac ns))
  (add-to-list 'default-frame-alist '(fullscreen . maximized))
  (add-to-list 'default-frame-alist '(ns-appearance . nil))
  (add-to-list 'default-frame-alist '(ns-transparent-titlebar . nil)))

(use-package exec-path-from-shell
  :ensure t
  :demand t
  :if (memq window-system '(mac ns))
  :config
  (exec-path-from-shell-initialize)
  :custom
  (exec-path-from-shell-variables '("ASPELL_CONF")))

(use-package ibuffer
  :defer t
  :bind ("C-x C-b" . ibuffer)
  :custom
  (ibuffer-expert t)
  (ibuffer-show-empty-filter-groups nil)
  (ibuffer-jump-offer-only-visible-buffers t)
  (ibuffer-maybe-show-predicates '("^\\*.*\\*$"))
  (ibuffer-never-show-predicates '("^ "))
  (ibuffer-use-other-window t))

(use-package midnight
  :defer t
  :custom
  ;; every 6 hours
  (midnight-period (* 3600 6)))

(use-package dired
  :ensure nil
  :defer t
  :config
  (setq dired-omit-files "^__pycache__$")
  :custom
  (dired-use-ls-dired t)
  (insert-directory-program "/etc/profiles/per-user/fcuny/bin/ls")
  (dired-clean-up-buffers-too nil)
  (dired-dwim-target t)
  (dired-hide-details-hide-information-lines nil)
  (dired-hide-details-hide-symlink-targets nil)
  (dired-recursive-copies 'always)
  (dired-recursive-deletes 'always)
  (dired-no-confirm
   '(byte-compile chgrp chmod chown copy hardlink symlink touch)))

(use-package dired-x
  :after dired
  :hook ((dired-mode . dired-omit-mode)))

(defun my/rename-this-buffer-and-file ()
  "Renames current buffer and file it is visiting."
  (interactive)
  (let ((name (buffer-name))
        (filename (buffer-file-name))
        (read-file-name-function 'read-file-name-default))
    (if (not (and filename (file-exists-p filename)))
        (error "Buffer '%s' is not visiting a file!" name)
      (let ((new-name (read-file-name "New name: " filename)))
        (cond ((get-buffer new-name)
               (error "A buffer named '%s' already exists!" new-name))
              (t
               (rename-file filename new-name 1)
               (rename-buffer new-name)
               (set-visited-file-name new-name)
               (set-buffer-modified-p nil)
               (message "File '%s' successfully renamed to '%s'" name (file-name-nondirectory new-name))))))))

(provide 'init-base)

;;; init-base.el ends here