From eaf10fd773d88e7c7fa303715c5f6d1ade91987b Mon Sep 17 00:00:00 2001 From: netpyoung Date: Fri, 29 Dec 2023 07:28:55 +0900 Subject: [PATCH] update: pages --- src/SUMMARY.md | 3 +- src/emacs/emacs.d/config-loader.el.md | 67 ++++++++++++- src/emacs/emacs.d/config.md | 8 ++ src/emacs/emacs.d/config/base-define.el.md | 41 ++++---- src/emacs/emacs.d/config/base-setting.el.md | 19 +++- src/emacs/emacs.d/config/file-json.el.md | 9 +- src/emacs/emacs.d/config/file-markdown.el.md | 19 ++++ .../emacs.d/config/lang-emacs-lisp.el.md | 68 +++++++++++-- src/emacs/emacs.d/config/os-linux.el.md | 8 ++ src/emacs/emacs.d/config/os-macos.el.md | 38 ++++---- src/emacs/emacs.d/config/os-windows.el.md | 7 ++ .../emacs.d/config/setting-editting.el.md | 43 +++++++++ src/emacs/emacs.d/config/setting-editting.md | 12 --- src/emacs/emacs.d/config/setting-font.el.md | 96 +++++++++++++++++++ .../emacs.d/config/setting-navigation.el.md | 48 ++++++++++ src/emacs/emacs.d/config/setting-theme.el.md | 3 + .../emacs.d/config/setting-treemacs.el.md | 36 +++++++ src/emacs/emacs.d/config/util-command.el.md | 15 +++ src/emacs/emacs.d/config/util-git.el.md | 47 +++++++++ src/emacs/emacs.d/config/util-quickrun.el.md | 10 ++ src/emacs/emacs.d/early-init.el.md | 21 ++++ src/emacs/emacs.d/init.el.md | 46 +++++++++ src/help.md | 1 + 23 files changed, 608 insertions(+), 57 deletions(-) delete mode 100644 src/emacs/emacs.d/config/setting-editting.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 72ede3c..3103617 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -35,8 +35,7 @@ - [setting-theme.el](emacs/emacs.d/config/setting-theme.el.md) - [setting-treemacs.el](emacs/emacs.d/config/setting-treemacs.el.md) - [lang-emacs-lisp.el](emacs/emacs.d/config/lang-emacs-lisp.el.md) - - [lang-emacs-lisp.el](emacs/emacs.d/config/file-json.el.md) - - [file-json.el](emacs/emacs.d/config/lang-emacs-lisp.el.md) + - [file-json.el](emacs/emacs.d/config/file-json.el.md) - [file-markdown.el](emacs/emacs.d/config/file-markdown.el.md) - [util-command.el](emacs/emacs.d/config/util-command.el.md) - [util-git.el](emacs/emacs.d/config/util-git.el.md) diff --git a/src/emacs/emacs.d/config-loader.el.md b/src/emacs/emacs.d/config-loader.el.md index 63fc439..73ce646 100644 --- a/src/emacs/emacs.d/config-loader.el.md +++ b/src/emacs/emacs.d/config-loader.el.md @@ -1 +1,66 @@ -# config-loader.el \ No newline at end of file +# config-loader.el + +리스트에 나열된 설정파일들을 로드하고, 로드된 결과를 보여줍니다. + +``` lisp +;; file: config-loader.el + +(require 'cl-lib) +(require 'cl-seq) + +(defalias '-> 'thread-first) +(defalias '->> 'thread-last) + +(cl-defstruct ConfigInfo + index + file-path + file-fullpath + time-load-sec) + +(defun getConfigInfos (config-dir config-list) + (cl-loop for file-path in config-list + for index from 0 + for file-fullpath = (->> file-path + (symbol-name) + (concat config-dir) + (locate-user-emacs-file) + (file-truename)) + when (file-exists-p file-fullpath) + collect + (let* ((time-load-sec (-> file-fullpath + (load-file) + (benchmark-run) + (car)))) + (make-ConfigInfo :index (+ index 1) + :file-path file-path + :file-fullpath file-fullpath + :time-load-sec time-load-sec)))) + +(defun getIndicate (val-cur val-max) + (let* ((perc-1 (thread-first + val-cur + (/ val-max) + (* 10) + (round))) + (perc-2 (- 10 perc-1))) + (concat (make-string perc-1 ?■) (make-string perc-2 ?.)))) + +(defun config-loader:load-config (config-dir config-list) + (let* ((infos (getConfigInfos config-dir config-list)) + (acc-sec (->> infos + (mapcar #'ConfigInfo-time-load-sec) + (apply '+ )))) + (let ((buff (get-buffer-create "== 설정 로드 결과 =="))) + (with-current-buffer buff + (view-mode -1) + (erase-buffer) + (insert (format "\n\n총 %d파일, %0.4f초\n\n" (length infos) acc-sec)) + (dolist (info infos) + (insert (format "%03d | %s | %0.2f초 | %s\n" + (ConfigInfo-index info) + (getIndicate (ConfigInfo-time-load-sec info) acc-sec) + (ConfigInfo-time-load-sec info) + (ConfigInfo-file-path info)))) + (switch-to-buffer buff) + (view-mode +1))))) +``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config.md b/src/emacs/emacs.d/config.md index c3fd8e4..809f5aa 100644 --- a/src/emacs/emacs.d/config.md +++ b/src/emacs/emacs.d/config.md @@ -1,2 +1,10 @@ # config/ +| prefix | 설명 | 예 | +| -------- | --------------- | ------------------ | +| base- | 기본 | base-define.el | +| os- | 운영체제 특화 | os-windows.el | +| setting- | 사용자설정 | setting-theme.el | +| lang- | 프로그래밍 언어 | lang-emacs-lisp.el | +| file- | 파일 타입별 | file-markdown.el | +| util- | 유틸리티 | util-git.el | \ No newline at end of file diff --git a/src/emacs/emacs.d/config/base-define.el.md b/src/emacs/emacs.d/config/base-define.el.md index 06e4a81..9f6d0f9 100644 --- a/src/emacs/emacs.d/config/base-define.el.md +++ b/src/emacs/emacs.d/config/base-define.el.md @@ -1,34 +1,43 @@ # base-define.el ``` lisp -;; file: 0000_define.el +;; file: base-define.el (defconst true t) (defconst false nil) (defconst IS_WINDOWS (eq system-type 'windows-nt)) (defconst IS_MAC (eq system-type 'darwin)) +(defconst IS_LINUX (eq system-type 'gnu/linux)) (defconst MODE_ON +1) (defconst MODE_OFF -1) -(defmacro -> (&rest body) - (let ((result (pop body))) - (dolist (form body result) - (setq result - (append (list (car form) result) - (cdr form)))))) - -(defmacro ->> (&rest body) - (let ((result (pop body))) - (dolist (form body result) - (setq result - (append form (list result)))))) +;; (defmacro -> (&rest body) +;; ;; thread-first +;; (let ((result (pop body))) +;; (dolist (form body result) +;; (setq result +;; (append (list (car form) result) +;; (cdr form)))))) +;; (defmacro ->> (&rest body) +;; ;; thread-last +;; (let ((result (pop body))) +;; (dolist (form body result) +;; (setq result +;; (append form (list result)))))) (defmacro comment (&rest body) nil) -(defmacro do (&rest body) - `(progn - ,@body)) +(defalias 'count 'length) +(defalias 'first 'car) +(defalias 'rest 'cdr) +(defalias 'do 'progn) + +(defalias 'provided? 'featurep) +(defalias '-> 'thread-first) +(defalias '->> 'thread-last) +(defun inc (n) (+ 1 n)) + ``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config/base-setting.el.md b/src/emacs/emacs.d/config/base-setting.el.md index b49b158..fa107c0 100644 --- a/src/emacs/emacs.d/config/base-setting.el.md +++ b/src/emacs/emacs.d/config/base-setting.el.md @@ -6,7 +6,7 @@ - 예전에는 [(defalias 'yes-or-no-p 'y-or-n-p)](https://www.gnu.org/software/emacs/manual/html_node/elisp/Yes_002dor_002dNo-Queries.html) 이런식으로 했었다 ``` lisp -;; file: 0010_base-setting.el +;; file: base-setting.el (progn ;; `설정::한글' ;; ref: https://www.gnu.org/software/emacs/manual/html_node/emacs/Language-Environments.html @@ -22,4 +22,21 @@ (progn ;; `설정::Y_혹은_N으로_대답' (setq read-answer-short t) (setq use-short-answers t)) + + +(progn ;; `설정::인덴트' + (setq-default indent-tabs-mode nil) + (setq tab-width 4)) + +(use-package delsel + ;; ref: https://github.com/emacs-mirror/emacs/blob/master/lisp/delsel.el + :ensure nil + :config + (delete-selection-mode +1)) + +(use-package whitespace + :ensure nil + :hook (before-save . whitespace-cleanup)) + + ``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config/file-json.el.md b/src/emacs/emacs.d/config/file-json.el.md index 42dc9cf..5766d74 100644 --- a/src/emacs/emacs.d/config/file-json.el.md +++ b/src/emacs/emacs.d/config/file-json.el.md @@ -1 +1,8 @@ -# lang-emacs-lisp.el +# file-json.el + +``` lisp +;; file: file-json.el + +(use-package json-mode + :ensure t) +``` diff --git a/src/emacs/emacs.d/config/file-markdown.el.md b/src/emacs/emacs.d/config/file-markdown.el.md index 4ca32e7..17bc49a 100644 --- a/src/emacs/emacs.d/config/file-markdown.el.md +++ b/src/emacs/emacs.d/config/file-markdown.el.md @@ -1 +1,20 @@ # file-markdown.el + +``` lisp +;; file: file-markdown.el + +(use-package markdown-mode + ;; ref: https://jblevins.org/projects/markdown-mode/ + ;; ref: https://leanpub.com/markdown-mode/ + :ensure t + :commands (gfm-mode) + :mode (("\\.md\\'" . markdown-mode) + ("\\.markdown\\'" . markdown-mode)) + :init (setq markdown-command "multimarkdown")) + +(use-package grip-mode + ;; ref: https://github.com/seagle0128/grip-mode + ;; ref: grip - https://github.com/joeyespo/grip + ;; M-x grip-mode + :ensure t) +``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config/lang-emacs-lisp.el.md b/src/emacs/emacs.d/config/lang-emacs-lisp.el.md index a933b61..2d25fb3 100644 --- a/src/emacs/emacs.d/config/lang-emacs-lisp.el.md +++ b/src/emacs/emacs.d/config/lang-emacs-lisp.el.md @@ -9,22 +9,78 @@ | buffer-file-name | 현재버퍼 파일의 이름 | ``` lisp +;; file: lang-emacs-lisp.el + (use-package emacs-lisp-mode + :ensure nil :bind (("C-c C-l" . (lambda () (interactive) (load-file buffer-file-name))) ("C-c C-z" . ielm)) - :config + :init (add-hook 'emacs-lisp-mode-hook - #'eldoc-mode) + #'eldoc-mode) ;; ref: imenu - https://www.gnu.org/software/emacs/manual/html_node/emacs/Imenu.html (add-hook 'emacs-lisp-mode-hook - #'(lambda () (imenu-add-to-menubar "@Index"))) + #'(lambda () (imenu-add-to-menubar "@Index"))) ;; ref: prettify-symbols-mode - prog-mode.el (add-hook 'emacs-lisp-mode-hook - #'prettify-symbols-mode) + #'prettify-symbols-mode) + ;; ref: https://stackoverflow.com/a/6914626 + ;; (add-hook 'emacs-lisp-mode-hook + ;; '(lambda () + ;; (set (make-local-variable lisp-indent-function) + ;; 'common-lisp-indent-function))) ;; ref: inferior-emacs-lisp-mode "버퍼: *ielm*" (add-hook 'lisp-interaction-mode-hook - #'eldoc-mode) + #'eldoc-mode) (add-hook 'eval-expression-minibuffer-setup-hook - #'eldoc-mode)) + #'eldoc-mode)) + +(use-package eldoc + :ensure nil + :diminish eldoc-mode + :config + (setq eldoc-idle-delay 0.4)) + +;; (use-package eldoc-box +;; :ensure t +;; :config +;; (add-hook 'emacs-lisp-mode-hook #'eldoc-box-hover-at-point-mode)) + +(use-package eros + ;; eros(Evaluation Result OverlayS for Emacs Lisp) + ;; ref: https://github.com/xiongtx/eros + :ensure t + :config + (add-hook 'emacs-lisp-mode-hook + #'eros-mode)) + +(use-package elisp-autofmt + ;; ref: https://codeberg.org/ideasman42/emacs-elisp-autofmt + :ensure t) + + +(use-package highlight-defined + ;; ref: https://github.com/Fanael/highlight-defined + :ensure t + :config + (add-hook 'emacs-lisp-mode-hook + #'highlight-defined-mode)) + +(use-package aggressive-indent + ;; ref: https://github.com/Malabarba/aggressive-indent-mode + :ensure t + :config + (add-hook 'emacs-lisp-mode-hook + #'aggressive-indent-mode)) + + +(use-package keycast + ;; ref: https://github.com/tarsius/keycast + ;; 모드라인: keycast-mode-line-mode + ;; 헤드라인: keycast-header-line-mode + ;; 탭 바: keycast-tab-bar-mode + ;; 다른 프레임: keycast-log-mode + :ensure t) + ``` diff --git a/src/emacs/emacs.d/config/os-linux.el.md b/src/emacs/emacs.d/config/os-linux.el.md index a182563..dfad149 100644 --- a/src/emacs/emacs.d/config/os-linux.el.md +++ b/src/emacs/emacs.d/config/os-linux.el.md @@ -1 +1,9 @@ # os-linux.el + + +``` lisp +;; file: os-linux.el + +(when (eq system-type 'gnu/linux) + ) +``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config/os-macos.el.md b/src/emacs/emacs.d/config/os-macos.el.md index 44bed64..36fcf09 100644 --- a/src/emacs/emacs.d/config/os-macos.el.md +++ b/src/emacs/emacs.d/config/os-macos.el.md @@ -1,16 +1,19 @@ # os-macos.el - +- 맥의 커맨드키를 이맥스의 메타키로 사용하는게 편하다. ``` lisp -;; 0011_macos.el +;; file: os-macos.el + +(when (eq system-type 'darwin) + ;; `설정::macOs' -(progn ;; `설정::macOs' ;; ;; ns : NeXTSTEP. Darwin이전에 사용되던 OS ;; darwin: Darwin (kernel)로 macOs의 기반이되는 코어. ;; darwin/ns/mac 이라 치면 보통 macOs구나 라고 생각하면 편하다. - ;; mac-function-modifier => alias ns-function-modifier + ;; mac-function-modifier => alias ns-function-modifier ;; ;; ref: https://www.gnu.org/software/emacs/manual/html_node/emacs/Mac-_002f-GNUstep-Customization.html ;; @@ -21,19 +24,18 @@ ;; |hyper|control|super|meta | Space |Cmd |Optn | ;; +-----+-------+-----+-----+-------------------+-----+-----+ ;; - (when (eq system-type 'darwin) - ;; ref: https://www.gnu.org/software/emacs/manual/html_node/emacs/Mac-_002f-GNUstep-Customization.html - (setq ns-function-modifier 'hyper) - (setq ns-control-modifier 'control) - (setq ns-option-modifier 'super) - (setq ns-command-modifier 'meta) - ;; (global-set-key (kbd "S-x") 'kill-region) - ;; (global-set-key (kbd "S-c") 'kill-ring-save) - ;; (global-set-key (kbd "S-v") 'yank) - ;; (global-set-key (kbd "S-a") 'mark-whole-buffer) - ;; (global-set-key (kbd "S-s") 'save-buffer) - ;; (global-set-key (kbd "S-z") 'undo) - ;; (global-set-key (kbd "S-+") 'text-scale-adjust) - ;; (global-set-key (kbd "S--") 'text-scale-adjust) - )) + ;; ref: https://www.gnu.org/software/emacs/manual/html_node/emacs/Mac-_002f-GNUstep-Customization.html + (setq ns-function-modifier 'hyper) + (setq ns-control-modifier 'control) + (setq ns-option-modifier 'super) + (setq ns-command-modifier 'meta) + ;; (global-set-key (kbd "S-x") 'kill-region) + ;; (global-set-key (kbd "S-c") 'kill-ring-save) + ;; (global-set-key (kbd "S-v") 'yank) + ;; (global-set-key (kbd "S-a") 'mark-whole-buffer) + ;; (global-set-key (kbd "S-s") 'save-buffer) + ;; (global-set-key (kbd "S-z") 'undo) + ;; (global-set-key (kbd "S-+") 'text-scale-adjust) + ;; (global-set-key (kbd "S--") 'text-scale-adjust) + ) ``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config/os-windows.el.md b/src/emacs/emacs.d/config/os-windows.el.md index d3257e2..75f9cc3 100644 --- a/src/emacs/emacs.d/config/os-windows.el.md +++ b/src/emacs/emacs.d/config/os-windows.el.md @@ -1 +1,8 @@ # os-windows.el + +``` lisp +;; file: os-windows.el + +(when (eq system-type 'windows-nt) + ) +``` diff --git a/src/emacs/emacs.d/config/setting-editting.el.md b/src/emacs/emacs.d/config/setting-editting.el.md index 3a7a26f..c8c65dc 100644 --- a/src/emacs/emacs.d/config/setting-editting.el.md +++ b/src/emacs/emacs.d/config/setting-editting.el.md @@ -1 +1,44 @@ # setting-editting.el + +편집활동에 도움이 되는것들을 설정한다. + +``` lisp +;; file: setting-editting.el + + +(use-package electric-pair-mode + ;; ref: https://www.gnu.org/software/emacs/manual/html_node/emacs/Matching.html + :ensure nil + :init + (require 'elec-pair) + (setq electric-pair-preserve-balance t) + (add-hook 'prog-mode-hook #'electric-pair-local-mode)) + + +(use-package apheleia + ;; ref: https://github.com/radian-software/apheleia + ;; Run code formatter on buffer contents without moving point, using RCS patches and dynamic programming + :ensure t + :demand + :config + (add-hook 'clojure-mode-hook #'apheleia-mode) + (add-hook 'emacs-lisp-mode-hook #'apheleia-mode) + + (setf (alist-get 'cljstyle apheleia-formatters) '("cljstyle" "pipe")) + (setf (alist-get 'clojure-mode apheleia-mode-alist) 'cljstyle) + ) + + +(use-package multiple-cursors + ;; ref: https://github.com/magnars/multiple-cursors.el + :ensure t + :bind + (("C-M-" . mc/mark-more-like-this-extended))) + +(use-package move-text + ;; ref: https://github.com/emacsfodder/move-text + :ensure t + :bind + (("M-" . move-text-up) + ("M-" . move-text-down))) +``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config/setting-editting.md b/src/emacs/emacs.d/config/setting-editting.md deleted file mode 100644 index f357e6e..0000000 --- a/src/emacs/emacs.d/config/setting-editting.md +++ /dev/null @@ -1,12 +0,0 @@ -# setting-editting.el - -``` lisp -;; file: 1002_editting.el - -(use-package smartparens-mode - :ensure smartparens ;; install the package - :hook (prog-mode text-mode markdown-mode) ;; add `smartparens-mode` to these hooks - :config - ;; load default config - (require 'smartparens-config)) -``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config/setting-font.el.md b/src/emacs/emacs.d/config/setting-font.el.md index d966aed..1de010c 100644 --- a/src/emacs/emacs.d/config/setting-font.el.md +++ b/src/emacs/emacs.d/config/setting-font.el.md @@ -1 +1,97 @@ # setting-font.el + +폰트설정. 고정폭이 제대로 적용(한글과 영어간격)되는지, 폰트가 잘 보이는지 확인한다. + +``` lisp +;; file: setting-font.el + +;; https://dejavu-fonts.github.io/ +;; https://github.com/naver/d2codingfont +;; https://www.google.com/get/noto/help/cjk/ +;; ref: https://www.emacswiki.org/emacs/SetFonts + +;; 0 o O l L i I 1 ! +;; , . "" '' `` +;; ;:|\/ +;; [](){}<> +;; +-*~ +;; S s C c V v P p + +;; 한글 테스트 +;; AABB CCDDEE + +;; abcdefghijklmnopqrstuvwxyz +;; ABCDEFGHIJKLMNOPQRSTUVWXYZ +;; Ξεσκεπάζω την ψυχοφθόρα βδελυγμία. +;; αβγδεζηθικλμνξοπρστυφχψως +;; ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ +;; У рудога вераб’я ў сховішчы +;; пад фатэлем ляжаць нейкія гаючыя зёлкі. +;; абвгґдђѓеёєжнњопрс +;; тћќуўuфхцчџшщъыьэюя +;; АБВГҐДЂЃЕЁЄЖНЊОПРС +;; ТЋЌУЎUФХЦЧЏШЩЪЫЬЭЮЯ +;; & 1234567890 .,:;… ¡!¿? +;; '" ‘’ “” ‚„ ′″‹› «» -–— +;; (/)[|]{\} * †‡§¶|‖ @ № +;; $£¥€₹₺₽¢ƒ %‰ ¼½¾⅓⅔⅛⅜⅝ +;; +−×÷∙=<>≤≥±^≠~≈¬ #π∞µ∂∫√ +;; •◦▪▫▴▸▾◂▵▹▿◃ +;; ●○■□▲▶▼◀△▷▽◁❒◆►◄◙◉◘ +;; ←↖↑↗→↘↓↙ ⇐⇑⇒⇓ ↔↕↨ ♀♂ ☼⌂ ☑ ✓ +;; ♪ ♫ ♥ ​♣​ ♦​ ♠​ ☺​ ☻ ​❤​ ☕​ 💩 ​🤖​ 🔒 +;;       + +(when (display-graphic-p) + ;; `비쥬얼::폰트_all-the-icons' + ;; ref: https://github.com/domtronn/all-the-icons.el + (use-package all-the-icons + :ensure t + :if (or (display-graphic-p) + (daemonp)) + :config + ;; ref: https://github.com/domtronn/all-the-icons.el/issues/120#issuecomment-565438080 + (defun aorst/font-installed-p (font-name) + "Check if font with FONT-NAME is available." + (if (find-font (font-spec :name font-name)) + t + nil)) + (when (and (not (aorst/font-installed-p "all-the-icons")) + (window-system)) + (all-the-icons-install-fonts t))) + (use-package all-the-icons-dired + ;; https://github.com/jtbm37/all-the-icons-dired + :ensure t + :after (all-the-icons dired) + :hook (dired-mode . all-the-icons-dired-mode)) + (use-package all-the-icons-ibuffer + ;; https://github.com/seagle0128/all-the-icons-ibuffer + :ensure t + :after (all-the-icons ibuffer) + :hook (ibuffer-mode . all-the-icons-ibuffer-mode))) + + +(when (display-graphic-p) + (defun available-font? (font) + (->> (font-family-list) + (member font))) + (let ((font-name "D2Coding")) + (when (available-font? font-name) + (set-face-font 'default font-name) + (set-frame-font font-name nil t) + (set-fontset-font "fontset-default" '(#x1100 . #x11ff) (cons font-name "iso10646")) + (set-fontset-font "fontset-default" '#x20a9 (cons font-name "iso10646")) + (set-fontset-font "fontset-default" '(#x302e . #x302f) (cons font-name "iso10646")) + (set-fontset-font "fontset-default" '(#x3130 . #x318f) (cons font-name "iso10646")) + (set-fontset-font "fontset-default" '(#x3200 . #x321e) (cons font-name "iso10646")) + (set-fontset-font "fontset-default" '(#x3260 . #x327f) (cons font-name "iso10646")) + (set-fontset-font "fontset-default" '(#xa960 . #xa97f) (cons font-name "iso10646")) + (set-fontset-font "fontset-default" '(#xac00 . #xd7a3) (cons font-name "iso10646")) + (set-fontset-font "fontset-default" '(#xd7b0 . #xd7ff) (cons font-name "iso10646")) + (set-fontset-font "fontset-default" '(#xffa1 . #xffdc) (cons font-name "iso10646")) + (set-fontset-font "fontset-default" '#xffe6 (cons font-name "iso10646")) + (set-fontset-font t 'hangul (font-spec :name font-name)) + (set-face-attribute 'default nil :family font-name) + (setq face-font-rescale-alist + '((font-name . 1)))))) +``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config/setting-navigation.el.md b/src/emacs/emacs.d/config/setting-navigation.el.md index 51cd1a9..6feb696 100644 --- a/src/emacs/emacs.d/config/setting-navigation.el.md +++ b/src/emacs/emacs.d/config/setting-navigation.el.md @@ -1 +1,49 @@ # setting-navigation.el + +이동, 탐색, 버퍼관리 등을 설정한다. + +``` lisp +;; file: setting-navigation.el + +(progn + ;; `스크롤' + (setq redisplay-dont-pause t) + (setq scroll-margin 1) + (setq scroll-step 1) + (setq scroll-conservatively 10000) + (setq scroll-preserve-screen-position 1) + ;; `마우스' + (setq mouse-wheel-follow-mouse 't) + (setq mouse-wheel-scroll-amount '(1 ((shift) . 1)))) + +(progn ;; `ibuffer' + (use-package ibuffer + ;; Emacs(22) + ;; ref: https://github.com/emacs-mirror/emacs/blob/master/lisp/ibuffer.el + :config + (defalias 'list-buffers 'ibuffer) + (setq ibuffer-expert t)) + ;; (use-package nerd-icons-ibuffer + ;; ;; ref: https://github.com/seagle0128/nerd-icons-ibuffer + ;; :requires ibuffer + ;; :ensure t + ;; :hook (ibuffer-mode . nerd-icons-ibuffer-mode)) + ) + + +(use-package ido-vertical-mode + ;; ref: https://github.com/creichert/ido-vertical-mode.el + :ensure t + :config + (ido-mode +1) + (ido-vertical-mode +1) + (setq ido-vertical-define-keys 'C-n-and-C-p-only)) + +(use-package amx + ;; smex => amx + ;; ref: https://github.com/DarwinAwardWinner/amx + :ensure t + :config + (amx-mode)) + +``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config/setting-theme.el.md b/src/emacs/emacs.d/config/setting-theme.el.md index 220c9e3..fa0a6c1 100644 --- a/src/emacs/emacs.d/config/setting-theme.el.md +++ b/src/emacs/emacs.d/config/setting-theme.el.md @@ -1 +1,4 @@ # setting-theme.el + +- [색상 테마](../../../emacs/package/theme.md) + diff --git a/src/emacs/emacs.d/config/setting-treemacs.el.md b/src/emacs/emacs.d/config/setting-treemacs.el.md index 1d131bf..4143076 100644 --- a/src/emacs/emacs.d/config/setting-treemacs.el.md +++ b/src/emacs/emacs.d/config/setting-treemacs.el.md @@ -1 +1,37 @@ # setting-treemacs.el + +M-x treemacs를 실행하면 파일트리를 볼 수 있습니다. + +``` lisp +;; file: setting-treemacs.el + +(use-package treemacs + ;; ref: https://github.com/Alexander-Miller/treemacs + :ensure t + :defer t + :bind ("" . treemacs-rename-file) + :config + (treemacs-follow-mode +1) + (treemacs-filewatch-mode +1) + (treemacs-hide-gitignored-files-mode +1) + ;; (add-hook 'after-init-hook #'treemacs) + ) + +(use-package treemacs-projectile + :ensure t + :after (treemacs projectile)) + +(use-package treemacs-magit + :ensure t + :requires (magit) + :after (treemacs magit)) + +;; (use-package treemacs-icons-dired +;; :hook (dired-mode . treemacs-icons-dired-enable-once) +;; :ensure t) +;; (use-package lsp-treemacs +;; :ensure t +;; :after (treemacs) +;; :config +;; (add-hook 'prog-mode-hook #'lsp-treemacs-sync-mode)) +``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config/util-command.el.md b/src/emacs/emacs.d/config/util-command.el.md index e105faa..44207b8 100644 --- a/src/emacs/emacs.d/config/util-command.el.md +++ b/src/emacs/emacs.d/config/util-command.el.md @@ -1 +1,16 @@ # util-command.el + +``` lisp +;; file: util-command.el + +(use-package urgrep + ;; ref: https://github.com/jimporter/urgrep + :ensure t) + +(use-package ag + :ensure t + :commands (ag) + :config + (setq ag-highlight-search t) + (setq ag-group-matches nil)) +``` diff --git a/src/emacs/emacs.d/config/util-git.el.md b/src/emacs/emacs.d/config/util-git.el.md index 408572d..7daa1e9 100644 --- a/src/emacs/emacs.d/config/util-git.el.md +++ b/src/emacs/emacs.d/config/util-git.el.md @@ -1 +1,48 @@ # util-git.el + +``` lisp +;; file: util-git.el + +;; ** magit-blame coomand +;; | RET | magit-show-commit | +;; | SPC | magit-diff-show-or-scroll-up | +;; | DEL | magit-diff-show-or-scroll-down | +;; | b | magit-blame-popup | +;; | n | magit-blame-next-chunk | +;; | N | magit-blame-next-chunk-same-commit | +;; | p | magit-blame-previous-chunk | +;; | P | magit-blame-previous-chunk-same-commit | +;; | q | magit-blame-quit | + +;; ** git-timemachine command +;; | p | Move to the previous revision | +;; | n | Move to next revision | +;; | w | Copy the hash of the current revision | +;; | W | Copy the full hash of the current revision | +;; | g | Move to specified revision | +;; | t | Move to revision with selected commit message | +;; | q | Quit git-timemachine | +;; | b | Run magit-blame on the currently visited revision. | + +(use-package magit + :ensure t + :bind + ("C-c g b" . magit-blame-addition) + ("C-c g m" . magit)) + +(use-package git-gutter + ;;:diminish + :ensure t + :config + (global-git-gutter-mode +1) + (custom-set-variables + '(git-gutter:update-interval 2) + '(git-gutter:modified-sign "*") + '(git-gutter:added-sign "+") + '(git-gutter:deleted-sign "-") + '(git-gutter:hide-gutter nil))) + +(when (display-graphic-p) + (use-package git-gutter-fringe + :ensure t)) +``` \ No newline at end of file diff --git a/src/emacs/emacs.d/config/util-quickrun.el.md b/src/emacs/emacs.d/config/util-quickrun.el.md index dcfe571..5a98982 100644 --- a/src/emacs/emacs.d/config/util-quickrun.el.md +++ b/src/emacs/emacs.d/config/util-quickrun.el.md @@ -1 +1,11 @@ # util-quickrun.el + +``` lisp +;; file: util-quickrun.el + +(use-package quickrun + :ensure t + :bind + (("" . quickrun) + ("" . quickrun-compile-only))) +``` \ No newline at end of file diff --git a/src/emacs/emacs.d/early-init.el.md b/src/emacs/emacs.d/early-init.el.md index e1cea78..d8f7374 100644 --- a/src/emacs/emacs.d/early-init.el.md +++ b/src/emacs/emacs.d/early-init.el.md @@ -2,3 +2,24 @@ - `~/.emacs.d/early-init.el`은 다음과 같은 일을 할 것입니다. - GUI 로드되기 전 설정 + +| | | +| ------------------ | --------------------------------------------------------------------------------- | +| gc-cons-threshold | GC가 발생되는 바이트 수 설정 | +| gc-cons-percentage | gc-cons-threshold를 바탕으로 percentage가 초과되면 GC가 발생 - 기본값 0.1. 즉 10% | + +GUI가 로드되기 전에 설정됨으로, menu-bar, tool-bar와 같이 안쓰는 것이 있다면, 이 단계에서 제거해주는 것이 좋습니다. + +``` lisp +(setq gc-cons-threshold most-positive-fixnum) +(setq gc-cons-percentage 0.6) +(add-hook 'emacs-startup-hook + (lambda () + (setq gc-cons-threshold (* 16 1024 1024))) + (setq gc-cons-percentage 0.1)) + + +(push '(menu-bar-lines . 0) default-frame-alist) +(push '(tool-bar-lines . 0) default-frame-alist) +(push '(vertical-scroll-bars) default-frame-alist) +``` \ No newline at end of file diff --git a/src/emacs/emacs.d/init.el.md b/src/emacs/emacs.d/init.el.md index 0094e92..6802210 100644 --- a/src/emacs/emacs.d/init.el.md +++ b/src/emacs/emacs.d/init.el.md @@ -95,6 +95,52 @@ ))) ``` +## config-loader + +``` lisp +(progn ;; `설정' + (thread-last + "config-loader.el" + (locate-user-emacs-file) + (file-truename) + (load-file)) + (defconst CONFIG_DIR "config/") + (defconst CONFIG_LIST + '( +;;; =========== `base-' + base-define.el + base-setting.el +;;; =========== `os-' + os-windows.el + os-macos.el + os-linux.el +;;; =========== `setting-' + setting-theme.el + setting-ui.el + setting-navigation.el + setting-editting.el + setting-font.el + setting-treemacs.el + setting-projectile.el +;;; =========== `lang-' : language(programming) + lang-emacs-lisp.el + ;; lang-common-lisp-sly.el + lang-common-lisp-slime.el + lang-clojure-cider.el + lang-racket-racket-mode.el +;;; =========== `file-' : file type + file-markdown.el + file-json.el +;;; =========== `util-' + util-git.el + util-flymake.el + util-quickrun.el + util-command.el + ;; util-completion.el + )) + (config-loader:load-config CONFIG_DIR CONFIG_LIST)) +``` + ## ref - [emacs-jp/init-loader](https://github.com/emacs-jp/init-loader/) \ No newline at end of file diff --git a/src/help.md b/src/help.md index 3ec8f6d..87cebbf 100644 --- a/src/help.md +++ b/src/help.md @@ -1,6 +1,7 @@ # 도움받기 - [커뮤니티 도움받기](https://lispkorea.github.io/help/) +- - - - chatgpt