This commit is contained in:
2023-05-17 21:49:44 +09:00
parent 593b273a12
commit 21f098536f
10 changed files with 381 additions and 108 deletions

View File

@ -1,21 +1,21 @@
(setq user-full-name "JaeYoo-Im"
user-mail-address "cpu3792@gmail.com")
user-mail-address "cpu3792@gmail.com")
(setq default-input-method "korean-hangul")
(defun custom-setup-fonts ()
"setup fonts..."
(when (display-graphic-p)
;; default font
(cl-loop for font in '("FiraCode Nerd Font Mono" "Jetbrains Mono"
"Source Code Pro" "DejaVu Sans Mono")
when (font-installed-p font)
return (set-face-attribute 'default nil
:family font
:height 130))
;; uni code caracter
(cl-loop for font in '("Segoe UI Symbol" "Symbola" "Symbol")
when (font-installed-p font)
return (set-fontset-font t 'symbol (font-spec :family font) nil 'prepend))
;; default font
(cl-loop for font in '("FiraCode Nerd Font Mono" "Jetbrains Mono"
"Source Code Pro" "DejaVu Sans Mono")
when (font-installed-p font)
return (set-face-attribute 'default nil
:family font
:height 130))
;; uni code caracter
(cl-loop for font in '("Segoe UI Symbol" "Symbola" "Symbol")
when (font-installed-p font)
return (set-fontset-font t 'symbol (font-spec :family font) nil 'prepend))
;; Emoji
(cl-loop for font in '("Noto Color Emoji" "Apple Color Emoji" "Segoe UI Emoji")
@ -28,16 +28,14 @@
(t
(set-fontset-font t 'emoji (font-spec :family font) nil 'prepend))))
;; Noto font or Nanum
(cl-loop for font in '("Noto Sans CJK KR" "Nanum Gothic")
when (font-installed-p font)
return (progn
(setq face-font-rescale-alist `((,font . 1.26)))
(set-fontset-font t '(#x1100 . #xffdc) (font-spec :family font))))))
;; Noto font or Nanum
(cl-loop for font in '("Noto Sans CJK KR" "Nanum Gothic")
when (font-installed-p font)
return (progn
(setq face-font-rescale-alist `((,font . 1.26)))
(set-fontset-font t '(#x1100 . #xffdc) (font-spec :family font))))))
(custom-setup-fonts)
(add-hook 'window-setup-hook #'custom-setup-fonts)
(add-hook 'server-after-make-frame-hook #'centaur-setup-fonts)

View File

@ -57,5 +57,7 @@ Otherwise the startup will be very slow. "
(require 'init-base)
(require 'init-ui)
(require 'init-edit)
(require 'init-evil)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; init.el ends here

View File

@ -8,16 +8,16 @@
;;
(setq ffap-machine-p-known 'reject))
;;
;;
(use-package gcmh
:diminish
:hook
(emacs-startup . gcmh-mode)
:init
(setq gcmh-idle-delay 'auto
gcmh-auto-idle-delay-factor 10
gcmh-high-cons-threshold (* 16 1024 1024)))
:diminish
:hook
(emacs-startup . gcmh-mode)
:init
(setq gcmh-idle-delay 'auto
gcmh-auto-idle-delay-factor 10
gcmh-high-cons-threshold (* 16 1024 1024)))
(when (fboundp 'set-charset-priority)
(set-charset-priority 'unicode))
(prefer-coding-system 'utf-8)
@ -28,7 +28,7 @@
(set-selection-coding-system 'utf-8))
(when ON-LINUX
(use-package exec-path-from-shell
:init (exec-path-from-shell-initialize)))
:init (exec-path-from-shell-initialize)))
;; open file point at where last saved place.
(use-package saveplace
@ -37,7 +37,7 @@
(use-package recentf
:ensure nil
:bind
:bind
(("C-x C-r" . recentf-open-files))
:hook
(after-init . recentf-mode)
@ -50,22 +50,22 @@
"^/tmp/" "^/var/folders/.+$" "^/ssh:" "/persp-confs/"
(lambda (file) (file-in-directory-p file package-user-dir))))
:config
(push (expand-file-name recentf-save-file) recentf-exclude)
(add-to-list 'recentf-filename-handlers #'abbreviate-file-name))
(push (expand-file-name recentf-save-file) recentf-exclude)
(add-to-list 'recentf-filename-handlers #'abbreviate-file-name))
(use-package savehist
:ensure nil
:hook
(after-init . savehist-mode)
:init
(setq enable-recursive-minibuffers t ; Allow commands in minibuffers
history-length 25
savehist-additional-variables '(mark-ring
global-mark-ring
search-ring
regexp-search-ring
extended-command-history)
savehist-autosave-interval 300))
:ensure nil
:hook
(after-init . savehist-mode)
:init
(setq enable-recursive-minibuffers t ; Allow commands in minibuffers
history-length 25
savehist-additional-variables '(mark-ring
global-mark-ring
search-ring
regexp-search-ring
extended-command-history)
savehist-autosave-interval 300))
(use-package simple
:ensure nil

View File

@ -1,10 +1,10 @@
;;; init-const.el -*- lexical-binding: t -*-
(defconst ON-LINUX (eq system-type 'gnu/linux)
"Under Linux system")
"Under Linux system")
(defconst ON-WINDOWS (memq system-type '(cygwin windows-nt ms-dos))
"Under Windows System")
"Under Windows System")
(defconst custom-default-file
(expand-file-name "custom-default.el" user-emacs-directory))
(expand-file-name "custom-default.el" user-emacs-directory))
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
(provide 'init-const)

View File

@ -0,0 +1,131 @@
;;; init-edit.el -*- lexical-binding: t -*-
(require 'init-const)
(require 'init-func)
(use-package autorevert
:ensure nil
:diminish
:hook (after-init . global-auto-revert-mode))
(use-package avy
:hook (after-init . avy-setup-default)
:config
(setq avy-style 'pre
avy-all-windows t
avy-all-windows-alt nil
avy-background t))
;; Show number of matches in mode-line while searching
(use-package anzu
:diminish
;;:bind (([remap query-replace] . anzu-query-replace)
;; ([remap query-replace-regexp] . anzu-query-replace-regexp)
;; :map isearch-mode-map
;; ([remap isearch-query-replace] . anzu-isearch-query-replace)
;; ([remap isearch-query-replace-regexp] . anzu-isearch-query-replace-regexp))
:hook (after-init . global-anzu-mode))
(use-package ialign)
(use-package undo-tree
:diminish
:hook (after-init . global-undo-tree-mode)
:custom
(undo-tree-history-directory-alist
`(("." . ,(expand-file-name (file-name-as-directory "undo-tree-hist")
user-emacs-directory))))
:config
(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 hideshow
:ensure nil
:diminish hs-minor-mode
;;:pretty-hydra
;;((:title (pretty-hydra-title "HideShow" 'octicon "nf-oct-fold")
;; :color amaranth :quit-key ("q" "C-g"))
;; ("Fold"
;; (("t" hs-toggle-all "toggle all")
;; ("a" hs-show-all "show all")
;; ("i" hs-hide-all "hide all")
;; ("g" hs-toggle-hiding "toggle hiding")
;; ("c" hs-cycle "cycle block")
;; ("s" hs-show-block "show block")
;; ("h" hs-hide-block "hide block")
;; ("l" hs-hide-level "hide level"))
;; "Move"
;; (("C-a" mwim-beginning-of-code-or-line "⭰")
;; ("C-e" mwim-end-of-code-or-line "⭲")
;; ("C-b" backward-char "←")
;; ("C-n" next-line "↓")
;; ("C-p" previous-line "↑")
;; ("C-f" forward-char "→")
;; ("C-v" pager-page-down "↘")
;; ("M-v" pager-page-up "↖")
;; ("M-<" beginning-of-buffer "⭶")
;; ("M->" end-of-buffer "⭸"))))
;;:bind (:map hs-minor-mode-map
;; ("C-~" . hideshow-hydra/body)
;; ("C-S-<escape>" . hideshow-hydra/body))
:hook (prog-mode . hs-minor-mode)
:config
;; More functions
;; @see https://karthinks.com/software/simple-folding-with-hideshow/
(defun hs-cycle (&optional level)
(interactive "p")
(let (message-log-max
(inhibit-message t))
(if (= level 1)
(pcase last-command
('hs-cycle
(hs-hide-level 1)
(setq this-command 'hs-cycle-children))
('hs-cycle-children
(save-excursion (hs-show-block))
(setq this-command 'hs-cycle-subtree))
('hs-cycle-subtree
(hs-hide-block))
(_
(if (not (hs-already-hidden-p))
(hs-hide-block)
(hs-hide-level 1)
(setq this-command 'hs-cycle-children))))
(hs-hide-level level)
(setq this-command 'hs-hide-level))))
(defun hs-toggle-all ()
"Toggle hide/show all."
(interactive)
(pcase last-command
('hs-toggle-all
(save-excursion (hs-show-all))
(setq this-command 'hs-global-show))
(_ (hs-hide-all))))
;; Display line counts
(defun hs-display-code-line-counts (ov)
"Display line counts when hiding codes."
(when (eq 'code (overlay-get ov 'hs))
(overlay-put ov 'display
(concat
" "
(propertize
(if (char-displayable-p ?⏷) "" "...")
'face 'shadow)
(propertize
(format " (%d lines)"
(count-lines (overlay-start ov)
(overlay-end ov)))
'face '(:inherit shadow :height 0.8))
" "))))
(setq hs-set-up-overlay #'hs-display-code-line-counts))
;; Hanlde minified code
(use-package so-long
:hook (after-init . global-so-long-mode))
(provide 'init-edit)
;;; init-edit.el ends here.

View File

@ -0,0 +1,53 @@
;;; init-evil.el -*- lexical-binding: t -*-
(require 'init-const)
(require 'init-func)
(use-package evil
:ensure nil
:diminish
:hook (after-init . evil-mode)
:init
(setq evil-want-integration t
evil-want-keybinding nil
evil-want-C-u-scroll t
evil-want-C-i-jump nil)
;;(setq evil-respect-visual-line-mode nil) ; t : on the screen, nil : by cr characters
(require 'evil-vars)
(evil-set-undo-system 'undo-tree)
;;(evil-set-undo-system 'undo-redo)
;; Make evil search more like vim (makes emacs slow)
;;(evil-select-search-module 'evil-search-module 'evil-search)
:config
(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)
;; eshell no evil
(dolist (mode '(eshell-mode))
(add-to-list 'evil-emacs-state-modes mode)))
(use-package evil-collection
:after evil
:config
(evil-collection-init))
(use-package evil-nerd-commenter
:after evil
:config
;; evil nerd commenter
(define-key evil-normal-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines)
(define-key evil-visual-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines))
(use-package evil-numbers
:after evil
:config
;; evil numbers
;; unfortunately C-x is emacs common key binding.
(define-key evil-normal-state-map (kbd "g =") 'evil-numbers/inc-at-pt)
(define-key evil-normal-state-map (kbd "g -") 'evil-numbers/dec-at-pt)
(define-key evil-visual-state-map (kbd "g =") 'evil-numbers/inc-at-pt)
(define-key evil-visual-state-map (kbd "g -") 'evil-numbers/dec-at-pt))
(provide 'init-evil)
;;; init-evil.el ends here.

View File

@ -4,6 +4,12 @@
(defun font-installed-p (font-name)
(find-font (font-spec :name font-name)))
(defun too-long-file-p ()
"Check whether the file is too long."
(if (fboundp 'buffer-line-statistics)
(> (car (buffer-line-statistics)) 10000)
(> (buffer-size) 100000)))
(provide 'init-func)
;;; init-func.el ends here

View File

@ -3,7 +3,7 @@
(require 'init-func)
(when (and (file-exists-p custom-default-file)
(not (file-exists-p custom-file)))
(not (file-exists-p custom-file)))
(copy-file custom-default-file custom-file))
(and (file-readable-p custom-file) (load custom-file))
@ -22,13 +22,13 @@
(add-to-list 'package-archives '("stable" . "https://stable.melpa.org/packages/"))
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(customize-set-variable 'package-archive-priorities
'(("gnu" . 99) ; prefer GNU packages
("nongnu" . 80) ; use non-gnu packages if
; not found in GNU elpa
("stable" . 70) ; prefer "released" versions
; from melpa
("melpa" . 0))) ; if all else fails, get it
; from melpa
'(("gnu" . 99) ; prefer GNU packages
("nongnu" . 80) ; use non-gnu packages if
; not found in GNU elpa
("stable" . 70) ; prefer "released" versions
; from melpa
("melpa" . 0))) ; if all else fails, get it
; from melpa
(unless (bound-and-true-p package--initialized)
(setq package-enable-at-startup nil)
(package-initialize))
@ -49,38 +49,38 @@
(use-package bind-key)
(use-package paradox
:custom-face
(paradox-archive-face ((t (:inherit font-lock-doc-face))))
(paradox-description-face ((t (:inherit completions-annotations))))
:hook
(emacs-startup . paradox-enable)
:init
(setq paradox-execute-asynchronously t
paradox-github-token nil
paradox-display-star-count nil
paradox-status-face-alist ;
'(("built-in" . font-lock-builtin-face)
("available" . success)
("new" . (success bold))
("held" . font-lock-constant-face)
("disabled" . font-lock-warning-face)
("avail-obso" . font-lock-comment-face)
("installed" . font-lock-comment-face)
("dependency" . font-lock-comment-face)
("incompat" . font-lock-comment-face)
("deleted" . font-lock-comment-face)
("unsigned" . font-lock-warning-face)))
:config
(add-hook 'paradox-after-execute-functions
(lambda (_)
"Display `page-break-lines' in \"*Paradox Report*\" buffer."
(when (fboundp 'page-break-lines-mode)
(let ((buf (get-buffer "*Paradox Report*"))
(inhibit-read-only t))
(when (buffer-live-p buf)
(with-current-buffer buf
(page-break-lines-mode 1))))))
t))
:custom-face
(paradox-archive-face ((t (:inherit font-lock-doc-face))))
(paradox-description-face ((t (:inherit completions-annotations))))
:hook
(emacs-startup . paradox-enable)
:init
(setq paradox-execute-asynchronously t
paradox-github-token nil
paradox-display-star-count nil
paradox-status-face-alist ;
'(("built-in" . font-lock-builtin-face)
("available" . success)
("new" . (success bold))
("held" . font-lock-constant-face)
("disabled" . font-lock-warning-face)
("avail-obso" . font-lock-comment-face)
("installed" . font-lock-comment-face)
("dependency" . font-lock-comment-face)
("incompat" . font-lock-comment-face)
("deleted" . font-lock-comment-face)
("unsigned" . font-lock-warning-face)))
:config
(add-hook 'paradox-after-execute-functions
(lambda (_)
"Display `page-break-lines' in \"*Paradox Report*\" buffer."
(when (fboundp 'page-break-lines-mode)
(let ((buf (get-buffer "*Paradox Report*"))
(inhibit-read-only t))
(when (buffer-live-p buf)
(with-current-buffer buf
(page-break-lines-mode 1))))))
t))

View File

@ -1,4 +1,4 @@
;; init-ui.el -*- lexical-binding: t -*-
;;; init-ui.el -*- lexical-binding: t -*-
(require 'init-const)
(require 'init-func)
@ -17,27 +17,109 @@
;; Make certain buffers grossly incandescent
(use-package solaire-mode
:hook (after-load-theme . solaire-global-mode))
:hook (after-load-theme . solaire-global-mode))
(use-package doom-themes
:init
(if (display-graphic-p)
;;(load-theme 'doom-palenight t)
(load-theme 'doom-one t)
(load-theme 'doom-gruvbox t))
:config
(doom-themes-visual-bell-config))
:init
(if (display-graphic-p)
;;(load-theme 'doom-palenight t)
(load-theme 'doom-one t)
(load-theme 'doom-gruvbox t))
:config
(doom-themes-visual-bell-config))
(use-package doom-modeline
:hook (after-init . doom-modeline-mode)
:init
(setq doom-modeline-window-width-limit 110
doom-modeline-minor-modes t)
:config
(setq doom-modeline-height 15
doom-modeline-env-version t
doom-modeline-persp-name t
doom-modeline-persp-icon t
doom-modeline-display-default-persp-name t
doom-modeline-indent-info t))
:hook (after-init . doom-modeline-mode)
:init
(setq doom-modeline-window-width-limit 110
doom-modeline-minor-modes t)
:config
(setq doom-modeline-height 15
doom-modeline-env-version t
doom-modeline-persp-name t
doom-modeline-persp-icon t
doom-modeline-display-default-persp-name t
doom-modeline-indent-info t))
(use-package hide-mode-line
:hook (((completion-list-mode
completion-in-region-mode
eshell-mode shell-mode
term-mode vterm-mode
treemacs-mode
lsp-ui-imenu-mode
pdf-annot-list-mode) . hide-mode-line-mode)))
;; A minor-mode menu for mode-line
(use-package minions
:hook (doom-modeline-mode . minions-mode))
;; Icons
(use-package nerd-icons)
(use-package display-line-numbers
:ensure nil
:hook ((prog-mode yaml-mode conf-mode) . display-line-numbers-mode)
:init (setq display-line-numbers-width-start t))
;; Suppress GUI features
(setq use-file-dialog nil
use-dialog-box nil
inhibit-startup-screen nil
inhibit-startup-echo-area-message user-login-name
inhibit-default-init t
initial-scratch-message nil)
(unless (daemonp)
(advice-add #'display-startup-echo-area-message :override #'ignore))
;; Display dividers between windows
(setq window-divider-default-places t
window-divider-default-bottom-width 1
window-divider-default-right-width 1)
(add-hook 'window-setup-hook #'window-divider-mode)
(use-package time
:ensure nil
:init (setq display-time-24hr-format t
display-time-day-and-date t))
;; Mouse & Smooth Scroll
;; Scroll one line at a time (less "jumpy" than defaults)
(when (display-graphic-p)
(setq mouse-wheel-scroll-amount '(1 ((shift) . hscroll))
mouse-wheel-scroll-amount-horizontal 1
mouse-wheel-progressive-speed nil))
(setq scroll-step 1
scroll-margin 0
scroll-conservatively 100000
auto-window-vscroll nil
scroll-preserve-screen-position t)
;; Good pixel line scrolling
(if (fboundp 'pixel-scroll-precision-mode)
(pixel-scroll-precision-mode t)
(when (and emacs/>=27p (not sys/macp))
(use-package good-scroll
:diminish
:hook (after-init . good-scroll-mode)
:bind (([remap next] . good-scroll-up-full-screen)
([remap prior] . good-scroll-down-full-screen)))))
;; Smooth scrolling over images
(use-package iscroll
:diminish
:hook (image-mode . iscroll-mode))
;; Use fixed pitch where it's sensible
(use-package mixed-pitch
:diminish)
;; Display ugly ^L page breaks as tidy horizontal lines
(use-package page-break-lines
:diminish
:hook (after-init . global-page-break-lines-mode)
:config ;; display only half fix.
(set-fontset-font "fontset-default"
(cons page-break-lines-char page-break-lines-char)
(face-attribute 'default :family)))

View File

@ -0,0 +1 @@
nil