| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- ;;; kkk-initial.el --- Initial config of Emacs -*- lexical-binding: t; -*-
- ;; Copyright (C) 2023 Vinicius Teshima <vini.tes@pm.me>
- ;; Author: Vinicius Teshima <vini.tes@pm.me>
- ;; 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
- ;; the Free Software Foundation, either version 3 of the License, or
- ;; (at your option) any later version.
- ;; This program is distributed in the hope that it will be useful,
- ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
- ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ;; GNU General Public License for more details.
- ;; You should have received a copy of the GNU General Public License
- ;; along with this program. If not, see <https://www.gnu.org/licenses/>.
- ;;; Commentary:
- ;; This will set the basic config of Emacs
- ;;; Code:
- (defgroup kkk-initial nil
- "Initial Tweaks to Emacs."
- :group 'kkk-emacs)
- (defun kkk--display-startup-time()
- "Display the time it took for Emacs to start."
- (message "Emacs loaded in %s with %d garbage collection."
- (format "%.2f seconds"
- (float-time
- (time-subtract after-init-time before-init-time)))
- gcs-done))
- (add-hook 'emacs-startup-hook #'kkk--display-startup-time)
- ;; This is the default
- ;; (setq-default indent-tabs-mode t) ; Use Tabs as indentation
- ;; (setq-default tab-width 8) ; Setting the size of Tabs
- (setq inhibit-startup-message t) ; Disable Startup Message
- (setq visible-bell t) ; Use Visible Bell instead of Audible
- (setq use-dialog-box nil) ; Don't use gtk dialog box
- (menu-bar-mode -1) ; Disable Menu Bar
- ;; Disable various things if is in an Graphical Environment
- (when (display-graphic-p)
- (scroll-bar-mode -1) ; Removing scrollbar
- (tool-bar-mode -1)
- (tooltip-mode -1)
- (set-fringe-mode 10) ; Sets the fringe size to 10px
- )
- (global-display-fill-column-indicator-mode 't)
- (setq-default fill-column 80)
- ;; Auto Revert Mode:
- (require 'autorevert)
- (global-auto-revert-mode t)
- (setq global-auto-revert-non-file-buffers 't)
- ;; Numbered Lines:
- (require 'kkk-linenumbers)
- (setq kkk-linenumbers-global-modes '(not
- term-mode eshell-mode vterm-mode
- magit-status-mode magit-revision-mode
- magit-diff-mode magit-log-mode
- magit-blob-mode magit-refs-mode
- magit-blame-mode eww-mode
- help-mode helpful-mode))
- (setq kkk-linenumbers-type 'visual)
- (global-kkk-linenumbers-mode t)
- ;; Whitespace Mode:
- (require 'kkk-whitespace)
- (setq kkk-whitespace-global-modes '(not
- term-mode shell-mode eshell-mode vterm-mode
- magit-status-mode magit-revision-mode
- magit-diff-mode magit-log-mode
- magit-blob-mode magit-refs-mode
- magit-log-select-mode Man-mode
- magit-blame-mode eww-mode Custom-Mode
- help-mode helpful-mode Buffer-menu-mode
- compilation-mode vc-mode vc-dir-mode
- notmuch-search-mode notmuch-hello-mode
- notmuch-show-mode gud-mode grep-mode
- flycheck-error-list-mode dired-mode
- xref--xref-buffer-mode))
- (setq whitespace-style '(face tabs spaces trailing lines-tail space-before-tab
- newline indentation empty space-after-tab
- space-mark tab-mark newline-mark
- missing-newline-at-eof))
- ;;; To be only ascii
- ;; (setq whitespace-display-mappings
- ;; '((space-mark ?\s [?.] [183]) (space-mark 160 [164] [95])
- ;; (newline-mark ?\n [?$ ?\n]) (tab-mark ?\t [?> ?\t])))
- (global-kkk-whitespace-mode t)
- (setq tab-bar-close-button nil)
- (setq tab-bar-new-button-show nil)
- ;; (setq max-lisp-eval-depth (* 1024 8)) ; Increase the eval depth
- (electric-pair-mode t)
- (show-paren-mode t)
- (setq show-paren-style 'mixed)
- (column-number-mode t)
- (display-battery-mode t)
- (savehist-mode t)
- (add-hook 'find-file-hook #'auto-insert)
- (add-hook 'prog-mode #'glasses-mode)
- (setq auth-source-save-behavior nil)
- (when (display-graphic-p)
- (require 'kkk-font)
- ;; (setq kkk-font-default-font "Comic Mono")
- (setq kkk-font-default-font "Unifont")
- (setq kkk-font-fixed-font "Unifont")
- (setq kkk-font-variable-font "Unifont")
- (when (string= (system-name) "i7.dp.lat")
- (setq kkk-font-default-font-size 105))
- (add-hook 'emacs-startup-hook #'kkk-font-set)
- (add-hook 'ef-themes-post-load-hook #'kkk-font-set)
- )
- (load-theme 'modus-vivendi)
- (require 'kkk-eshell)
- (require 'kkk-keepclean)
- ;; (require 'kkk-package)
- ;; (require 'kkk-exwm)
- ;; (require 'kkk-killbuffer)
- (require 'kkk-windowsize)
- (require 'kkk-abbrev)
- ;; Setting up to use tree-sitter by default. Stolen from:
- ;; https://www.masteringemacs.org/article/how-to-get-started-tree-sitter
- ;; (setq major-mode-remap-alist
- ;; '((yaml-mode . yaml-ts-mode)
- ;; (bash-mode . bash-ts-mode)
- ;; (js2-mode . js-ts-mode)
- ;; (typescript-mode . typescript-ts-mode)
- ;; (json-mode . json-ts-mode)
- ;; (css-mode . css-ts-mode)
- ;; (python-mode . python-ts-mode)))
- (require 'kkk-scratch)
- (global-unset-key (kbd "C-x s"))
- (global-set-key (kbd "C-x s b") #'kkk-scratch-buffer-dwim)
- (global-set-key (kbd "C-x s x v") #'kkk-scratch-vterm-dwim)
- (global-set-key (kbd "C-x s x e") #'kkk-scratch-eshell-dwim)
- (global-set-key (kbd "<escape>") #'keyboard-escape-quit)
- (global-set-key (kbd "C-x m") #'man)
- (global-set-key (kbd "M-p") #'isearch-ring-retreat)
- (global-set-key (kbd "M-n") #'isearch-ring-advance)
- (global-set-key (kbd "C-t") #'transpose-chars)
- (defun kkk--pre-angle-brackets (base extra-string)
- "Generate an uniquify name. <EXTRA-STRING> BASE."
- (setq tmp extra-string)
- (concat "<" (mapconcat #'identity extra-string "/") ">" base))
- (setq uniquify-buffer-name-style #'kkk--pre-angle-brackets)
- (setq reb-re-syntax 'rx)
- ;; (defconst kkk-gomode-dir
- ;; (locate-user-emacs-file "gitrepos/go-mode.el")
- ;; ".")
- ;; (add-to-list 'load-path kkk-gomode-dir)
- ;; (autoload 'go-mode "go-mode" nil t)
- ;; (add-to-list 'auto-mode-alist '("\\.go\\'" . go-mode))
- ;; (defconst kkk-reformatter-dir
- ;; (locate-user-emacs-file "gitrepos/emacs-reformatter")
- ;; ".")
- ;; (add-to-list 'load-path kkk-reformatter-dir)
- ;; (require 'reformatter)
- ;; (defconst kkk-zigmode-dir
- ;; (locate-user-emacs-file "gitrepos/zig-mode")
- ;; ".")
- ;; (add-to-list 'load-path kkk-zigmode-dir)
- ;; (autoload 'zig-mode "zig-mode" nil t)
- ;; (add-to-list 'auto-mode-alist '("\\.zig\\'" . zig-mode))
- ;; (defconst kkk-fasmmode-dir
- ;; (locate-user-emacs-file "gitrepos/fasm-mode")
- ;; ".")
- ;; (add-to-list 'load-path kkk-fasmmode-dir)
- ;; (autoload 'fasm-mode "fasm-mode" nil t)
- (require 'package)
- (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
- (setq package-selected-packages '(helpful ##))
- (global-set-key (kbd "C-h f") #'helpful-callable)
- (global-set-key (kbd "C-h v") #'helpful-variable)
- (global-set-key (kbd "C-h k") #'helpful-key)
- (global-set-key (kbd "C-h x") #'helpful-command)
- (fido-mode 1)
- (require 'ispell)
- (setq ispell-program-name "aspell")
- (require 'flyspell)
- (setq flyspell-issue-message-flag nil)
- (global-set-key (kbd "M-o") #'complete-tag)
- ;;(global-set-key (kbd "M-/") #'hippie-expand)
- (global-set-key (kbd "M-/") #'dabbrev-expand)
- (global-set-key (kbd "C-j") #'join-line)
- (global-set-key (kbd "C-%") #'xref-find-references-and-replace)
- (setq c-default-style
- '((java-mode . "java") (awk-mode . "awk") (other . "linux")))
- (global-subword-mode +1)
- ;; (hs-minor-mode +1)
- (defun narrow-clone(&optional DISPLAY-FLAG)
- (interactive)
- (let ((name "Unknown")
- (line_str (thing-at-point 'line))
- (call_start (point))
- (start (point-min))
- (end (point-max))
- (new_buf nil))
- (save-excursion
- ;; DoWhile
- (while
- (progn
- (forward-line -1)
- (setq line_str (thing-at-point 'line))
- (and (not (string-prefix-p "//== " line_str))
- (/= (point-min) (point)))
- )
- )
- (forward-line 1)
- (setq start (point))
- )
- (when (string-prefix-p "//== " line_str)
- (setq name (string-trim (cadr (string-split line_str " "))))
- )
- (save-excursion
- (forward-line 1)
- (setq line_str (thing-at-point 'line))
- (while (and (not (string-prefix-p "//== " line_str))
- (/= (point-max) (point)))
- (forward-line 1)
- (setq line_str (thing-at-point 'line))
- )
- (setq end (point))
- )
- (setq new_buf (clone-indirect-buffer name nil))
- (save-excursion
- (set-buffer new_buf)
- (narrow-to-region start end)
- )
- (when (not DISPLAY-FLAG)
- (switch-to-buffer new_buf))
- end
- )
- )
- (defun narrow-clone-buffer()
- (interactive)
- (goto-char (point-min))
- (let ((end (narrow-clone t)))
- (while (/= (point-max) end)
- (forward-line 1)
- (setq end (narrow-clone t))
- )
- )
- )
- ;; Stolen from (http://endlessparentheses.com/ansi-colors-in-the-compilation-buffer-output.html)
- (require 'ansi-color)
- (defun endless/colorize-compilation ()
- "Colorize from `compilation-filter-start' to `point'."
- (let ((inhibit-read-only t))
- (ansi-color-apply-on-region
- compilation-filter-start (point))))
- (add-hook 'compilation-filter-hook
- #'endless/colorize-compilation)
- ;; Stolen from (https://oleksandrmanzyuk.wordpress.com/2011/11/05/better-emacs-shell-part-i/)
- (defun regexp-alternatives (regexps)
- "Return the alternation of a list of regexps."
- (mapconcat (lambda (regexp)
- (concat "\\(?:" regexp "\\)"))
- regexps "\\|"))
- (defvar non-sgr-control-sequence-regexp nil
- "Regexp that matches non-SGR control sequences.")
- (setq non-sgr-control-sequence-regexp
- (regexp-alternatives
- '(;; icon name escape sequences
- "\033\\][0-2];.*?\007"
- ;; non-SGR CSI escape sequences
- "\033\\[\\??[0-9;]*[^0-9;m]"
- ;; noop
- "\012\033\\[2K\033\\[1F"
- )))
- (defun filter-non-sgr-control-sequences-in-region (begin end)
- (save-excursion
- (goto-char begin)
- (while (re-search-forward
- non-sgr-control-sequence-regexp end t)
- (replace-match ""))))
- (defun filter-non-sgr-control-sequences-in-output (ignored)
- (let ((start-marker
- (or comint-last-output-start
- (point-min-marker)))
- (end-marker
- (process-mark
- (get-buffer-process (current-buffer)))))
- (filter-non-sgr-control-sequences-in-region
- start-marker
- end-marker)))
- (add-hook 'comint-output-filter-functions
- 'filter-non-sgr-control-sequences-in-output)
- (require 'hare-mode)
- (provide 'kkk-initial)
- ;;; kkk-initial.el ends here
|