diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/core-basic.el | 54 | ||||
| -rw-r--r-- | core/core-dired.el | 45 | ||||
| -rw-r--r-- | core/core-editing.el | 25 | ||||
| -rw-r--r-- | core/core-ui.el | 21 | ||||
| -rw-r--r-- | core/core.el | 5 |
5 files changed, 150 insertions, 0 deletions
diff --git a/core/core-basic.el b/core/core-basic.el new file mode 100644 index 0000000..ce5375d --- /dev/null +++ b/core/core-basic.el @@ -0,0 +1,54 @@ +;; -*- lexical-binding: t; -*- + +(setq confirm-kill-emacs #'yes-or-no-p ; 关闭 Emacs 时询问 y or n + auto-save-visited-interval 5 + native-comp-async-report-warinings-errors nil + backup-directory-alist `((".*" . ,temporary-file-directory)) + auto-save-file-name-transforms `((".*" ,temporary-file-directory t)) + select-enable-clipboard t + select-enable-primary t + interprogram-cut-function + (lambda (text &optional push) + (let ((process-connection-type nil)) + (let ((proc (start-process "xclip" nil "xclip" "-selection" "clipboard"))) + (process-send-string proc text) + (process-send-eof proc)))) + interprogram-paste-function + (lambda () + (shell-command-to-string "xclip -o -selection clipboard"))) + +(setq-default delete-by-moving-to-transh t ; 删除文件移动到垃圾箱 + window-combination-resize t ; 新窗口平均其他左右窗口 + x-stretch-cursor t ; 将光标拉伸到字符宽度 + ) + +(defun my/keyboard-escape-quit() + "快速的 Esc 退出 minibuffer" + (interactive) + (keyboard-escape-quit)) + +(global-set-key (kbd "<escape>") #'my/keyboard-escape-quit) + +;; 在 Dired 中,按`l`进入文件,按`h`回到上一级目录 +(add-hook 'evil-mode-hook (lambda () +(with-eval-after-load 'dired + (add-hook 'dired-mode-hook + (lambda () + (define-key evil-normal-state-local-map (kbd "h") nil) + (define-key evil-normal-state-local-map (kbd "l") nil) + (define-key evil-normal-state-local-map (kbd "h") #'dired-up-directory) + (define-key evil-normal-state-local-map (kbd "l") #'dired-find-file)))))) + + (add-hook 'dired-mode-hook + (lambda () + (define-key dired-mode-map (kbd "C-b") nil) + (define-key dired-mode-map (kbd "C-f") nil) + (define-key dired-mode-map (kbd "C-b") #'dired-up-directory) + (define-key dired-mode-map (kbd "C-f") #'dired-find-file))) + +(global-set-key (kbd "<escape>") #'my/keyboard-escape-quit) + +(global-auto-revert-mode t) ; 另一程序修改文件让 Emacs 及时刷新 Buffer +(auto-save-mode 1) + +(provide 'core-basic) diff --git a/core/core-dired.el b/core/core-dired.el new file mode 100644 index 0000000..a68e2c4 --- /dev/null +++ b/core/core-dired.el @@ -0,0 +1,45 @@ +;; -*- lexical-binding: t; -*- + +(setq dired-recursive-copies 'always) +(setq dired-recursive-deletes 'always) +(setq dired-dwim-target t) + +(put 'dired-find-alternate-file 'disabled nil) +(with-eval-after-load 'dired + (define-key dired-mode-map (kbd "RET") 'dired-find-alternate-file) + (define-key dired-mode-map (kbd "^") (lambda () (interactive) (find-alternate-file "..")))) ; was dired-up-directory) + +(setq dired-dwim-target t) + +;; dired-sort +(defun dired-sort-size () + "Dired sort by size." + (interactive) + (dired-sort-other (concat dired-listing-switches "S"))) + +(defun dired-sort-extension () + "Dired sort by extension." + (interactive) + (dired-sort-other (concat dired-listing-switches "X"))) + +(defun dired-sort-ctime () + "Dired sort by create time." + (interactive) + (dired-sort-other (concat dired-listing-switches "ct"))) + +(defun dired-sort-utime () + "Dired sort by access time." + (interactive) + (dired-sort-other (concat dired-listing-switches "ut"))) + +(defun dired-sort-time () + "Dired sort by time." + (interactive) + (dired-sort-other (concat dired-listing-switches "t"))) + +(defun dired-sort-name () + "Dired sort by name." + (interactive) + (dired-sort-other (concat dired-listing-switches ""))) + +(provide 'core-dired) diff --git a/core/core-editing.el b/core/core-editing.el new file mode 100644 index 0000000..d6c10aa --- /dev/null +++ b/core/core-editing.el @@ -0,0 +1,25 @@ +;; -*- lexical-binding: t; -*- +(show-paren-mode t) +(save-place-mode 1) +(global-subword-mode 1) +(add-hook 'prog-mode-hook #'show-paren-mode) + +(electric-pair-mode 1) + +(defun setup-markdown-writing-environment () + "为 Markdown 写作优化的环境:开启 Olivetti,关闭行号。" + (interactive) + (variable-pitch-mode 1) + (display-line-numbers-mode -1) + (pixel-scroll-precision-mode 1) + (olivetti-mode)) + +(add-hook 'markdown-mode-hook + (lambda () + ;; 取消 Evil 的 TAB 绑定,使用 markdown-cycle + (define-key evil-normal-state-local-map (kbd "TAB") 'markdown-cycle) + (define-key evil-insert-state-local-map (kbd "TAB") 'indent-for-tab-command))) + +(setq evil-want-C-u-scroll t) + +(provide 'core-editing) diff --git a/core/core-ui.el b/core/core-ui.el new file mode 100644 index 0000000..f0190fd --- /dev/null +++ b/core/core-ui.el @@ -0,0 +1,21 @@ +;; -*- lexical-binding: t; -*- +(display-time-mode 1) + +(setq custom-safe-themes t + ring-bell-function 'ignore + cursor-type 'box + fringes-outside-margins t + display-time-24hr-format t ; 时间使用 24 小时制 + display-time-day-and-date t ; 时间显示包括日期和时间 + display-time-interval 60 ; 刷新频率 + display-time-format "%a %b %-e %H:%M" ; 时间格式 + scroll-step 1 + scroll-conservatively 10000) + +(load-theme 'doom-Iosvkem) + +(when (display-graphic-p) + (set-frame-size (selected-frame) 143 40)) + +(global-display-line-numbers-mode t) +(provide 'core-ui) diff --git a/core/core.el b/core/core.el new file mode 100644 index 0000000..767ca63 --- /dev/null +++ b/core/core.el @@ -0,0 +1,5 @@ +;; -*- lexical-binding: t; -*- +(require 'core-ui) +(require 'core-basic) +(require 'core-editing) +(provide 'core) |
