config: update org-mode, UI settings, and add EMMS media player
- Add EMMS music player configuration with mpv support - Refine org-mode with preload, new capture templates, and agenda setup - Update keybindings for windows, ibuffer, and org-store-link - Improve line number display settings
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
(global-set-key (kbd "C-c c a") 'mc/mark-all-in-region)
|
||||
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this)
|
||||
(global-set-key (kbd "C->") 'mc/mark-next-like-this)
|
||||
(global-set-key (kbd "<mouse-5>") 'mc/mark-pop)
|
||||
|
||||
;; 快速复制当前行
|
||||
(defun duplicate-and-move-to-next-line()
|
||||
@@ -89,6 +90,9 @@
|
||||
(global-set-key (kbd "<mouse-5>") 'next-buffer)
|
||||
(global-set-key (kbd "M-]") 'next-buffer)
|
||||
|
||||
;; 打开ibuffer
|
||||
(global-set-key (kbd "C-x B") 'ibuffer)
|
||||
|
||||
;; 段落导航
|
||||
(global-set-key (kbd "M-p") 'backward-paragraph)
|
||||
(global-set-key (kbd "M-n") 'forward-paragraph)
|
||||
@@ -103,11 +107,11 @@
|
||||
;; 使用C-c <delete>切换到scrath buffer
|
||||
(global-set-key (kbd "C-c <delete>") 'scratch-buffer)
|
||||
|
||||
;; 使用M-<方向键>调整window
|
||||
(global-set-key (kbd "M-<left>") 'shrink-window-horizontally)
|
||||
(global-set-key (kbd "M-<right>") 'enlarge-window-horizontally)
|
||||
(global-set-key (kbd "M-<up>") 'enlarge-window)
|
||||
(global-set-key (kbd "M-<down>") 'shrink-window)
|
||||
;; 调整window
|
||||
(global-set-key (kbd "<f5>") 'shrink-window-horizontally)
|
||||
(global-set-key (kbd "<f6>") 'enlarge-window-horizontally)
|
||||
(global-set-key (kbd "<f7>") 'enlarge-window)
|
||||
(global-set-key (kbd "<f8>") 'shrink-window)
|
||||
|
||||
;; crux相关
|
||||
(global-set-key (kbd "C-<backspace>") 'crux-kill-line-backwards) ;; C-DEL kill line backwards
|
||||
@@ -167,7 +171,8 @@
|
||||
|
||||
(global-set-key (kbd "C-c f d") 'my-open-current-directory)
|
||||
|
||||
;; org-mode
|
||||
;; org-mode相关
|
||||
;; cycle当前subtree
|
||||
(defun org-cycle-current-subtree()
|
||||
"Cycle current org-mode subtree."
|
||||
(interactive)
|
||||
@@ -175,4 +180,39 @@
|
||||
(org-cycle))
|
||||
(global-set-key (kbd "C-<tab>") 'org-cycle-current-subtree)
|
||||
|
||||
;; 存储一个链接
|
||||
(global-set-key (kbd "C-c l") 'org-store-link)
|
||||
|
||||
|
||||
;; emms
|
||||
|
||||
(global-set-key (kbd "C-c m n") 'emms-next)
|
||||
(global-set-key (kbd "C-c m p") 'emms-previous)
|
||||
(global-set-key (kbd "C-c m b") 'emms-browser)
|
||||
(global-set-key (kbd "C-c m q") 'emms-stop)
|
||||
(global-set-key (kbd "C-c m S") 'emms-toggle-single-track) ;自动连播开关
|
||||
|
||||
(with-eval-after-load 'embark
|
||||
(define-key embark-file-map (kbd "p") 'emms-play-dired))
|
||||
|
||||
(add-hook 'dired-mode-hook
|
||||
(lambda ()
|
||||
(local-unset-key (kbd "<mouse-2>"))
|
||||
(local-set-key (kbd "<mouse-2>") 'emms-play-dired)
|
||||
(local-set-key (kbd "C-c m a") 'emms-add-dired)))
|
||||
|
||||
(add-hook 'emms-playlist-mode-hook
|
||||
(lambda ()
|
||||
(local-unset-key (kbd "<prior>"))
|
||||
(local-unset-key (kbd "<next>"))
|
||||
(local-set-key (kbd "<prior>") 'emms-previous)
|
||||
(local-set-key (kbd "<next>") 'emms-next)))
|
||||
|
||||
|
||||
(defun switch-to-emms-playlist()
|
||||
(interactive)
|
||||
(switch-to-buffer "*EMMS Playlist*"))
|
||||
(global-set-key (kbd "C-c m l") 'switch-to-emms-playlist)
|
||||
|
||||
|
||||
(provide 'init-kbd)
|
||||
|
||||
@@ -3,21 +3,55 @@
|
||||
|
||||
(use-package org)
|
||||
|
||||
;; (if *is-windows*
|
||||
;; (progn (run-with-idle-timer
|
||||
;; 0.5 nil
|
||||
;; (lambda ()
|
||||
;; (with-temp-buffer
|
||||
;; (org-mode)
|
||||
;; (org-mode))
|
||||
;; (message "Org preloaded")))))
|
||||
;; 预加载,防止windows的org-mode加载卡顿
|
||||
(if *is-windows*
|
||||
(progn (run-with-idle-timer
|
||||
0.5 nil
|
||||
(lambda ()
|
||||
(with-temp-buffer
|
||||
(org-mode)
|
||||
(org-mode))
|
||||
(message "Org preloaded")))))
|
||||
|
||||
;; 一些随org-mode加载的基础配置
|
||||
(add-hook 'org-mode-hook
|
||||
(lambda ()
|
||||
(require 'org-tempo)
|
||||
(org-indent-mode)
|
||||
(local-set-key (kbd "C-c i") 'consult-org-heading)))
|
||||
|
||||
;; 设置todo关键字
|
||||
(setq org-todo-keywords
|
||||
(quote ((sequence "TODO(t)" "STARTED(s)" "|" "DONE(d!/!)")
|
||||
(sequence "WAITING(w@/!)" "SOMEDAY(S)" "|" "CANCELLED(c@/!)" "MEETING(m)" "PHONE(p)"))))
|
||||
|
||||
;; 设置标题字体大小
|
||||
;; (dolist (face org-level-faces)
|
||||
;; (set-face-attribute face nil :height 1))
|
||||
|
||||
;; log默认放入drawer中
|
||||
(setq org-log-done t)
|
||||
(setq org-log-into-drawer t)
|
||||
|
||||
;; 将系统时间(星期)设为英文,防止中文乱码
|
||||
(setq system-time-locale "C")
|
||||
|
||||
;; capture模板
|
||||
(setq org-capture-templates
|
||||
'(("t" "Todo" entry (file+headline "d:/emacs/org/todos.org" "Workspace")
|
||||
"* TODO [#B] %?\n %i\n %U"
|
||||
:empty-lines 1)
|
||||
("j" "Journal" entry (file+datetree "d:/emacs/org/journal.org")
|
||||
"* %?\nEntered on %U\n %i\n")))
|
||||
|
||||
(global-set-key (kbd "C-c o c") 'org-capture)
|
||||
|
||||
(setq org-agenda-custom-commands
|
||||
'(("c" "important stuff"
|
||||
((tags-todo "+PRIORITY=\"A\"")))
|
||||
;; ...other commands here
|
||||
))
|
||||
|
||||
;; org-contrib 和 org-checklist
|
||||
(use-package org-contrib
|
||||
:straight (org-contrib :type git :host github :repo "emacsmirror/org-contrib"
|
||||
@@ -27,25 +61,11 @@
|
||||
(lambda ()
|
||||
(require 'org-checklist nil t)))
|
||||
|
||||
(setq org-log-done t)
|
||||
(setq org-log-into-drawer t)
|
||||
|
||||
;; agenda相关
|
||||
(global-set-key (kbd "C-c a") 'org-agenda)
|
||||
(setq org-agenda-files '("d:/emacs/org/learning-org-mode.org"))
|
||||
(setq org-agenda-files '("d:/emacs/org/learning-org-mode.org")) ; agenda文件,目录或单个文件
|
||||
(setq org-agenda-span 'day)
|
||||
|
||||
(setq org-capture-templates
|
||||
'(("t" "Todo" entry (file+headline "d:/emacs/org/learning-org-mode.org" "Workspace")
|
||||
"* TODO [#B] %?\n %i\n %U"
|
||||
:empty-lines 1)))
|
||||
|
||||
(global-set-key (kbd "C-c o c") 'org-capture)
|
||||
|
||||
(setq org-agenda-custom-commands
|
||||
'(("c" "important stuff"
|
||||
((tags-todo "+PRIORITY=\"A\"")))
|
||||
;; ...other commands here
|
||||
))
|
||||
|
||||
;; hugo
|
||||
(with-eval-after-load 'org-capture
|
||||
@@ -116,12 +136,9 @@ See `org-capture-templates' for more information."
|
||||
|
||||
(global-set-key (kbd "C-c o v") 'my-blog-preview)
|
||||
|
||||
;; org tempo
|
||||
;; (require 'org-tempo)
|
||||
|
||||
;; 批量调整表格
|
||||
(defun org-table-align-all ()
|
||||
"Ajust all org table in current buffer."
|
||||
"Ajust all table in current buffer."
|
||||
(interactive)
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
|
||||
@@ -89,6 +89,162 @@
|
||||
:hook (after-init . save-place-mode))
|
||||
|
||||
;; 安装ox-hugo
|
||||
(use-package ox-hugo)
|
||||
(use-package ox-hugo
|
||||
:custom
|
||||
(empv-mpv-args '("--force-window=immediate"
|
||||
"--keep-open=yes"
|
||||
"--fs=no")))
|
||||
|
||||
;; 安装emms
|
||||
(use-package emms
|
||||
:init
|
||||
;; 设置音乐文件默认目录
|
||||
(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-package)
|
||||
|
||||
Reference in New Issue
Block a user