aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/core-basic.el54
-rw-r--r--core/core-dired.el45
-rw-r--r--core/core-editing.el25
-rw-r--r--core/core-ui.el21
-rw-r--r--core/core.el5
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)