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

@ -39,5 +39,3 @@
(custom-setup-fonts) (custom-setup-fonts)
(add-hook 'window-setup-hook #'custom-setup-fonts) (add-hook 'window-setup-hook #'custom-setup-fonts)
(add-hook 'server-after-make-frame-hook #'centaur-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-base)
(require 'init-ui) (require 'init-ui)
(require 'init-edit)
(require 'init-evil)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; init.el ends here ;;; init.el ends here

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) (defun font-installed-p (font-name)
(find-font (font-spec :name 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) (provide 'init-func)
;;; init-func.el ends here ;;; init-func.el ends here

View File

@ -1,4 +1,4 @@
;; init-ui.el -*- lexical-binding: t -*- ;;; init-ui.el -*- lexical-binding: t -*-
(require 'init-const) (require 'init-const)
(require 'init-func) (require 'init-func)
@ -38,6 +38,88 @@
doom-modeline-persp-icon t doom-modeline-persp-icon t
doom-modeline-display-default-persp-name t doom-modeline-display-default-persp-name t
doom-modeline-indent-info 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