You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
5.9 KiB
190 lines
5.9 KiB
;;; --------------------
|
|
;; 界面定制
|
|
|
|
;; 禁用菜单栏、滚动条和工具栏
|
|
(menu-bar-mode -1)
|
|
(scroll-bar-mode -1)
|
|
(tool-bar-mode -1)
|
|
|
|
;; 禁用启动首屏并设置最大化
|
|
(setq inhibit-startup-screen t)
|
|
(toggle-frame-maximized)
|
|
|
|
;; 全局高亮当前行
|
|
(global-hl-line-mode t)
|
|
|
|
;; 高亮匹配括号
|
|
(show-paren-mode t)
|
|
|
|
;; 获取当前显示器的DPI
|
|
(defun my-dpi ()
|
|
(let* ((attrs (car (display-monitor-attributes-list)))
|
|
(size (assoc 'mm-size attrs))
|
|
(sizex (cadr size))
|
|
(res (cdr (assoc 'geometry attrs)))
|
|
(resx (- (caddr res) (car res)))
|
|
dpi)
|
|
(catch 'exit
|
|
;; in terminal
|
|
(unless sizex
|
|
(throw 'exit 10))
|
|
;; on big screen
|
|
(when (> sizex 1000)
|
|
(throw 'exit 10))
|
|
;; DPI
|
|
(* (/ (float resx) sizex) 25.4))))
|
|
|
|
;; 设置中英文字体大小,使两者字体宽度相等
|
|
;; shzhzhyiwezitidaxi, shlizhzitikuduxide
|
|
(defun zos/font/seperate-font (default-size cjk-size high-dpi-cjk-size)
|
|
(let* ((z/default-size default-size)
|
|
; 判断DPI, 如果DPI<=120, 使用cjk-size(较小的值)作为cjk字体大小, 否则使用high-dpi-cjk-size(较大的值)作为cjk字体大小
|
|
(z/cjk-size (if (<= (my-dpi) 145) cjk-size high-dpi-cjk-size)))
|
|
(progn
|
|
;; 设置默认的字体大小,由于height表示 1/10pt,所以要*10
|
|
(set-face-attribute 'default nil
|
|
:family "Sarasa Mono SC"
|
|
:height (* z/default-size 10)
|
|
:weight 'normal
|
|
:width 'normal)
|
|
(set-face-attribute 'fixed-pitch nil
|
|
:family "Sarasa Mono SC")
|
|
|
|
;; 给相应的字符集设置中文字体,这里的字体是冬青黑体简体中文 W3。
|
|
(dolist (charset '(han cjk-misc chinese-gbk))
|
|
(set-fontset-font "fontset-default" charset (font-spec :name "Sarasa Mono SC" :size z/cjk-size))))))
|
|
(zos/font/seperate-font 12 16 24)
|
|
|
|
;; 设置默认编码
|
|
(prefer-coding-system 'utf-8)
|
|
(set-default-coding-systems 'utf-8)
|
|
(set-terminal-coding-system 'utf-8)
|
|
(set-keyboard-coding-system 'utf-8)
|
|
|
|
;; 设置主题
|
|
(load-theme 'wombat)
|
|
|
|
;; 包仓库
|
|
; (require 'package)
|
|
; (add-to-list 'package-archives
|
|
; '("melpa-stable" . "https://stable.melpa.org/packages/"))
|
|
; (package-initialize)
|
|
|
|
|
|
;;; --------------------
|
|
;; 功能定制
|
|
|
|
;; 修改询问函数为 y or n
|
|
(fset 'yes-or-no-p 'y-or-n-p)
|
|
|
|
;; 不要自动补全和备份文件
|
|
(setq make-backup-files nil)
|
|
(setq auto-save-default nil)
|
|
(setq create-lockfiles nil)
|
|
|
|
;; 粘贴的文字替换选中region而不是追加到region最后
|
|
(delete-selection-mode 1)
|
|
|
|
;; 保存文件时删除尾部空行
|
|
(setq delete-traling-lines t)
|
|
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
|
|
|
;; 某些模式显示行号
|
|
(defun zos/enable-linum-mode ()
|
|
(linum-mode t))
|
|
(dolist (mode '(prog-mode-hook
|
|
text-mode-hook))
|
|
(add-hook mode 'zos/enable-linum-mode))
|
|
|
|
;; 高级echo补全
|
|
(icomplete-mode t)
|
|
|
|
;; minibuffer文件名补全忽略大小写
|
|
(setq read-file-name-completion-ignore-case t)
|
|
|
|
;; dired 排序将 . 开头的文件排前面
|
|
(setq ls-lisp-UCA-like-collation nil)
|
|
|
|
|
|
;;; --------------------
|
|
;; 快捷键定制
|
|
|
|
;; 窗口操作 M-h/j/k/l 上下左右移动焦点
|
|
(dolist (key-func-bind '(("M-h" . windmove-left)
|
|
("M-l" . windmove-right)
|
|
("M-j" . windmove-down)
|
|
("M-k" . windmove-up)))
|
|
(let ((key (car key-func-bind))
|
|
(func (cdr key-func-bind)))
|
|
(global-set-key (kbd key) func)))
|
|
|
|
(global-unset-key (kbd "C-M-l"))
|
|
(global-set-key (kbd "C-M-l") 'format-all-buffer)
|
|
|
|
;;; --------------------
|
|
;; 文件关联
|
|
;; (add-to-list 'auto-mode-alist
|
|
;; ("\\.vbs\\'" . vbs-mode))
|
|
|
|
|
|
;;; --------------------
|
|
;; 扩展功能
|
|
|
|
;; 扩展目录
|
|
(let* ((z/arg-pos (seq-position command-line-args "--load"))
|
|
(z/initel-path (if (number-or-marker-p z/arg-pos) (nth (+ z/arg-pos 1) command-line-args))))
|
|
(if (char-or-string-p z/initel-path)
|
|
(progn
|
|
(message z/initel-path)
|
|
(add-to-list 'load-path (file-name-concat (file-name-directory z/initel-path) "elisp")))
|
|
))
|
|
|
|
;; Cygwin 配置
|
|
(setq cygwin-mount-cygwin-bin-directory "C:/cygwin64/bin")
|
|
|
|
(if
|
|
(and (require 'cygwin-mount nil t) (require 'setup-cygwin nil t))
|
|
(progn
|
|
(add-to-list 'exec-path (expand-file-name "/stlink-1.7.0-x86_64-w64-mingw32/bin" cygwin-root-directory))
|
|
(setenv "PATH" (concat (expand-file-name "/stlink-1.7.0-x86_64-w64-mingw32/bin" cygwin-root-directory) ";" (getenv "PATH")))
|
|
(add-to-list 'exec-path (expand-file-name "/openocd-v0.11.0-i686-w64-mingw32/bin" cygwin-root-directory))
|
|
(setenv "PATH" (concat (expand-file-name "/openocd-v0.11.0-i686-w64-mingw32/bin" cygwin-root-directory) ";" (getenv "PATH")))
|
|
(add-to-list 'exec-path (expand-file-name "/gcc-arm-11.2-2022.02-mingw-w64-i686-arm-none-eabi/bin" cygwin-root-directory))
|
|
(setenv "PATH" (concat (expand-file-name "/gcc-arm-11.2-2022.02-mingw-w64-i686-arm-none-eabi/bin" cygwin-root-directory) ";" (getenv "PATH")))))
|
|
|
|
;; 文件浏览
|
|
(require 'neotree)
|
|
|
|
;; 格式化
|
|
(require 'format-all)
|
|
(defun z/format-all-enable ()
|
|
"Enable format-all on some mode"
|
|
(progn
|
|
(format-all-ensure-formatter)
|
|
(format-all-mode)))
|
|
|
|
(add-hook 'prog-mode-hook
|
|
'z/format-all-enable)
|
|
|
|
;; Latex格式化
|
|
(defun zos/latex/format-file ()
|
|
"在保存时格式化LaTeX文件"
|
|
(interactive)
|
|
(let ((latex-indent "d:/texlive/2021/bin/win32/latexindent.exe")
|
|
(buffer-encoding buffer-file-coding-system)
|
|
(filepath (buffer-file-name)))
|
|
(call-process latex-indent nil "*scratch*" nil
|
|
"-w" "-y=defaultIndent:' '" filepath)
|
|
(let ((coding-system-for-read buffer-encoding))
|
|
(revert-buffer t t t))))
|
|
|
|
;; Markdown mode
|
|
(require 'markdown-mode)
|
|
(add-to-list 'process-coding-system-alist ; 修复prettier乱码问题
|
|
'("prettier" utf-8-auto))
|
|
|
|
(add-hook 'markdown-mode-hook
|
|
'z/format-all-enable)
|
|
|
|
;; YAML mode
|
|
(require 'yaml-mode)
|
|
|