mirror of
http://github.com/JaeUs3792/dotfiles
synced 2025-12-13 23:51:34 +09:00
Emacs : completion done.
This commit is contained in:
26
.config/emacs/config.el
Executable file → Normal file
26
.config/emacs/config.el
Executable file → Normal file
@ -1,12 +1,14 @@
|
||||
;;; config.el -*- lexical-binding: t; -*-
|
||||
(setq user-full-name "JaeYoo-Im"
|
||||
user-mail-address "cpu3792@gmail.com")
|
||||
|
||||
(add-to-list 'default-frame-alist `(font . "Fira Code Retina"))
|
||||
(set-face-attribute 'default nil :font "Fira Code Retina" :height 12)
|
||||
(set-face-attribute 'fixed-pitch nil :font "Fira Code Retina" :height 12)
|
||||
(set-face-attribute 'variable-pitch nil :font "Fira Code Retina" :height 12 :weight 'regular)
|
||||
(set-fontset-font t 'hangul (font-spec :family "NanumGothic" :height 12))
|
||||
|
||||
(require 'custom-ui)
|
||||
(require 'custom-keybindings)
|
||||
;;; config.el -*- lexical-binding: t; -*-
|
||||
(setq user-full-name "JaeYoo-Im"
|
||||
user-mail-address "cpu3792@gmail.com")
|
||||
|
||||
(add-to-list 'default-frame-alist `(font . "Fira Code Retina"))
|
||||
(set-face-attribute 'default nil :font "Fira Code Retina" :height 12)
|
||||
(set-face-attribute 'fixed-pitch nil :font "Fira Code Retina" :height 12)
|
||||
(set-face-attribute 'variable-pitch nil :font "Fira Code Retina" :height 12 :weight 'regular)
|
||||
(set-fontset-font t 'hangul (font-spec :family "NanumGothic" :height 12))
|
||||
|
||||
(require 'custom-ui)
|
||||
(require 'custom-keybindings)
|
||||
(require 'custom-org)
|
||||
(require 'custom-completion)
|
||||
|
||||
41
.config/emacs/early-init.el
Executable file → Normal file
41
.config/emacs/early-init.el
Executable file → Normal file
@ -1,21 +1,20 @@
|
||||
;;; early-init.el -*- lexical-binding: t; -*-
|
||||
;; garbage collection
|
||||
(setq gc-cons-threshold (* 50 1024 1024)) ;; 50MB
|
||||
;; prefers newest version of a file
|
||||
(customize-set-variable 'load-prefer-newer t)
|
||||
|
||||
(setq package-enable-at-startup nil
|
||||
inhibit-startup-message t
|
||||
frame-resize-pixelwise t
|
||||
package-native-compile t)
|
||||
(scroll-bar-mode -1)
|
||||
(tool-bar-mode -1)
|
||||
(tooltip-mode -1)
|
||||
(set-fringe-mode 10)
|
||||
(menu-bar-mode -1)
|
||||
;;(blink-cursor-mode 0)
|
||||
|
||||
;; initial load with blue theme
|
||||
(load-theme 'deeper-blue)
|
||||
|
||||
(customize-set-variable 'initial-major-mode 'fundamental-mode)
|
||||
;;; early-init.el -*- lexical-binding: t; -*-
|
||||
;; garbage collection
|
||||
(setq gc-cons-threshold (* 50 1024 1024)) ;; 50MB
|
||||
;; prefers newest version of a file
|
||||
(customize-set-variable 'load-prefer-newer t)
|
||||
|
||||
(setq package-enable-at-startup nil
|
||||
inhibit-startup-message t frame-resize-pixelwise t
|
||||
package-native-compile t)
|
||||
(scroll-bar-mode -1)
|
||||
(tool-bar-mode -1)
|
||||
(tooltip-mode -1)
|
||||
(set-fringe-mode 10)
|
||||
(menu-bar-mode -1)
|
||||
;;(blink-cursor-mode 0)
|
||||
|
||||
;; initial load with blue theme
|
||||
(load-theme 'deeper-blue)
|
||||
|
||||
(customize-set-variable 'initial-major-mode 'fundamental-mode)
|
||||
|
||||
630
.config/emacs/emacs.org
Executable file
630
.config/emacs/emacs.org
Executable file
@ -0,0 +1,630 @@
|
||||
#+title: Emacs Configuration
|
||||
|
||||
* Basic Configuration
|
||||
Emacs Configuration for emacs 29.50
|
||||
** Early Init
|
||||
#+begin_src emacs-lisp :tangle ~/.config/emacs/early-init.el
|
||||
;;; early-init.el -*- lexical-binding: t; -*-
|
||||
;; garbage collection
|
||||
(setq gc-cons-threshold (* 50 1024 1024)) ;; 50MB
|
||||
;; prefers newest version of a file
|
||||
(customize-set-variable 'load-prefer-newer t)
|
||||
|
||||
(setq package-enable-at-startup nil
|
||||
inhibit-startup-message t frame-resize-pixelwise t
|
||||
package-native-compile t)
|
||||
(scroll-bar-mode -1)
|
||||
(tool-bar-mode -1)
|
||||
(tooltip-mode -1)
|
||||
(set-fringe-mode 10)
|
||||
(menu-bar-mode -1)
|
||||
;;(blink-cursor-mode 0)
|
||||
|
||||
;; initial load with blue theme
|
||||
(load-theme 'deeper-blue)
|
||||
|
||||
(customize-set-variable 'initial-major-mode 'fundamental-mode)
|
||||
|
||||
#+end_src
|
||||
|
||||
** Init
|
||||
*** Startup hook
|
||||
#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el
|
||||
;;; init.el -*- lexical-binding: t; -*-
|
||||
(add-hook 'emacs-startup-hook
|
||||
(lambda ()
|
||||
(message "Crafted Emacs loaded in %s"
|
||||
(emacs-init-time))))
|
||||
#+end_src
|
||||
*** Straight
|
||||
#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("stable" . "https://stable.melpa.org/packages/"))
|
||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
|
||||
(defvar bootstrap-version)
|
||||
(let ((bootstrap-file
|
||||
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
|
||||
(bootstrap-version 5))
|
||||
(unless (file-exists-p bootstrap-file)
|
||||
(with-current-buffer
|
||||
(url-retrieve-synchronously
|
||||
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
|
||||
'silent 'inhibit-cookies)
|
||||
(goto-char (point-max))
|
||||
(eval-print-last-sexp)))
|
||||
(load bootstrap-file nil 'nomessage))
|
||||
(setq straight-use-package-by-default t)
|
||||
(package-initialize)
|
||||
(unless package-archive-contents
|
||||
(package-refresh-contents))
|
||||
#+end_src
|
||||
*** Add other modules
|
||||
#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el
|
||||
(add-to-list 'load-path (expand-file-name "modules/" user-emacs-directory))
|
||||
#+end_src
|
||||
*** Edit options
|
||||
**** Whitespace clean
|
||||
#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el
|
||||
(add-hook 'before-save-hook #'whitespace-cleanup)
|
||||
#+end_src
|
||||
**** Tabs
|
||||
#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el
|
||||
(setq-default indent-tabs-mode nil)
|
||||
(setq-default tab-width 4)
|
||||
#+end_src
|
||||
|
||||
협업에 있어서 코드에 tabs 크기를 명시하는 것도 방법일듯.
|
||||
***** Modeline Indentation example
|
||||
- Emacs
|
||||
#+begin_src rust
|
||||
/* -*- Mode: rust; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
#+end_src
|
||||
- Vim
|
||||
#+begin_src shell
|
||||
# Embeded VIM Configurations
|
||||
# vim: filetype=sh noet sw=4 ts=4 fdm=marker
|
||||
#+end_src
|
||||
- Visual Studio Code
|
||||
install extension =modeline=.
|
||||
#+begin_src javascript
|
||||
// vim: set ft=js ts=4 sw=4 et:
|
||||
// vim: ts=4:sw=4:et:ft=js
|
||||
// -*- mode: js; indent-tabs-mode: nil; tab-width: 4 -*-
|
||||
// code: language=rust insertSpaces=false tabSize=4
|
||||
#+end_src
|
||||
**** Line number
|
||||
#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el
|
||||
(column-number-mode)
|
||||
(global-display-line-numbers-mode t)
|
||||
;; Disable line numbers for some modes
|
||||
(dolist (mode '(org-mode-hook
|
||||
shell-mode-hook
|
||||
treemacs-mode-hook
|
||||
dired-mode-hook
|
||||
eshell-mode-hook))
|
||||
(add-hook mode (lambda () (display-line-numbers-mode 0))))
|
||||
#+end_src
|
||||
|
||||
*** Backup options
|
||||
#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el
|
||||
(setq backup-directory-alist `(("." . ,(expand-file-name "backups/" user-emacs-directory))))
|
||||
(setq-default custom-file (expand-file-name ".custom.el" user-emacs-directory))
|
||||
(when (file-exists-p custom-file)
|
||||
(load custom-file))
|
||||
(setq delete-by-moving-to-trash t
|
||||
trash-directory "~/.local/share/Trash/files/")
|
||||
(setq undo-limit 100000000
|
||||
auto-save-default t)
|
||||
(use-package no-littering)
|
||||
(setq auto-save-file-name-transforms
|
||||
`((".*" ,(no-littering-expand-var-file-name "auto-save/") t)))
|
||||
#+end_src
|
||||
|
||||
*** Other options
|
||||
#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el
|
||||
(set-default-coding-systems 'utf-8)
|
||||
(customize-set-variable 'large-file-warning-threshold 100000000) ;; 100MB
|
||||
|
||||
(defconst ON-LINUX (eq system-type 'gnu/linux))
|
||||
(defconst ON-MAC (eq system-type 'darwin))
|
||||
(defconst ON-WINDOWS (memq system-type '(cygwin windows-nt ms-dos)))
|
||||
|
||||
(setq gc-cons-threshold (* 2 1024 1024)) ; decreasing the threshold to 2MB
|
||||
|
||||
(defvar my-config-file (expand-file-name "config.el" user-emacs-directory))
|
||||
(when (file-exists-p my-config-file)
|
||||
(load my-config-file nil 'nomessage))
|
||||
|
||||
;;(defalias 'yes-or-no-p 'y-or-n-p)
|
||||
(global-auto-revert-mode t)
|
||||
|
||||
#+end_src
|
||||
* Modules Selection module
|
||||
#+begin_src emacs-lisp :tangle ~/.config/emacs/config.el
|
||||
;;; config.el -*- lexical-binding: t; -*-
|
||||
(setq user-full-name "JaeYoo-Im"
|
||||
user-mail-address "cpu3792@gmail.com")
|
||||
|
||||
(add-to-list 'default-frame-alist `(font . "Fira Code Retina"))
|
||||
(set-face-attribute 'default nil :font "Fira Code Retina" :height 12)
|
||||
(set-face-attribute 'fixed-pitch nil :font "Fira Code Retina" :height 12)
|
||||
(set-face-attribute 'variable-pitch nil :font "Fira Code Retina" :height 12 :weight 'regular)
|
||||
(set-fontset-font t 'hangul (font-spec :family "NanumGothic" :height 12))
|
||||
|
||||
(require 'custom-ui)
|
||||
(require 'custom-keybindings)
|
||||
(require 'custom-org)
|
||||
(require 'custom-completion)
|
||||
#+end_src
|
||||
|
||||
** Module Lists
|
||||
*** UI
|
||||
**** Doom themes
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-ui.el
|
||||
(use-package doom-themes)
|
||||
(if (display-graphic-p)
|
||||
(load-theme 'doom-palenight t)
|
||||
(load-theme 'doom-gruvbox t))
|
||||
#+end_src
|
||||
**** Rainbow Delimiters
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-ui.el
|
||||
(use-package rainbow-delimiters
|
||||
:hook (prog-mode . rainbow-delimiters-mode))
|
||||
#+end_src
|
||||
**** Setting Transparency
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-ui.el
|
||||
(setq visible-bell t)
|
||||
(set-frame-parameter nil 'alpha-background 0.9)
|
||||
(add-to-list 'default-frame-alist '(alpha-background . 0.9))
|
||||
(defun toggle-transparency ()
|
||||
"toggle transparency."
|
||||
(interactive)
|
||||
(let ((alpha-transparency 1.0))
|
||||
(if (eq (frame-parameter nil 'alpha-background) alpha-transparency)
|
||||
(set-frame-parameter nil 'alpha-background 0.9)
|
||||
(set-frame-parameter nil 'alpha-background alpha-transparency))))
|
||||
(defun my/transparency-round (val)
|
||||
"Round VAL to the nearest tenth of an integer."
|
||||
(/ (round (* 10 val)) 10.0))
|
||||
|
||||
(defun my/increase-frame-alpha-background ()
|
||||
"Increase current frame’s alpha background."
|
||||
(interactive)
|
||||
(set-frame-parameter nil
|
||||
'alpha-background
|
||||
(my/transparency-round
|
||||
(min 1.0
|
||||
(+ (frame-parameter nil 'alpha-background) 0.1))))
|
||||
(message "%s" (frame-parameter nil 'alpha-background)))
|
||||
|
||||
(defun my/decrease-frame-alpha-background ()
|
||||
"Decrease current frame’s alpha background."
|
||||
(interactive)
|
||||
(set-frame-parameter nil
|
||||
'alpha-background
|
||||
(my/transparency-round
|
||||
(max 0.0
|
||||
(- (frame-parameter nil 'alpha-background) 0.1))))
|
||||
(message "%s" (frame-parameter nil 'alpha-background)))
|
||||
|
||||
#+end_src
|
||||
**** Modeline
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-ui.el
|
||||
(use-package all-the-icons)
|
||||
(use-package doom-modeline
|
||||
:init
|
||||
(doom-modeline-mode 1)
|
||||
:config
|
||||
(setq doom-modeline-height 15
|
||||
doom-modeline-env-version t
|
||||
doom-modeline-indent-info t))
|
||||
#+end_src
|
||||
**** Whiteroom
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-ui.el
|
||||
(use-package writeroom-mode
|
||||
:disabled
|
||||
:defer t
|
||||
:straight (:build t)
|
||||
:init (global-writeroom-mode 1)
|
||||
:config
|
||||
(setq writeroom-width 100
|
||||
writeroom-fullscreen-effect nil
|
||||
writeroom-maximize-window nil
|
||||
writeroom-mode-line t
|
||||
writeroom-major-modes '(text-mode org-mode markdown-mode nov-mode Info-mode)))
|
||||
#+end_src
|
||||
**** Visual Fill Column
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-ui.el
|
||||
(defun write-room-enable ()
|
||||
(setq visual-fill-column-width 100
|
||||
visual-fill-column-center-text t)
|
||||
(visual-fill-column-mode 1))
|
||||
(use-package visual-fill-column
|
||||
:hook
|
||||
(org-mode . write-room-enable)
|
||||
(text-mode . write-room-enable)
|
||||
(markdown-mode . write-room-enable)
|
||||
(nov-mode . write-room-enable))
|
||||
#+end_src
|
||||
|
||||
**** Dashboard
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-ui.el
|
||||
(use-package page-break-lines)
|
||||
(use-package dashboard
|
||||
:init ;; tweak dashboard config before loading it
|
||||
(setq dashboard-projects-backend "project-el"
|
||||
dashboard-set-heading-icons t
|
||||
dashboard-set-file-icons t
|
||||
dashboard-center-content t ;; set to 't' for centered content
|
||||
dashboard-items '((recents . 10)
|
||||
(bookmarks . 5))
|
||||
;;(projects . 10)))
|
||||
dashboard-set-footer t
|
||||
dashboard-page-separator "\n\f\n"
|
||||
dashboard-startup-banner 'logo ;; use standard emacs logo as banner
|
||||
dashboard-set-navigator t)
|
||||
|
||||
;;(setq dashboard-startup-banner "~/.config/doom/doom-emacs-dash.png") ;; use custom image as banner
|
||||
;; Format: "(icon title help action face prefix suffix)"
|
||||
(setq dashboard-navigator-buttons
|
||||
`(;; line1
|
||||
((,(all-the-icons-octicon "mark-github" :height 1.1 :v-adjust 0.0)
|
||||
"Github"
|
||||
"Browse my Github"
|
||||
(lambda (&rest _) (browse-url "https://github.com/JaeUs3792/")))
|
||||
(,(all-the-icons-octicon "home" :height 1.1 :v-adjust 0.0)
|
||||
"Homepage"
|
||||
"Browse my Homepage"
|
||||
(lambda (&rest _) (browse-url "https://jaeus.net"))))))
|
||||
:config
|
||||
(dashboard-setup-startup-hook)
|
||||
(dashboard-modify-heading-icons '((recents . "file-text")
|
||||
(bookmarks . "book"))))
|
||||
(setq doom-fallback-buffer-name "*dashboard*")
|
||||
|
||||
#+end_src
|
||||
|
||||
**** Others
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-ui.el
|
||||
(defun self-screenshot (&optional type)
|
||||
"Save a screenshot of type TYPE of the current Emacs frame.
|
||||
As shown by the function `', type can weild the value `svg',
|
||||
`png', `pdf'.
|
||||
|
||||
This function will output in /tmp a file beginning with \"Emacs\"
|
||||
and ending with the extension of the requested TYPE."
|
||||
(interactive)
|
||||
(let* ((type (if type type
|
||||
(intern (completing-read "Screenshot Type: "
|
||||
'(png svg pdf postscript)))))
|
||||
(extension (pcase type
|
||||
('png ".png")
|
||||
('svg ".svg")
|
||||
('pdf ".pdf")
|
||||
('postscript ".ps")
|
||||
(otherwise (error "Cannot export screenshot of type %s" otherwise))))
|
||||
(filename (make-temp-file "Emacs-" nil extension))
|
||||
(data (x-export-frames nil type)))
|
||||
(with-temp-file filename
|
||||
(insert data))
|
||||
(kill-new filename)
|
||||
(rename-file filename (expand-file-name (file-name-nondirectory filename) "~"))
|
||||
(message filename)))
|
||||
#+end_src
|
||||
|
||||
**** Provide Modules
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-ui.el
|
||||
(provide 'custom-ui)
|
||||
;;; custom-ui.el ends here
|
||||
#+end_src
|
||||
|
||||
*** Key Bindings
|
||||
**** Global Key
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-keybindings.el
|
||||
(global-set-key (kbd "C-c t") 'toggle-transparency)
|
||||
#+end_src
|
||||
**** Which keys
|
||||
When you begin a keybind, whichkey will show you all keybinds you can follow the first one with in order to form a full keywords.
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-keybindings.el
|
||||
(use-package which-key
|
||||
:defer t
|
||||
:init (which-key-mode)
|
||||
:diminish which-key-mode
|
||||
:config
|
||||
(setq which-key-idle-delay 0.5))
|
||||
#+end_src
|
||||
**** General
|
||||
for managing keybindings.
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-keybindings.el
|
||||
(use-package general
|
||||
:init
|
||||
(general-auto-unbind-keys)
|
||||
:config
|
||||
(general-evil-setup t)
|
||||
(general-create-definer ju/leader-key-def
|
||||
:keymaps '(normal insert visual emacs)
|
||||
:prefix "SPC"
|
||||
:global-prefix "C-SPC"))
|
||||
|
||||
(ju/leader-key-def
|
||||
"." 'find-file
|
||||
;; Buffer
|
||||
"b" '(:ignore t :which-key "buffer handling")
|
||||
"b i" '(ibuffer :which-key "IBuffer")
|
||||
"b r" '(revert-buffer :which-key "Revert Buffer")
|
||||
"b k" '(kill-current-buffer :which-key "Kill current buffer")
|
||||
"b n" '(next-buffer :which-key "Next buffer")
|
||||
"b p" '(previous-buffer :which-key "Previous buffer")
|
||||
"b B" '(ibuffer-list-buffers :which-key "IBuffer List Buffers")
|
||||
"b K" '(kill-buffer :which-key "IBuffer Kill Buffers")
|
||||
;; Eshell
|
||||
"e" '(:ignore t :which-key "eshell")
|
||||
"e h" '(counsel-esh-history :which "Kill history")
|
||||
"e s" '(eshell :which "run eshell")
|
||||
;; Workspace
|
||||
;; Counsel
|
||||
"f" '(:ignore t :which-key "file op.")
|
||||
"f r" '(consult-recent-file :which-key "Recent files")
|
||||
"t t" '(toggle-truncate-lines :which-key "Toggle truncate lines")
|
||||
;; Shortcut
|
||||
"f o d" '((lambda () (interactive) (find-file (expand-file-name "~/.config/emacs/desktop.org"))) :which-key "open exwm config")
|
||||
"f o p" '((lambda () (interactive) (find-file (expand-file-name "~/org/example/emacs_my_previous.org"))) :which-key "open exwm config")
|
||||
"f o e" '((lambda () (interactive) (find-file (expand-file-name "~/org/example/emacs_another.org"))) :which-key "open exwm config")
|
||||
"f o c" '((lambda () (interactive) (find-file (expand-file-name "~/.config/emacs/emacs.org"))) :which-key "open emacs config")
|
||||
;; Hydra
|
||||
"h" '(:ignore t :which-key "hydra")
|
||||
"h t" '(hydra-text-scale/body :which-key "scale text")
|
||||
"h w" '(hydra-writeroom-scale/body :which-key "scale whiteroom")
|
||||
"h a" '(hydra-modify-alpha/body :which-key "modify alpha background"))
|
||||
#+end_src
|
||||
**** Evil Mode
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-keybindings.el
|
||||
(use-package evil
|
||||
:after (general)
|
||||
:init
|
||||
(setq evil-want-integration t
|
||||
evil-want-keybinding nil
|
||||
evil-want-C-u-scroll t
|
||||
evil-want-C-i-jump nil)
|
||||
(require 'evil-vars)
|
||||
(evil-set-undo-system 'undo-tree)
|
||||
:config
|
||||
(evil-mode 1)
|
||||
(setq evil-want-fine-undo t) ; more granular undo with evil
|
||||
(evil-set-initial-state 'messages-buffer-mode 'normal)
|
||||
(evil-set-initial-state 'dashboard-mode 'normal))
|
||||
(use-package evil-collection
|
||||
:after evil
|
||||
:ensure t
|
||||
:config
|
||||
(evil-collection-init))
|
||||
(use-package undo-tree
|
||||
:init
|
||||
(global-undo-tree-mode)
|
||||
(setq undo-tree-visualizer-diff t
|
||||
undo-tree-visualizer-timestamps t)
|
||||
undo-tree-auto-save-history t
|
||||
undo-tree-enable-undo-in-region t
|
||||
undo-limit (* 800 1024)
|
||||
undo-strong-limit (* 12 1024 1024)
|
||||
undo-outer-limit (* 128 1024 1024))
|
||||
#+end_src
|
||||
**** Hydra
|
||||
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-keybindings.el
|
||||
(use-package hydra
|
||||
:defer t)
|
||||
|
||||
(defhydra hydra-text-scale (:timeout 4)
|
||||
"scale text"
|
||||
("t" text-scale-increase "in")
|
||||
("s" text-scale-decrease "out")
|
||||
("q" nil "finished" :exit t))
|
||||
(defhydra hydra-writeroom-scale (:timeout 4)
|
||||
"scale whiteroom"
|
||||
("t" writeroom-increase-width "enlarge")
|
||||
("s" writeroom-decrease-width "shrink")
|
||||
("r" writeroom-adjust-width "adjust")
|
||||
("q" nil "finished" :exit t))
|
||||
(defhydra hydra-modify-alpha ()
|
||||
("q" nil :exit t)
|
||||
("s" my/decrease-frame-alpha-background)
|
||||
("t" my/increase-frame-alpha-background))
|
||||
#+end_src
|
||||
|
||||
**** Provide Modules
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-keybindings.el
|
||||
(provide 'custom-keybindings)
|
||||
;;; custom-keybindings.el ends here
|
||||
#+end_src
|
||||
|
||||
*** Completion
|
||||
config from crafted-emacs
|
||||
https://github.com/SystemCrafter/crafted-emacs
|
||||
**** Vertico
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-completion.el
|
||||
(use-package vertico
|
||||
:ensure t
|
||||
:bind (:map vertico-map
|
||||
("C-j" . vertico-next)
|
||||
("C-k" . vertico-previous)
|
||||
("M-h" . vertico-directory-up))
|
||||
:custom
|
||||
(vertico-cycle t)
|
||||
:init
|
||||
(vertico-mode))
|
||||
(use-package vertico-posframe
|
||||
;;:disabled
|
||||
:after vertico
|
||||
:ensure t
|
||||
:init
|
||||
(setq vertico-posframe-parameters
|
||||
`((left-fringe . 8)
|
||||
(right-fringe . 8) (alpha . 100)))
|
||||
(vertico-posframe-mode 1))
|
||||
#+end_src
|
||||
**** Marginalia
|
||||
annotations placed at the margin of the minibuffer
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-completion.el
|
||||
(use-package marginalia
|
||||
:after vertico
|
||||
:ensure t
|
||||
:custom
|
||||
(marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil))
|
||||
:init
|
||||
(marginalia-mode))
|
||||
#+end_src
|
||||
**** Consult
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-completion.el
|
||||
;;(defun my/get-project-root () ;; TODO after projectile
|
||||
;; (when (fboundp 'projectile-project-root)
|
||||
;; (projectile-project-root)))
|
||||
(use-package consult
|
||||
:demand t
|
||||
:bind (("C-s" . consult-line)
|
||||
:map minibuffer-local-map
|
||||
("C-r" . consult-history))
|
||||
:custom
|
||||
;;(consult-project-root-function #'get-project-root)
|
||||
(completion-in-region-function #'consult-completion-in-region))
|
||||
#+end_src
|
||||
|
||||
**** Orderless
|
||||
orderless completion
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-completion.el
|
||||
(use-package orderless
|
||||
:ensure t
|
||||
:custom
|
||||
(completion-styles '(orderless basic))
|
||||
(completion-category-overrides '((file (style basic partial-completion)))))
|
||||
#+end_src
|
||||
**** Embark
|
||||
Quick Action in minibuffer
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-completion.el
|
||||
(use-package embark
|
||||
:ensure t
|
||||
:bind (("C-." . embark-act)
|
||||
("C-;" . embark-dwim)
|
||||
("C-h B" . embark-bindings))
|
||||
:init
|
||||
;; Optionally replace the key help with a completing-read interface
|
||||
(setq prefix-help-command #'embark-prefix-help-command)
|
||||
|
||||
:config
|
||||
|
||||
;; Hide the mode line of the Embark live/completions buffers
|
||||
(add-to-list 'display-buffer-alist
|
||||
'("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*"
|
||||
nil
|
||||
(window-parameters (mode-line-format . none)))))
|
||||
(use-package embark-consult
|
||||
:ensure t
|
||||
:after (embark consult)
|
||||
:demand t ; only necessary if you have the hook below
|
||||
;; if you want to have consult previews as you move around an
|
||||
;; auto-updating embark collect buffer
|
||||
:hook
|
||||
(embark-collect-mode . consult-preview-at-point-mode))
|
||||
#+end_src
|
||||
|
||||
**** Corfu
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-completion.el
|
||||
(use-package corfu)
|
||||
(use-package popon
|
||||
:defer t
|
||||
:straight (popon :build t
|
||||
:type git
|
||||
:host nil
|
||||
:repo "https://codeberg.org/akib/emacs-popon.git"))
|
||||
(use-package confu-terminal
|
||||
:defer t
|
||||
:straight (confu-terminal :build t
|
||||
:type git
|
||||
:host nil
|
||||
:repo "https://codeberg.org/akib/emacs-corfu-terminal.git"))
|
||||
(add-to-list 'load-path
|
||||
(expand-file-name "straight/build/corfu/extensions"
|
||||
user-emacs-directory))
|
||||
(require 'corfu-popupinfo)
|
||||
(require 'corfu)
|
||||
(unless (display-graphic-p)
|
||||
(require 'corfu-terminal)
|
||||
(corfu-terminal-mode +1))
|
||||
|
||||
(customize-set-variable 'corfu-cycle t) ;; Enable cycling for `corfu-next/previous'
|
||||
(customize-set-variable 'corfu-auto t) ;; Enable auto completion
|
||||
(customize-set-variable 'corfu-auto-prefix 2)
|
||||
(customize-set-variable 'corfu-auto-delay 0.0)
|
||||
;; (customize-set-variable 'corfu-separator ?\s) ;; Orderless field separator
|
||||
;; (customize-set-variable 'corfu-quit-at-boundary nil) ;; Never quit at completion boundary
|
||||
;; (customize-set-variable 'corfu-quit-no-match nil) ;; Never quit, even if there is no match
|
||||
;; (customize-set-variable 'corfu-preview-current nil) ;; Disable current candidate preview
|
||||
;; (customize-set-variable 'corfu-preselect 'prompt) ;; Preselect the prompt
|
||||
;; (customize-set-variable 'corfu-on-exact-match nil) ;; Configure handling of exact matches
|
||||
;; (customize-set-variable 'corfu-scroll-margin 5) ;; Use scroll margin
|
||||
(customize-set-variable 'corfu-echo-documentation 0.25)
|
||||
(global-corfu-mode 1)
|
||||
(corfu-popupinfo-mode 1)
|
||||
(eldoc-add-command #'corfu-insert)
|
||||
(define-key corfu-map (kbd "M-p") #'corfu-popupinfo-scroll-down)
|
||||
(define-key corfu-map (kbd "M-n") #'corfu-popupinfo-scroll-up)
|
||||
(define-key corfu-map (kbd "M-d") #'corfu-popupinfo-toggle)
|
||||
#+end_src
|
||||
|
||||
**** Cape
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-completion.el
|
||||
(use-package cape
|
||||
:init
|
||||
;; Add `completion-at-point-functions', used by `completion-at-point'.
|
||||
(add-to-list 'completion-at-point-functions #'cape-dabbrev)
|
||||
(add-to-list 'completion-at-point-functions #'cape-file)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-history)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-keyword)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-tex)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-sgml)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-rfc1345)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-abbrev)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-ispell)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-dict)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-symbol)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-line)
|
||||
(advice-add 'pcomplete-completions-at-point :around #'cape-wrap-silent)
|
||||
;; Silence the pcomplete capf, no errors or messages!
|
||||
;; Important for corfu
|
||||
(advice-add 'pcomplete-completions-at-point :around #'cape-wrap-silent)
|
||||
|
||||
;; Ensure that pcomplete does not write to the buffer
|
||||
;; and behaves as a pure `completion-at-point-function'.
|
||||
(advice-add 'pcomplete-completions-at-point :around #'cape-wrap-purify)
|
||||
)
|
||||
(add-hook 'eshell-mode-hook
|
||||
(lambda () (setq-local corfu-quit-at-boundary t
|
||||
corfu-quit-no-match t
|
||||
corfu-auto nil)
|
||||
(corfu-mode)))
|
||||
#+end_src
|
||||
|
||||
|
||||
**** Provide Modules
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-completion.el
|
||||
(provide 'custom-completion)
|
||||
;;; custom-completion.el ends here
|
||||
#+end_src
|
||||
*** Org Mode
|
||||
**** Valign
|
||||
| 12345678 | |
|
||||
|----------+---|
|
||||
| 일이삼사 | |
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-org.el
|
||||
(use-package valign
|
||||
:defer t
|
||||
:after (org markdown-mode)
|
||||
;; :hook ((org-mode markdown-mode) . valign-mode)
|
||||
:custom ((valign-fancy-bar t)))
|
||||
#+end_src
|
||||
|
||||
**** Provide Modules
|
||||
#+begin_src emacs-lisp :mkdirp yes :tangle ~/.config/emacs/modules/custom-org.el
|
||||
(provide 'custom-org)
|
||||
;;; custom-org.el ends here
|
||||
#+end_src
|
||||
137
.config/emacs/init.el
Executable file → Normal file
137
.config/emacs/init.el
Executable file → Normal file
@ -1,67 +1,70 @@
|
||||
;;; init.el -*- lexical-binding: t; -*-
|
||||
(add-hook 'emacs-startup-hook
|
||||
(lambda ()
|
||||
(message "Crafted Emacs loaded in %s"
|
||||
(emacs-init-time))))
|
||||
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("stable" . "https://stable.melpa.org/packages/"))
|
||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
|
||||
(defvar bootstrap-version)
|
||||
(let ((bootstrap-file
|
||||
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
|
||||
(bootstrap-version 5))
|
||||
(unless (file-exists-p bootstrap-file)
|
||||
(with-current-buffer
|
||||
(url-retrieve-synchronously
|
||||
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
|
||||
'silent 'inhibit-cookies)
|
||||
(goto-char (point-max))
|
||||
(eval-print-last-sexp)))
|
||||
(load bootstrap-file nil 'nomessage))
|
||||
(setq straight-use-package-by-default t)
|
||||
(package-initialize)
|
||||
(unless package-archive-contents
|
||||
(package-refresh-contents))
|
||||
|
||||
(add-to-list 'load-path (expand-file-name "modules/" user-emacs-directory))
|
||||
|
||||
(add-hook 'before-save-hook #'whitespace-cleanup)
|
||||
|
||||
(setq-default indent-tabs-mode nil)
|
||||
(setq-default tab-width 4)
|
||||
|
||||
(column-number-mode)
|
||||
(global-display-line-numbers-mode t)
|
||||
;; Disable line numbers for some modes
|
||||
(dolist (mode '(org-mode-hook
|
||||
shell-mode-hook
|
||||
treemacs-mode-hook
|
||||
dired-mode-hook
|
||||
eshell-mode-hook))
|
||||
(add-hook mode (lambda () (display-line-numbers-mode 0))))
|
||||
|
||||
(setq backup-directory-alist `(("." . ,(expand-file-name "backups/" user-emacs-directory))))
|
||||
(setq-default custom-file (expand-file-name ".custom.el" user-emacs-directory))
|
||||
(when (file-exists-p custom-file)
|
||||
(load custom-file))
|
||||
(setq delete-by-moving-to-trash t
|
||||
trash-directory "~/.local/share/Trash/files/")
|
||||
(setq undo-limit 100000000
|
||||
auto-save-default t)
|
||||
|
||||
(set-default-coding-systems 'utf-8)
|
||||
(customize-set-variable 'large-file-warning-threshold 100000000) ;; 100MB
|
||||
|
||||
(defconst ON-LINUX (eq system-type 'gnu/linux))
|
||||
(defconst ON-MAC (eq system-type 'darwin))
|
||||
(defconst ON-WINDOWS (memq system-type '(cygwin windows-nt ms-dos)))
|
||||
|
||||
(setq gc-cons-threshold (* 2 1024 1024)) ; decreasing the threshold to 2MB
|
||||
|
||||
(defvar my-config-file (expand-file-name "config.el" user-emacs-directory))
|
||||
(when (file-exists-p my-config-file)
|
||||
(load my-config-file nil 'nomessage))
|
||||
|
||||
;;(defalias 'yes-or-no-p 'y-or-n-p)
|
||||
(global-auto-revert-mode t)
|
||||
;;; init.el -*- lexical-binding: t; -*-
|
||||
(add-hook 'emacs-startup-hook
|
||||
(lambda ()
|
||||
(message "Crafted Emacs loaded in %s"
|
||||
(emacs-init-time))))
|
||||
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("stable" . "https://stable.melpa.org/packages/"))
|
||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
|
||||
(defvar bootstrap-version)
|
||||
(let ((bootstrap-file
|
||||
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
|
||||
(bootstrap-version 5))
|
||||
(unless (file-exists-p bootstrap-file)
|
||||
(with-current-buffer
|
||||
(url-retrieve-synchronously
|
||||
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
|
||||
'silent 'inhibit-cookies)
|
||||
(goto-char (point-max))
|
||||
(eval-print-last-sexp)))
|
||||
(load bootstrap-file nil 'nomessage))
|
||||
(setq straight-use-package-by-default t)
|
||||
(package-initialize)
|
||||
(unless package-archive-contents
|
||||
(package-refresh-contents))
|
||||
|
||||
(add-to-list 'load-path (expand-file-name "modules/" user-emacs-directory))
|
||||
|
||||
(add-hook 'before-save-hook #'whitespace-cleanup)
|
||||
|
||||
(setq-default indent-tabs-mode nil)
|
||||
(setq-default tab-width 4)
|
||||
|
||||
(column-number-mode)
|
||||
(global-display-line-numbers-mode t)
|
||||
;; Disable line numbers for some modes
|
||||
(dolist (mode '(org-mode-hook
|
||||
shell-mode-hook
|
||||
treemacs-mode-hook
|
||||
dired-mode-hook
|
||||
eshell-mode-hook))
|
||||
(add-hook mode (lambda () (display-line-numbers-mode 0))))
|
||||
|
||||
(setq backup-directory-alist `(("." . ,(expand-file-name "backups/" user-emacs-directory))))
|
||||
(setq-default custom-file (expand-file-name ".custom.el" user-emacs-directory))
|
||||
(when (file-exists-p custom-file)
|
||||
(load custom-file))
|
||||
(setq delete-by-moving-to-trash t
|
||||
trash-directory "~/.local/share/Trash/files/")
|
||||
(setq undo-limit 100000000
|
||||
auto-save-default t)
|
||||
(use-package no-littering)
|
||||
(setq auto-save-file-name-transforms
|
||||
`((".*" ,(no-littering-expand-var-file-name "auto-save/") t)))
|
||||
|
||||
(set-default-coding-systems 'utf-8)
|
||||
(customize-set-variable 'large-file-warning-threshold 100000000) ;; 100MB
|
||||
|
||||
(defconst ON-LINUX (eq system-type 'gnu/linux))
|
||||
(defconst ON-MAC (eq system-type 'darwin))
|
||||
(defconst ON-WINDOWS (memq system-type '(cygwin windows-nt ms-dos)))
|
||||
|
||||
(setq gc-cons-threshold (* 2 1024 1024)) ; decreasing the threshold to 2MB
|
||||
|
||||
(defvar my-config-file (expand-file-name "config.el" user-emacs-directory))
|
||||
(when (file-exists-p my-config-file)
|
||||
(load my-config-file nil 'nomessage))
|
||||
|
||||
;;(defalias 'yes-or-no-p 'y-or-n-p)
|
||||
(global-auto-revert-mode t)
|
||||
|
||||
135
.config/emacs/modules/custom-completion.el
Normal file
135
.config/emacs/modules/custom-completion.el
Normal file
@ -0,0 +1,135 @@
|
||||
(use-package vertico
|
||||
:ensure t
|
||||
:bind (:map vertico-map
|
||||
("C-j" . vertico-next)
|
||||
("C-k" . vertico-previous)
|
||||
("M-h" . vertico-directory-up))
|
||||
:custom
|
||||
(vertico-cycle t)
|
||||
:init
|
||||
(vertico-mode))
|
||||
|
||||
(use-package marginalia
|
||||
:after vertico
|
||||
:ensure t
|
||||
:custom
|
||||
(marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil))
|
||||
:init
|
||||
(marginalia-mode))
|
||||
|
||||
;;(defun my/get-project-root () ;; TODO after projectile
|
||||
;; (when (fboundp 'projectile-project-root)
|
||||
;; (projectile-project-root)))
|
||||
(use-package consult
|
||||
:demand t
|
||||
:bind (("C-s" . consult-line)
|
||||
:map minibuffer-local-map
|
||||
("C-r" . consult-history))
|
||||
:custom
|
||||
;;(consult-project-root-function #'get-project-root)
|
||||
(completion-in-region-function #'consult-completion-in-region))
|
||||
|
||||
(use-package orderless
|
||||
:ensure t
|
||||
:custom
|
||||
(completion-styles '(orderless basic))
|
||||
(completion-category-overrides '((file (style basic partial-completion)))))
|
||||
|
||||
(use-package embark
|
||||
:ensure t
|
||||
:bind (("C-." . embark-act)
|
||||
("C-;" . embark-dwim)
|
||||
("C-h B" . embark-bindings))
|
||||
:init
|
||||
;; Optionally replace the key help with a completing-read interface
|
||||
(setq prefix-help-command #'embark-prefix-help-command)
|
||||
|
||||
:config
|
||||
|
||||
;; Hide the mode line of the Embark live/completions buffers
|
||||
(add-to-list 'display-buffer-alist
|
||||
'("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*"
|
||||
nil
|
||||
(window-parameters (mode-line-format . none)))))
|
||||
(use-package embark-consult
|
||||
:ensure t
|
||||
:after (embark consult)
|
||||
:demand t ; only necessary if you have the hook below
|
||||
;; if you want to have consult previews as you move around an
|
||||
;; auto-updating embark collect buffer
|
||||
:hook
|
||||
(embark-collect-mode . consult-preview-at-point-mode))
|
||||
|
||||
(use-package corfu)
|
||||
(use-package popon
|
||||
:defer t
|
||||
:straight (popon :build t
|
||||
:type git
|
||||
:host nil
|
||||
:repo "https://codeberg.org/akib/emacs-popon.git"))
|
||||
(use-package confu-terminal
|
||||
:defer t
|
||||
:straight (confu-terminal :build t
|
||||
:type git
|
||||
:host nil
|
||||
:repo "https://codeberg.org/akib/emacs-corfu-terminal.git"))
|
||||
(add-to-list 'load-path
|
||||
(expand-file-name "straight/build/corfu/extensions"
|
||||
user-emacs-directory))
|
||||
(require 'corfu-popupinfo)
|
||||
(require 'corfu)
|
||||
(unless (display-graphic-p)
|
||||
(require 'corfu-terminal)
|
||||
(corfu-terminal-mode +1))
|
||||
|
||||
(customize-set-variable 'corfu-cycle t) ;; Enable cycling for `corfu-next/previous'
|
||||
(customize-set-variable 'corfu-auto t) ;; Enable auto completion
|
||||
(customize-set-variable 'corfu-auto-prefix 2)
|
||||
(customize-set-variable 'corfu-auto-delay 0.0)
|
||||
;; (customize-set-variable 'corfu-separator ?\s) ;; Orderless field separator
|
||||
;; (customize-set-variable 'corfu-quit-at-boundary nil) ;; Never quit at completion boundary
|
||||
;; (customize-set-variable 'corfu-quit-no-match nil) ;; Never quit, even if there is no match
|
||||
;; (customize-set-variable 'corfu-preview-current nil) ;; Disable current candidate preview
|
||||
;; (customize-set-variable 'corfu-preselect 'prompt) ;; Preselect the prompt
|
||||
;; (customize-set-variable 'corfu-on-exact-match nil) ;; Configure handling of exact matches
|
||||
;; (customize-set-variable 'corfu-scroll-margin 5) ;; Use scroll margin
|
||||
(customize-set-variable 'corfu-echo-documentation 0.25)
|
||||
(global-corfu-mode 1)
|
||||
(corfu-popupinfo-mode 1)
|
||||
(eldoc-add-command #'corfu-insert)
|
||||
(define-key corfu-map (kbd "M-p") #'corfu-popupinfo-scroll-down)
|
||||
(define-key corfu-map (kbd "M-n") #'corfu-popupinfo-scroll-up)
|
||||
(define-key corfu-map (kbd "M-d") #'corfu-popupinfo-toggle)
|
||||
|
||||
(use-package cape
|
||||
:init
|
||||
;; Add `completion-at-point-functions', used by `completion-at-point'.
|
||||
(add-to-list 'completion-at-point-functions #'cape-dabbrev)
|
||||
(add-to-list 'completion-at-point-functions #'cape-file)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-history)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-keyword)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-tex)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-sgml)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-rfc1345)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-abbrev)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-ispell)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-dict)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-symbol)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-line)
|
||||
(advice-add 'pcomplete-completions-at-point :around #'cape-wrap-silent)
|
||||
;; Silence the pcomplete capf, no errors or messages!
|
||||
;; Important for corfu
|
||||
(advice-add 'pcomplete-completions-at-point :around #'cape-wrap-silent)
|
||||
|
||||
;; Ensure that pcomplete does not write to the buffer
|
||||
;; and behaves as a pure `completion-at-point-function'.
|
||||
(advice-add 'pcomplete-completions-at-point :around #'cape-wrap-purify)
|
||||
)
|
||||
(add-hook 'eshell-mode-hook
|
||||
(lambda () (setq-local corfu-quit-at-boundary t
|
||||
corfu-quit-no-match t
|
||||
corfu-auto nil)
|
||||
(corfu-mode)))
|
||||
|
||||
(provide 'custom-completion)
|
||||
;;; custom-completion.el ends here
|
||||
139
.config/emacs/modules/custom-keybindings.el
Executable file → Normal file
139
.config/emacs/modules/custom-keybindings.el
Executable file → Normal file
@ -1,38 +1,101 @@
|
||||
(use-package which-key
|
||||
:defer t
|
||||
:init (which-key-mode)
|
||||
:diminish which-key-mode
|
||||
:config
|
||||
(setq which-key-idle-delay 0.5))
|
||||
|
||||
(use-package general
|
||||
:init
|
||||
(general-auto-unbind-keys)
|
||||
:config
|
||||
(general-evil-setup t)
|
||||
(general-create-definer ju/leader-key-def
|
||||
:keymaps '(normal insert visual emacs)
|
||||
:prefix "SPC"
|
||||
:global-prefix "C-SPC"))
|
||||
|
||||
(ju/leader-key-def
|
||||
"." 'find-file)
|
||||
;; Buffer)
|
||||
|
||||
(use-package evil
|
||||
:after (general)
|
||||
:init
|
||||
(setq evil-want-integration t
|
||||
evil-want-keybinding nil
|
||||
evil-want-C-u-scroll t
|
||||
evil-want-C-i-jump nil)
|
||||
(require 'evil-vars)
|
||||
(evil-set-undo-system 'undo-tree)
|
||||
:config
|
||||
(evil-mode 1)
|
||||
(setq evil-want-fine-undo t) ; more granular undo with evil
|
||||
(evil-set-initial-state 'messages-buffer-mode 'normal)
|
||||
(evil-set-initial-state 'dashboard-mode 'normal))
|
||||
|
||||
(provide 'custom-keybindings)
|
||||
;;; custom-keybindings.el ends here
|
||||
(global-set-key (kbd "C-c t") 'toggle-transparency)
|
||||
|
||||
(use-package which-key
|
||||
:defer t
|
||||
:init (which-key-mode)
|
||||
:diminish which-key-mode
|
||||
:config
|
||||
(setq which-key-idle-delay 0.5))
|
||||
|
||||
(use-package general
|
||||
:init
|
||||
(general-auto-unbind-keys)
|
||||
:config
|
||||
(general-evil-setup t)
|
||||
(general-create-definer ju/leader-key-def
|
||||
:keymaps '(normal insert visual emacs)
|
||||
:prefix "SPC"
|
||||
:global-prefix "C-SPC"))
|
||||
|
||||
(ju/leader-key-def
|
||||
"." 'find-file
|
||||
;; Buffer
|
||||
"b" '(:ignore t :which-key "buffer handling")
|
||||
"b i" '(ibuffer :which-key "IBuffer")
|
||||
"b r" '(revert-buffer :which-key "Revert Buffer")
|
||||
"b k" '(kill-current-buffer :which-key "Kill current buffer")
|
||||
"b n" '(next-buffer :which-key "Next buffer")
|
||||
"b p" '(previous-buffer :which-key "Previous buffer")
|
||||
"b B" '(ibuffer-list-buffers :which-key "IBuffer List Buffers")
|
||||
"b K" '(kill-buffer :which-key "IBuffer Kill Buffers")
|
||||
;; Eshell
|
||||
"e" '(:ignore t :which-key "eshell")
|
||||
"e h" '(counsel-esh-history :which "Kill history")
|
||||
"e s" '(eshell :which "run eshell")
|
||||
;; Workspace
|
||||
;; Counsel
|
||||
"f" '(:ignore t :which-key "file op.")
|
||||
"f r" '(consult-recent-file :which-key "Recent files")
|
||||
"t t" '(toggle-truncate-lines :which-key "Toggle truncate lines")
|
||||
;; Shortcut
|
||||
"f o d" '((lambda () (interactive) (find-file (expand-file-name "~/.config/emacs/desktop.org"))) :which-key "open exwm config")
|
||||
"f o p" '((lambda () (interactive) (find-file (expand-file-name "~/org/example/emacs_my_previous.org"))) :which-key "open exwm config")
|
||||
"f o e" '((lambda () (interactive) (find-file (expand-file-name "~/org/example/emacs_another.org"))) :which-key "open exwm config")
|
||||
"f o c" '((lambda () (interactive) (find-file (expand-file-name "~/.config/emacs/emacs.org"))) :which-key "open emacs config")
|
||||
;; Hydra
|
||||
"h" '(:ignore t :which-key "hydra")
|
||||
"h t" '(hydra-text-scale/body :which-key "scale text")
|
||||
"h w" '(hydra-writeroom-scale/body :which-key "scale whiteroom")
|
||||
"h a" '(hydra-modify-alpha/body :which-key "modify alpha background"))
|
||||
|
||||
(use-package evil
|
||||
:after (general)
|
||||
:init
|
||||
(setq evil-want-integration t
|
||||
evil-want-keybinding nil
|
||||
evil-want-C-u-scroll t
|
||||
evil-want-C-i-jump nil)
|
||||
(require 'evil-vars)
|
||||
(evil-set-undo-system 'undo-tree)
|
||||
:config
|
||||
(evil-mode 1)
|
||||
(setq evil-want-fine-undo t) ; more granular undo with evil
|
||||
(evil-set-initial-state 'messages-buffer-mode 'normal)
|
||||
(evil-set-initial-state 'dashboard-mode 'normal))
|
||||
(use-package evil-collection
|
||||
:after evil
|
||||
:ensure t
|
||||
:config
|
||||
(evil-collection-init))
|
||||
(use-package undo-tree
|
||||
:init
|
||||
(global-undo-tree-mode)
|
||||
(setq undo-tree-visualizer-diff t
|
||||
undo-tree-visualizer-timestamps t)
|
||||
undo-tree-auto-save-history t
|
||||
undo-tree-enable-undo-in-region t
|
||||
undo-limit (* 800 1024)
|
||||
undo-strong-limit (* 12 1024 1024)
|
||||
undo-outer-limit (* 128 1024 1024))
|
||||
|
||||
(use-package hydra
|
||||
:defer t)
|
||||
|
||||
(defhydra hydra-text-scale (:timeout 4)
|
||||
"scale text"
|
||||
("t" text-scale-increase "in")
|
||||
("s" text-scale-decrease "out")
|
||||
("q" nil "finished" :exit t))
|
||||
(defhydra hydra-writeroom-scale (:timeout 4)
|
||||
"scale whiteroom"
|
||||
("t" writeroom-increase-width "enlarge")
|
||||
("s" writeroom-decrease-width "shrink")
|
||||
("r" writeroom-adjust-width "adjust")
|
||||
("q" nil "finished" :exit t))
|
||||
(defhydra hydra-modify-alpha ()
|
||||
("q" nil :exit t)
|
||||
("s" my/decrease-frame-alpha-background)
|
||||
("t" my/increase-frame-alpha-background))
|
||||
|
||||
(provide 'custom-keybindings)
|
||||
;;; custom-keybindings.el ends here
|
||||
|
||||
8
.config/emacs/modules/custom-org.el
Normal file
8
.config/emacs/modules/custom-org.el
Normal file
@ -0,0 +1,8 @@
|
||||
(use-package valign
|
||||
:defer t
|
||||
:after (org markdown-mode)
|
||||
;; :hook ((org-mode markdown-mode) . valign-mode)
|
||||
:custom ((valign-fancy-bar t)))
|
||||
|
||||
(provide 'custom-org)
|
||||
;;; custom-org.el ends here
|
||||
185
.config/emacs/modules/custom-ui.el
Executable file → Normal file
185
.config/emacs/modules/custom-ui.el
Executable file → Normal file
@ -1,51 +1,134 @@
|
||||
(use-package doom-themes
|
||||
;;:init (load-theme 'doom-one t))
|
||||
:init (load-theme 'doom-palenight t))
|
||||
|
||||
(setq visible-bell t)
|
||||
(set-frame-parameter nil 'alpha-background 1.0)
|
||||
(add-to-list 'default-frame-alist '(alpha-background . 1.0))
|
||||
(defun toggle-ttt ()
|
||||
"toggle transparency."
|
||||
(interactive)
|
||||
(let ((alpha-transparency 1.0))
|
||||
(if (eq (frame-parameter nil 'alpha-background) alpha-transparency)
|
||||
(set-frame-parameter nil 'alpha-background 0.7)
|
||||
(set-frame-parameter nil 'alpha-background alpha-transparency))))
|
||||
|
||||
(use-package all-the-icons)
|
||||
(use-package doom-modeline
|
||||
:init
|
||||
(doom-modeline-mode 1)
|
||||
:config
|
||||
(setq doom-modeline-height 15
|
||||
doom-modeline-env-version t
|
||||
doom-modeline-indent-info t))
|
||||
|
||||
(defun self-screenshot (&optional type)
|
||||
"Save a screenshot of type TYPE of the current Emacs frame.
|
||||
As shown by the function `', type can weild the value `svg',
|
||||
`png', `pdf'.
|
||||
|
||||
This function will output in /tmp a file beginning with \"Emacs\"
|
||||
and ending with the extension of the requested TYPE."
|
||||
(interactive)
|
||||
(let* ((type (if type type
|
||||
(intern (completing-read "Screenshot Type: "
|
||||
'(png svg pdf postscript)))))
|
||||
(extension (pcase type
|
||||
('png ".png")
|
||||
('svg ".svg")
|
||||
('pdf ".pdf")
|
||||
('postscript ".ps")
|
||||
(otherwise (error "Cannot export screenshot of type %s" otherwise))))
|
||||
(filename (make-temp-file "Emacs-" nil extension))
|
||||
(data (x-export-frames nil type)))
|
||||
(with-temp-file filename
|
||||
(insert data))
|
||||
(kill-new filename)
|
||||
(rename-file filename (expand-file-name (file-name-nondirectory filename) "~"))
|
||||
(message filename)))
|
||||
|
||||
(provide 'custom-ui)
|
||||
;;; custom-ui.el ends here
|
||||
(use-package doom-themes)
|
||||
(if (display-graphic-p)
|
||||
(load-theme 'doom-palenight t)
|
||||
(load-theme 'doom-gruvbox t))
|
||||
|
||||
(use-package rainbow-delimiters
|
||||
:hook (prog-mode . rainbow-delimiters-mode))
|
||||
|
||||
(setq visible-bell t)
|
||||
(set-frame-parameter nil 'alpha-background 0.9)
|
||||
(add-to-list 'default-frame-alist '(alpha-background . 0.9))
|
||||
(defun toggle-transparency ()
|
||||
"toggle transparency."
|
||||
(interactive)
|
||||
(let ((alpha-transparency 1.0))
|
||||
(if (eq (frame-parameter nil 'alpha-background) alpha-transparency)
|
||||
(set-frame-parameter nil 'alpha-background 0.9)
|
||||
(set-frame-parameter nil 'alpha-background alpha-transparency))))
|
||||
(defun my/transparency-round (val)
|
||||
"Round VAL to the nearest tenth of an integer."
|
||||
(/ (round (* 10 val)) 10.0))
|
||||
|
||||
(defun my/increase-frame-alpha-background ()
|
||||
"Increase current frame’s alpha background."
|
||||
(interactive)
|
||||
(set-frame-parameter nil
|
||||
'alpha-background
|
||||
(my/transparency-round
|
||||
(min 1.0
|
||||
(+ (frame-parameter nil 'alpha-background) 0.1))))
|
||||
(message "%s" (frame-parameter nil 'alpha-background)))
|
||||
|
||||
(defun my/decrease-frame-alpha-background ()
|
||||
"Decrease current frame’s alpha background."
|
||||
(interactive)
|
||||
(set-frame-parameter nil
|
||||
'alpha-background
|
||||
(my/transparency-round
|
||||
(max 0.0
|
||||
(- (frame-parameter nil 'alpha-background) 0.1))))
|
||||
(message "%s" (frame-parameter nil 'alpha-background)))
|
||||
|
||||
(use-package all-the-icons)
|
||||
(use-package doom-modeline
|
||||
:init
|
||||
(doom-modeline-mode 1)
|
||||
:config
|
||||
(setq doom-modeline-height 15
|
||||
doom-modeline-env-version t
|
||||
doom-modeline-indent-info t))
|
||||
|
||||
(use-package writeroom-mode
|
||||
:disabled
|
||||
:defer t
|
||||
:straight (:build t)
|
||||
:init (global-writeroom-mode 1)
|
||||
:config
|
||||
(setq writeroom-width 100
|
||||
writeroom-fullscreen-effect nil
|
||||
writeroom-maximize-window nil
|
||||
writeroom-mode-line t
|
||||
writeroom-major-modes '(text-mode org-mode markdown-mode nov-mode Info-mode)))
|
||||
|
||||
(defun write-room-enable ()
|
||||
(setq visual-fill-column-width 100
|
||||
visual-fill-column-center-text t)
|
||||
(visual-fill-column-mode 1))
|
||||
(use-package visual-fill-column
|
||||
:hook
|
||||
(org-mode . write-room-enable)
|
||||
(text-mode . write-room-enable)
|
||||
(markdown-mode . write-room-enable)
|
||||
(nov-mode . write-room-enable))
|
||||
|
||||
(use-package page-break-lines)
|
||||
(use-package dashboard
|
||||
:init ;; tweak dashboard config before loading it
|
||||
(setq dashboard-projects-backend "project-el"
|
||||
dashboard-set-heading-icons t
|
||||
dashboard-set-file-icons t
|
||||
dashboard-center-content t ;; set to 't' for centered content
|
||||
dashboard-items '((recents . 10)
|
||||
(bookmarks . 5))
|
||||
;;(projects . 10)))
|
||||
dashboard-set-footer t
|
||||
dashboard-page-separator "\n\f\n"
|
||||
dashboard-startup-banner 'logo ;; use standard emacs logo as banner
|
||||
dashboard-set-navigator t)
|
||||
|
||||
;;(setq dashboard-startup-banner "~/.config/doom/doom-emacs-dash.png") ;; use custom image as banner
|
||||
;; Format: "(icon title help action face prefix suffix)"
|
||||
(setq dashboard-navigator-buttons
|
||||
`(;; line1
|
||||
((,(all-the-icons-octicon "mark-github" :height 1.1 :v-adjust 0.0)
|
||||
"Github"
|
||||
"Browse my Github"
|
||||
(lambda (&rest _) (browse-url "https://github.com/JaeUs3792/")))
|
||||
(,(all-the-icons-octicon "home" :height 1.1 :v-adjust 0.0)
|
||||
"Homepage"
|
||||
"Browse my Homepage"
|
||||
(lambda (&rest _) (browse-url "https://jaeus.net"))))))
|
||||
:config
|
||||
(dashboard-setup-startup-hook)
|
||||
(dashboard-modify-heading-icons '((recents . "file-text")
|
||||
(bookmarks . "book"))))
|
||||
(setq doom-fallback-buffer-name "*dashboard*")
|
||||
|
||||
(defun self-screenshot (&optional type)
|
||||
"Save a screenshot of type TYPE of the current Emacs frame.
|
||||
As shown by the function `', type can weild the value `svg',
|
||||
`png', `pdf'.
|
||||
|
||||
This function will output in /tmp a file beginning with \"Emacs\"
|
||||
and ending with the extension of the requested TYPE."
|
||||
(interactive)
|
||||
(let* ((type (if type type
|
||||
(intern (completing-read "Screenshot Type: "
|
||||
'(png svg pdf postscript)))))
|
||||
(extension (pcase type
|
||||
('png ".png")
|
||||
('svg ".svg")
|
||||
('pdf ".pdf")
|
||||
('postscript ".ps")
|
||||
(otherwise (error "Cannot export screenshot of type %s" otherwise))))
|
||||
(filename (make-temp-file "Emacs-" nil extension))
|
||||
(data (x-export-frames nil type)))
|
||||
(with-temp-file filename
|
||||
(insert data))
|
||||
(kill-new filename)
|
||||
(rename-file filename (expand-file-name (file-name-nondirectory filename) "~"))
|
||||
(message filename)))
|
||||
|
||||
(provide 'custom-ui)
|
||||
;;; custom-ui.el ends here
|
||||
|
||||
Reference in New Issue
Block a user