Config: extract EMMS and clean up config, add gptel session save with AI-generated filenames
This commit is contained in:
1
init.el
1
init.el
@@ -17,6 +17,7 @@
|
||||
(require 'init-startup)
|
||||
(require 'init-elpa)
|
||||
(require 'init-package)
|
||||
(require 'init-emms)
|
||||
(require 'init-org)
|
||||
(require 'init-org-refile)
|
||||
(require 'init-completion)
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
(corfu-popupinfo-mode)
|
||||
(corfu-history-mode)
|
||||
:config
|
||||
(add-hook 'after-init-hook #'global-corfu-mode)
|
||||
;;Quit completion before saving
|
||||
(add-hook 'before-save-hook #'corfu-quit)
|
||||
(advice-add #'persistent-scratch-save :before #'corfu-quit)
|
||||
@@ -103,8 +102,6 @@
|
||||
;; (add-to-list 'completion-at-point-functions #'cape-abbrev)
|
||||
|
||||
;; Make these capfs composable.
|
||||
(advice-add 'lsp-completion-at-point :around #'cape-wrap-noninterruptible)
|
||||
(advice-add 'lsp-completion-at-point :around #'cape-wrap-nonexclusive)
|
||||
(advice-add 'comint-completion-at-point :around #'cape-wrap-nonexclusive)
|
||||
(advice-add 'eglot-completion-at-point :around #'cape-wrap-buster)
|
||||
(advice-add 'eglot-completion-at-point :around #'cape-wrap-nonexclusive)
|
||||
|
||||
161
lisp/init-emms.el
Normal file
161
lisp/init-emms.el
Normal file
@@ -0,0 +1,161 @@
|
||||
;;; init-emms.el --- emms -*- lexical-binding: t -*-
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(use-package emms
|
||||
:init
|
||||
;; 设置音乐文件默认目录
|
||||
(when *is-windows*
|
||||
(setq emms-source-file-default-directory "F:/luping26-1-11/"))
|
||||
|
||||
:config
|
||||
;; --- 基础设置 ---
|
||||
(require 'emms-setup)
|
||||
(emms-all) ; 加载所有稳定功能
|
||||
|
||||
;; 使用简单模式的 mpv 播放器
|
||||
;; 移除默认的 emms-player-mpv
|
||||
(require 'emms-player-simple)
|
||||
|
||||
;; 定义简单的 mpv 播放器
|
||||
(define-emms-simple-player mpv-simple '(file url streamlist playlist)
|
||||
(concat "\\.\\("
|
||||
(mapconcat 'identity
|
||||
'("mp3" "mp4" "avi" "mkv" "flv" "mov" "wmv" "webm"
|
||||
"ogg" "ogv" "oga" "ogx"
|
||||
"flac" "wav" "aac" "m4a" "wma"
|
||||
"mpg" "mpeg" "mpe" "mpv"
|
||||
"3gp" "3g2"
|
||||
"m3u" "pls")
|
||||
"\\|")
|
||||
"\\)\\'\\|http[s]?://")
|
||||
"mpv"
|
||||
"--force-window=immediate"
|
||||
"--keep-open=yes"
|
||||
"--fs=no"
|
||||
"--quiet")
|
||||
|
||||
;; 设置播放器列表
|
||||
(setq emms-player-list '(emms-player-mpv-simple
|
||||
emms-player-vlc
|
||||
emms-player-mplayer))
|
||||
|
||||
(setq emms-playlist-default-playlist-name "*EMMS Playlist*")
|
||||
(setq emms-playlist-buffer-name "*EMMS Playlist*")
|
||||
|
||||
;; 使用更快的文件查找方法(windows上需要使用internal)
|
||||
;; (setq emms-source-file-directory-tree-function 'emms-source-file-directory-tree-find)
|
||||
(setq emms-source-file-directory-tree-function 'emms-source-file-directory-tree-internal)
|
||||
|
||||
;; 使用原生 Elisp 元数据读取器
|
||||
(setq emms-info-functions '(emms-info-native))
|
||||
|
||||
;; 异步读取元数据
|
||||
(setq emms-info-asynchronously t)
|
||||
|
||||
;; 使用更详细的曲目描述
|
||||
(setq emms-track-description-function #'emms-info-track-description)
|
||||
|
||||
;; 模式行设置
|
||||
(require 'emms-mode-line)
|
||||
(emms-mode-line-mode 1)
|
||||
(emms-mode-line-blank) ; 初始为空
|
||||
|
||||
;; 自定义模式行格式
|
||||
(setq emms-mode-line-format " [%s] ")
|
||||
(setq emms-mode-line-length-limit 60)
|
||||
|
||||
;; 播放时间显示
|
||||
(require 'emms-playing-time)
|
||||
(emms-playing-time-mode 1)
|
||||
|
||||
;; 歌词设置
|
||||
(require 'emms-lyrics)
|
||||
(setq emms-lyrics-display-on-modeline t) ; 在模式行显示歌词
|
||||
(setq emms-lyrics-display-on-minibuffer nil) ; 不在 minibuffer 显示
|
||||
(setq emms-lyrics-display-buffer nil) ; 不使用专用缓冲区
|
||||
(setq emms-lyrics-scroll-p t) ; 启用歌词滚动
|
||||
(setq emms-lyrics-scroll-timer-interval 0.4) ; 滚动间隔
|
||||
(setq emms-lyrics-dir "~/Music/lyrics") ; 歌词文件目录
|
||||
(setq emms-lyrics-display-format " %s ") ; 歌词显示格式
|
||||
(emms-lyrics 1) ; 启用歌词显示
|
||||
|
||||
;; 浏览器设置
|
||||
(require 'emms-browser)
|
||||
(setq emms-browser-default-browse-type 'artist)
|
||||
(setq emms-browser-covers nil) ; 禁用封面
|
||||
|
||||
;; 浏览器显示格式
|
||||
(setq emms-browser-info-title-format "%i%n")
|
||||
(setq emms-browser-playlist-info-title-format "%i%n")
|
||||
|
||||
;; 添加浏览器快捷键
|
||||
(define-key emms-browser-mode-map (kbd "SPC") 'emms-browser-add-tracks-and-play)
|
||||
|
||||
;; 缓存设置
|
||||
(require 'emms-cache)
|
||||
(emms-cache 1) ; 启用缓存
|
||||
|
||||
;; 历史记录
|
||||
(require 'emms-history)
|
||||
(add-hook 'emms-player-started-hook #'emms-last-played-update-current)
|
||||
|
||||
;; 音量控制
|
||||
(require 'emms-volume)
|
||||
;; 在播放列表中使用 +/- 控制音量
|
||||
(define-key emms-playlist-mode-map (kbd "+") #'emms-volume-raise)
|
||||
(define-key emms-playlist-mode-map (kbd "-") #'emms-volume-lower)
|
||||
|
||||
;; 添加(playlist中的)快捷键
|
||||
(define-key emms-playlist-mode-map (kbd "SPC") 'emms-pause)
|
||||
(define-key emms-playlist-mode-map (kbd "N") 'emms-next)
|
||||
(define-key emms-playlist-mode-map (kbd "P") 'emms-previous)
|
||||
(define-key emms-playlist-mode-map (kbd "R") 'emms-random)
|
||||
(define-key emms-playlist-mode-map (kbd "/") 'emms-playlist-limit)
|
||||
|
||||
;; 启用标记功能
|
||||
(require 'emms-mark)
|
||||
|
||||
;; 启用播放列表排序
|
||||
(require 'emms-playlist-sort)
|
||||
(define-key emms-playlist-mode-map (kbd "S s") 'emms-playlist-sort-map)
|
||||
|
||||
;; 启用播放列表限制/过滤
|
||||
(require 'emms-playlist-limit)
|
||||
|
||||
;; 启用标签编辑器
|
||||
(require 'emms-tag-editor)
|
||||
|
||||
;; 启用评分系统
|
||||
(require 'emms-score)
|
||||
(emms-score 1)
|
||||
|
||||
;; 启动后自动恢复播放列表
|
||||
;; (add-hook 'after-init-hook 'emms-history-load)
|
||||
|
||||
;; 显示加载完成消息
|
||||
(message "EMMS loaded")
|
||||
|
||||
;; 关闭自动连播
|
||||
(add-hook 'emms-playlist-mode-hook
|
||||
(lambda ()
|
||||
(setq emms-single-track t))))
|
||||
|
||||
;; 提供 EMMS 快捷启动函数
|
||||
(defun my-emms-start-browser ()
|
||||
"Open emms browser."
|
||||
(interactive)
|
||||
(emms-browser)
|
||||
(message "EMMS browser loaded"))
|
||||
|
||||
(defun my-emms-play-directory (dir)
|
||||
"Play all files in directory.."
|
||||
(interactive "Dchoose a directory: ")
|
||||
(emms-play-directory-tree dir)
|
||||
(message "playing: %s" dir))
|
||||
|
||||
(provide 'init-emms)
|
||||
|
||||
;;; init-emms.el ends here
|
||||
@@ -5,10 +5,10 @@
|
||||
;;; Code:
|
||||
|
||||
(use-package gptel
|
||||
:hook (gptel-mode-hook . visual-line-mode)
|
||||
:config
|
||||
(setq gptel-default-mode 'org-mode)
|
||||
|
||||
|
||||
(defun my/org-auto-gptel ()
|
||||
(when (derived-mode-p 'org-mode)
|
||||
(save-excursion
|
||||
@@ -86,12 +86,77 @@
|
||||
(setq gptel-model 'kimi-for-coding
|
||||
gptel-backend (gptel-get-backend "Kimi-Code"))
|
||||
|
||||
(defun my-gptel--sanitize-filename (name)
|
||||
"Clean NAME into a safe kebab-case filename string."
|
||||
(let ((clean (downcase name)))
|
||||
(setq clean (replace-regexp-in-string "[^a-z0-9_-]" "-" clean))
|
||||
(setq clean (replace-regexp-in-string "^-+\\|[-]+$" "" clean))
|
||||
(setq clean (replace-regexp-in-string "-[-]+" "-" clean))
|
||||
(string-trim clean)))
|
||||
|
||||
(defun my-gptel-save-session ()
|
||||
"Save current gptel session to ~/gptel/ with AI-generated filename.
|
||||
The filename is prefixed with a YYYYMMDD-HHmmss timestamp and generated
|
||||
from the last 1500 characters of the buffer."
|
||||
(interactive)
|
||||
(unless gptel-mode
|
||||
(user-error "Not a gptel session buffer"))
|
||||
(let* ((buf (current-buffer))
|
||||
(content (with-current-buffer buf
|
||||
(buffer-substring-no-properties (point-min) (point-max))))
|
||||
(tail (substring content (max 0 (- (length content) 1500))))
|
||||
(prompt-text (format "Based on the following conversation, generate a short kebab-case filename (3 to 5 lowercase English words, hyphen-separated, no file extension). Output ONLY the filename, nothing else.\n\n%s"
|
||||
tail)))
|
||||
(message "Generating filename with AI...")
|
||||
(let ((fsm (gptel-request prompt-text
|
||||
:system "You are a filename generator. Output ONLY a short kebab-case filename (3-5 lowercase English words separated by hyphens). No explanations, no quotes, no punctuation, no file extension."
|
||||
:stream nil
|
||||
:callback
|
||||
(lambda (response info)
|
||||
(condition-case err
|
||||
(cond
|
||||
((null response)
|
||||
(message "Failed to generate filename: %s"
|
||||
(or (plist-get info :status) "unknown error")))
|
||||
((not (stringp response))
|
||||
(message "Unexpected response type: %S" response))
|
||||
(t
|
||||
(let* ((generated (my-gptel--sanitize-filename (string-trim response)))
|
||||
(generated (if (string-empty-p generated)
|
||||
"gptel-session"
|
||||
generated))
|
||||
(timestamp (format-time-string "%Y%m%d-%H%M%S"))
|
||||
(dir (expand-file-name "~/gptel/"))
|
||||
(base (concat timestamp "-" generated))
|
||||
(file (expand-file-name (concat base ".org") dir)))
|
||||
;; handle name collision
|
||||
(when (file-exists-p file)
|
||||
(setq base (concat timestamp "-" generated "-" (format-time-string "%S")))
|
||||
(setq file (expand-file-name (concat base ".org") dir)))
|
||||
(unless (file-directory-p dir)
|
||||
(make-directory dir t))
|
||||
;; write-file triggers gptel--save-state to preserve metadata
|
||||
(with-current-buffer buf
|
||||
(write-file file))
|
||||
(if (file-exists-p file)
|
||||
(progn
|
||||
(pop-to-buffer (find-file-noselect file))
|
||||
(message "Saved gptel session to %s" file))
|
||||
(message "ERROR: File was not created: %s" file)))))
|
||||
(error (message "gptel save-session error: %S" err)))))))
|
||||
(unless (plist-get (gptel-fsm-info fsm) :callback)
|
||||
(message "WARNING: gptel-request did not register callback!")))))
|
||||
|
||||
(with-eval-after-load 'gptel
|
||||
(define-key gptel-mode-map (kbd "C-c C-s") #'my-gptel-save-session)
|
||||
(setf gptel--system-message
|
||||
"You are a large language model living in Emacs and a helpful assistant. Respond concisely.
|
||||
- NEVER use unescaped org-mode headings. Lines MUST NOT begin with `* `, `** `, `*** `, etc. If you must start a line with asterisks, use the standard org escape format `,*` (e.g. `,* Heading`, `,** Sub-heading`).")))
|
||||
|
||||
(use-package gptel-agent
|
||||
:init
|
||||
(with-eval-after-load 'gptel
|
||||
(require 'gptel-agent))
|
||||
:config
|
||||
(add-to-list 'gptel-agent-dirs "~/.emacs.d/lisp/" t)
|
||||
(gptel-agent-update))
|
||||
|
||||
@@ -4,11 +4,15 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; 好像是ivy-posframe里的函数,后面要用
|
||||
(defun childframe-completion-workable-p ()
|
||||
"Check if childframe completion is workable."
|
||||
(and (display-graphic-p)
|
||||
(not (eq system-type 'windows-nt))
|
||||
(>= emacs-major-version 26)))
|
||||
|
||||
(use-package hydra
|
||||
:defines (consult-imenu-config posframe-border-width)
|
||||
:functions childframe-completion-workable-p
|
||||
:hook ((emacs-lisp-mode . hydra-add-imenu)
|
||||
((after-init after-load-theme server-after-make-frame) . hydra-set-posframe))
|
||||
:defines (consult-imenu-config)
|
||||
:init
|
||||
(with-eval-after-load 'consult-imenu
|
||||
(setq consult-imenu-config
|
||||
@@ -18,24 +22,7 @@
|
||||
(?m "Macros" font-lock-function-name-face)
|
||||
(?p "Packages" font-lock-constant-face)
|
||||
(?t "Types" font-lock-type-face)
|
||||
(?v "Variables" font-lock-variable-name-face))))))
|
||||
|
||||
(defun hydra-set-posframe ()
|
||||
"Set display type and appearance of hydra."
|
||||
;; Display type
|
||||
(if (childframe-completion-workable-p)
|
||||
(setq hydra-hint-display-type 'posframe)
|
||||
(setq hydra-hint-display-type 'lv))
|
||||
;; Appearance
|
||||
(setq hydra-posframe-show-params
|
||||
`(:left-fringe 8
|
||||
:right-fringe 8
|
||||
:internal-border-width ,posframe-border-width
|
||||
:internal-border-color ,(face-background 'posframe-border nil t)
|
||||
:background-color ,(face-background 'tooltip nil t)
|
||||
:foreground-color ,(face-foreground 'tooltip nil t)
|
||||
:lines-truncate t
|
||||
:poshandler posframe-poshandler-frame-center-near-bottom))))
|
||||
(?v "Variables" font-lock-variable-name-face)))))))
|
||||
|
||||
;; multiple-cursors
|
||||
(defhydra hydra-multiple-cursors ()
|
||||
@@ -207,7 +194,7 @@ Disable jinx-mode if it's enable and global-jinx-mode is disable , otherwise tog
|
||||
|
||||
;; 使用快速切换到scratch buffer
|
||||
(if *is-mac*
|
||||
(global-set-key (kbd "C-C <f12>") 'scratch-buffer)
|
||||
(global-set-key (kbd "C-c <f12>") 'scratch-buffer)
|
||||
(global-set-key (kbd "C-c <delete>") 'scratch-buffer))
|
||||
|
||||
;; 调整window
|
||||
@@ -452,7 +439,9 @@ Disable jinx-mode if it's enable and global-jinx-mode is disable , otherwise tog
|
||||
"o" 'gptel
|
||||
"m" 'gptel-menu
|
||||
"s" 'gptel-send
|
||||
"a" 'gptel-agent)
|
||||
"a" 'gptel-agent
|
||||
"t" 'gptel-tools
|
||||
"g" 'gptel-mode)
|
||||
|
||||
(provide 'init-kbd)
|
||||
|
||||
|
||||
@@ -278,7 +278,6 @@
|
||||
#+title: %(symbol-value 'my-org-capture-temp-title)
|
||||
#+date: %U
|
||||
#+category: %^{Category|none|project|book|article|note|wisdom|fun|data}
|
||||
#+STARTUP: content
|
||||
|
||||
* %(symbol-value 'my-org-capture-temp-title) :root%^g
|
||||
:PROPERTIES:
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
;; 安装gcmh用于管理内存回收
|
||||
(use-package gcmh
|
||||
;; :demand t
|
||||
:demand t
|
||||
:init
|
||||
(setq gcmh-idle-delay 'auto
|
||||
gcmh-auto-idle-delay-factor 10
|
||||
@@ -187,7 +187,7 @@ targets."
|
||||
#'consult-preview-at-point-mode))))
|
||||
|
||||
;; nerd-icon
|
||||
(use-package nerd-icons)
|
||||
;; (use-package nerd-icons)
|
||||
|
||||
;; 启用savehist,保存命令顺序
|
||||
(use-package savehist
|
||||
@@ -291,159 +291,6 @@ targets."
|
||||
:bind (:map markdown-mode-map
|
||||
("C-c C-e" . markdown-do)))
|
||||
|
||||
;; 安装emms
|
||||
(use-package emms
|
||||
:init
|
||||
;; 设置音乐文件默认目录
|
||||
(when *is-windows*
|
||||
(setq emms-source-file-default-directory "F:/luping26-1-11/"))
|
||||
|
||||
:config
|
||||
;; --- 基础设置 ---
|
||||
(require 'emms-setup)
|
||||
(emms-all) ; 加载所有稳定功能
|
||||
|
||||
;; 使用简单模式的 mpv 播放器
|
||||
;; 移除默认的 emms-player-mpv
|
||||
(require 'emms-player-simple)
|
||||
|
||||
;; 定义简单的 mpv 播放器
|
||||
(define-emms-simple-player mpv-simple '(file url streamlist playlist)
|
||||
(concat "\\.\\("
|
||||
(mapconcat 'identity
|
||||
'("mp3" "mp4" "avi" "mkv" "flv" "mov" "wmv" "webm"
|
||||
"ogg" "ogv" "oga" "ogx"
|
||||
"flac" "wav" "aac" "m4a" "wma"
|
||||
"mpg" "mpeg" "mpe" "mpv"
|
||||
"3gp" "3g2"
|
||||
"m3u" "pls")
|
||||
"\\|")
|
||||
"\\)\\'\\|http[s]?://")
|
||||
"mpv"
|
||||
"--force-window=immediate"
|
||||
"--keep-open=yes"
|
||||
"--fs=no"
|
||||
"--quiet")
|
||||
|
||||
;; 设置播放器列表
|
||||
(setq emms-player-list '(emms-player-mpv-simple
|
||||
emms-player-vlc
|
||||
emms-player-mplayer))
|
||||
|
||||
(setq emms-playlist-default-playlist-name "*EMMS Playlist*")
|
||||
(setq emms-playlist-buffer-name "*EMMS Playlist*")
|
||||
|
||||
;; 使用更快的文件查找方法(windows上需要使用internal)
|
||||
;; (setq emms-source-file-directory-tree-function 'emms-source-file-directory-tree-find)
|
||||
(setq emms-source-file-directory-tree-function 'emms-source-file-directory-tree-internal)
|
||||
|
||||
;; 使用原生 Elisp 元数据读取器
|
||||
(setq emms-info-functions '(emms-info-native))
|
||||
|
||||
;; 异步读取元数据
|
||||
(setq emms-info-asynchronously t)
|
||||
|
||||
;; 使用更详细的曲目描述
|
||||
(setq emms-track-description-function #'emms-info-track-description)
|
||||
|
||||
;; 模式行设置
|
||||
(require 'emms-mode-line)
|
||||
(emms-mode-line-mode 1)
|
||||
(emms-mode-line-blank) ; 初始为空
|
||||
|
||||
;; 自定义模式行格式
|
||||
(setq emms-mode-line-format " [%s] ")
|
||||
(setq emms-mode-line-length-limit 60)
|
||||
|
||||
;; 播放时间显示
|
||||
(require 'emms-playing-time)
|
||||
(emms-playing-time-mode 1)
|
||||
|
||||
;; 歌词设置
|
||||
(require 'emms-lyrics)
|
||||
(setq emms-lyrics-display-on-modeline t) ; 在模式行显示歌词
|
||||
(setq emms-lyrics-display-on-minibuffer nil) ; 不在 minibuffer 显示
|
||||
(setq emms-lyrics-display-buffer nil) ; 不使用专用缓冲区
|
||||
(setq emms-lyrics-scroll-p t) ; 启用歌词滚动
|
||||
(setq emms-lyrics-scroll-timer-interval 0.4) ; 滚动间隔
|
||||
(setq emms-lyrics-dir "~/Music/lyrics") ; 歌词文件目录
|
||||
(setq emms-lyrics-display-format " %s ") ; 歌词显示格式
|
||||
(emms-lyrics 1) ; 启用歌词显示
|
||||
|
||||
;; 浏览器设置
|
||||
(require 'emms-browser)
|
||||
(setq emms-browser-default-browse-type 'artist)
|
||||
(setq emms-browser-covers nil) ; 禁用封面
|
||||
|
||||
;; 浏览器显示格式
|
||||
(setq emms-browser-info-title-format "%i%n")
|
||||
(setq emms-browser-playlist-info-title-format "%i%n")
|
||||
|
||||
;; 添加浏览器快捷键
|
||||
(define-key emms-browser-mode-map (kbd "SPC") 'emms-browser-add-tracks-and-play)
|
||||
|
||||
;; 缓存设置
|
||||
(require 'emms-cache)
|
||||
(emms-cache 1) ; 启用缓存
|
||||
|
||||
;; 历史记录
|
||||
(require 'emms-history)
|
||||
(add-hook 'emms-player-started-hook #'emms-last-played-update-current)
|
||||
|
||||
;; 音量控制
|
||||
(require 'emms-volume)
|
||||
;; 在播放列表中使用 +/- 控制音量
|
||||
(define-key emms-playlist-mode-map (kbd "+") #'emms-volume-raise)
|
||||
(define-key emms-playlist-mode-map (kbd "-") #'emms-volume-lower)
|
||||
|
||||
;; 添加(playlist中的)快捷键
|
||||
(define-key emms-playlist-mode-map (kbd "SPC") 'emms-pause)
|
||||
(define-key emms-playlist-mode-map (kbd "N") 'emms-next)
|
||||
(define-key emms-playlist-mode-map (kbd "P") 'emms-previous)
|
||||
(define-key emms-playlist-mode-map (kbd "R") 'emms-random)
|
||||
(define-key emms-playlist-mode-map (kbd "/") 'emms-playlist-limit)
|
||||
|
||||
;; 启用标记功能
|
||||
(require 'emms-mark)
|
||||
|
||||
;; 启用播放列表排序
|
||||
(require 'emms-playlist-sort)
|
||||
(define-key emms-playlist-mode-map (kbd "S s") 'emms-playlist-sort-map)
|
||||
|
||||
;; 启用播放列表限制/过滤
|
||||
(require 'emms-playlist-limit)
|
||||
|
||||
;; 启用标签编辑器
|
||||
(require 'emms-tag-editor)
|
||||
|
||||
;; 启用评分系统
|
||||
(require 'emms-score)
|
||||
(emms-score 1)
|
||||
|
||||
;; 启动后自动恢复播放列表
|
||||
;; (add-hook 'after-init-hook 'emms-history-load)
|
||||
|
||||
;; 显示加载完成消息
|
||||
(message "EMMS loaded")
|
||||
|
||||
;; 关闭自动连播
|
||||
(add-hook 'emms-playlist-mode-hook
|
||||
(lambda ()
|
||||
(setq emms-single-track t))))
|
||||
|
||||
;; 提供 EMMS 快捷启动函数
|
||||
(defun my-emms-start-browser ()
|
||||
"Open emms browser."
|
||||
(interactive)
|
||||
(emms-browser)
|
||||
(message "EMMS browser loaded"))
|
||||
|
||||
(defun my-emms-play-directory (dir)
|
||||
"Play all files in directory.."
|
||||
(interactive "Dchoose a directory: ")
|
||||
(emms-play-directory-tree dir)
|
||||
(message "playing: %s" dir))
|
||||
|
||||
;; vterm
|
||||
(unless *is-windows*
|
||||
(use-package vterm))
|
||||
|
||||
@@ -85,8 +85,8 @@
|
||||
(setq visible-bell t
|
||||
inhibit-compacting-font-caches t ; Don’t compact font caches during GC
|
||||
delete-by-moving-to-trash t ; Deleting files go to OS's trash folder
|
||||
make-backup-files nil ; Forbide to make backup files
|
||||
auto-save-default nil ; Disable auto save
|
||||
;; make-backup-files nil ; Forbide to make backup files
|
||||
;; auto-save-default nil ; Disable auto save
|
||||
|
||||
uniquify-buffer-name-style 'post-forward-angle-brackets ; Show path if names are same
|
||||
adaptive-fill-regexp "[ t]+|[ t]*([0-9]+.|*+)[ t]*"
|
||||
|
||||
@@ -38,6 +38,9 @@
|
||||
;; rainbow mode
|
||||
(use-package rainbow-mode)
|
||||
|
||||
;; rainbow-delimiters
|
||||
(use-package rainbow-delimiters)
|
||||
|
||||
;; 自定义主题路径
|
||||
(add-to-list 'custom-theme-load-path "~/.emacs.d/lisp/")
|
||||
|
||||
@@ -60,7 +63,7 @@
|
||||
;; (use-package color-theme-modern)
|
||||
(use-package naysayer-theme)
|
||||
|
||||
;; 安装smart-mode-line
|
||||
;; modeline
|
||||
;; (use-package smart-mode-line
|
||||
;; :config
|
||||
;; (setq sml/no-confirm-load-theme t)
|
||||
@@ -181,9 +184,9 @@
|
||||
|
||||
;; 安装cnfonts脚本,用于修复中英文对齐
|
||||
(use-package cnfonts
|
||||
:defer 0
|
||||
:config
|
||||
:init
|
||||
(cnfonts-mode 1)
|
||||
:config
|
||||
(cnfonts--select-profile "profile1"))
|
||||
|
||||
;; 主题修复脚本
|
||||
|
||||
Reference in New Issue
Block a user