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:
@@ -9,6 +9,9 @@
|
|||||||
"7fea145741b3ca719ae45e6533ad1f49b2a43bf199d9afaee5b6135fd9e6f9b8"
|
"7fea145741b3ca719ae45e6533ad1f49b2a43bf199d9afaee5b6135fd9e6f9b8"
|
||||||
"2b0fcc7cc9be4c09ec5c75405260a85e41691abb1ee28d29fcd5521e4fca575b"
|
"2b0fcc7cc9be4c09ec5c75405260a85e41691abb1ee28d29fcd5521e4fca575b"
|
||||||
default))
|
default))
|
||||||
|
'(org-agenda-files
|
||||||
|
'("d:/emacs/org/learning-org-mode.org"
|
||||||
|
"d:/emacs/hugo/this-is-my-blog/all-blog.org"))
|
||||||
'(package-selected-packages
|
'(package-selected-packages
|
||||||
'(ace-window benchmark-init cape cnfonts corfu crux drag-stuff eglot
|
'(ace-window benchmark-init cape cnfonts corfu crux drag-stuff eglot
|
||||||
embark-consult everything exec-path-form-shell gcmh
|
embark-consult everything exec-path-form-shell gcmh
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
(setq package-enable-at-startup nil)
|
(setq package-enable-at-startup nil)
|
||||||
|
|
||||||
(setq inhibit-startup-screen t) ;; 禁用开始菜单
|
(setq inhibit-startup-screen t) ; 禁用开始菜单
|
||||||
(tool-bar-mode -1) ;; 禁用工具栏
|
(tool-bar-mode -1) ; 禁用工具栏
|
||||||
(menu-bar-mode -1) ;; 禁用菜单栏
|
(menu-bar-mode -1) ; 禁用菜单栏
|
||||||
(scroll-bar-mode -1) ;; 禁用滚动条
|
(scroll-bar-mode -1) ; 禁用滚动条
|
||||||
(setq display-line-numbers-type '2)
|
(setq display-line-numbers-type '2)
|
||||||
(global-display-line-numbers-mode t) ;; 启用行号
|
(global-display-line-numbers-mode t) ; 启用行号
|
||||||
|
(setq display-line-numbers-grow-only t) ; 行号栏只增不减
|
||||||
|
(setq display-line-numbers-width-start 4) ; 预设4位宽度
|
||||||
|
|
||||||
;; 启动时初始窗口最大化
|
;; 启动时初始窗口最大化
|
||||||
(add-to-list 'initial-frame-alist '(fullscreen . maximized))
|
(add-to-list 'initial-frame-alist '(fullscreen . maximized))
|
||||||
|
|||||||
1
init.el
1
init.el
@@ -18,3 +18,4 @@
|
|||||||
(require 'init-kbd)
|
(require 'init-kbd)
|
||||||
(require 'init-ui)
|
(require 'init-ui)
|
||||||
(require 'init-segmentation)
|
(require 'init-segmentation)
|
||||||
|
(put 'scroll-left 'disabled nil)
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
(global-set-key (kbd "C-c c a") 'mc/mark-all-in-region)
|
(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-previous-like-this)
|
||||||
(global-set-key (kbd "C->") 'mc/mark-next-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()
|
(defun duplicate-and-move-to-next-line()
|
||||||
@@ -89,6 +90,9 @@
|
|||||||
(global-set-key (kbd "<mouse-5>") 'next-buffer)
|
(global-set-key (kbd "<mouse-5>") 'next-buffer)
|
||||||
(global-set-key (kbd "M-]") '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-p") 'backward-paragraph)
|
||||||
(global-set-key (kbd "M-n") 'forward-paragraph)
|
(global-set-key (kbd "M-n") 'forward-paragraph)
|
||||||
@@ -103,11 +107,11 @@
|
|||||||
;; 使用C-c <delete>切换到scrath buffer
|
;; 使用C-c <delete>切换到scrath buffer
|
||||||
(global-set-key (kbd "C-c <delete>") 'scratch-buffer)
|
(global-set-key (kbd "C-c <delete>") 'scratch-buffer)
|
||||||
|
|
||||||
;; 使用M-<方向键>调整window
|
;; 调整window
|
||||||
(global-set-key (kbd "M-<left>") 'shrink-window-horizontally)
|
(global-set-key (kbd "<f5>") 'shrink-window-horizontally)
|
||||||
(global-set-key (kbd "M-<right>") 'enlarge-window-horizontally)
|
(global-set-key (kbd "<f6>") 'enlarge-window-horizontally)
|
||||||
(global-set-key (kbd "M-<up>") 'enlarge-window)
|
(global-set-key (kbd "<f7>") 'enlarge-window)
|
||||||
(global-set-key (kbd "M-<down>") 'shrink-window)
|
(global-set-key (kbd "<f8>") 'shrink-window)
|
||||||
|
|
||||||
;; crux相关
|
;; crux相关
|
||||||
(global-set-key (kbd "C-<backspace>") 'crux-kill-line-backwards) ;; C-DEL kill line backwards
|
(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)
|
(global-set-key (kbd "C-c f d") 'my-open-current-directory)
|
||||||
|
|
||||||
;; org-mode
|
;; org-mode相关
|
||||||
|
;; cycle当前subtree
|
||||||
(defun org-cycle-current-subtree()
|
(defun org-cycle-current-subtree()
|
||||||
"Cycle current org-mode subtree."
|
"Cycle current org-mode subtree."
|
||||||
(interactive)
|
(interactive)
|
||||||
@@ -175,4 +180,39 @@
|
|||||||
(org-cycle))
|
(org-cycle))
|
||||||
(global-set-key (kbd "C-<tab>") 'org-cycle-current-subtree)
|
(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)
|
(provide 'init-kbd)
|
||||||
|
|||||||
@@ -3,21 +3,55 @@
|
|||||||
|
|
||||||
(use-package org)
|
(use-package org)
|
||||||
|
|
||||||
;; (if *is-windows*
|
;; 预加载,防止windows的org-mode加载卡顿
|
||||||
;; (progn (run-with-idle-timer
|
(if *is-windows*
|
||||||
;; 0.5 nil
|
(progn (run-with-idle-timer
|
||||||
;; (lambda ()
|
0.5 nil
|
||||||
;; (with-temp-buffer
|
(lambda ()
|
||||||
;; (org-mode)
|
(with-temp-buffer
|
||||||
;; (org-mode))
|
(org-mode)
|
||||||
;; (message "Org preloaded")))))
|
(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
|
(setq org-todo-keywords
|
||||||
(quote ((sequence "TODO(t)" "STARTED(s)" "|" "DONE(d!/!)")
|
(quote ((sequence "TODO(t)" "STARTED(s)" "|" "DONE(d!/!)")
|
||||||
(sequence "WAITING(w@/!)" "SOMEDAY(S)" "|" "CANCELLED(c@/!)" "MEETING(m)" "PHONE(p)"))))
|
(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")
|
(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
|
;; org-contrib 和 org-checklist
|
||||||
(use-package org-contrib
|
(use-package org-contrib
|
||||||
:straight (org-contrib :type git :host github :repo "emacsmirror/org-contrib"
|
:straight (org-contrib :type git :host github :repo "emacsmirror/org-contrib"
|
||||||
@@ -27,25 +61,11 @@
|
|||||||
(lambda ()
|
(lambda ()
|
||||||
(require 'org-checklist nil t)))
|
(require 'org-checklist nil t)))
|
||||||
|
|
||||||
(setq org-log-done t)
|
;; agenda相关
|
||||||
(setq org-log-into-drawer t)
|
|
||||||
|
|
||||||
(global-set-key (kbd "C-c a") 'org-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-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
|
;; hugo
|
||||||
(with-eval-after-load 'org-capture
|
(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)
|
(global-set-key (kbd "C-c o v") 'my-blog-preview)
|
||||||
|
|
||||||
;; org tempo
|
|
||||||
;; (require 'org-tempo)
|
|
||||||
|
|
||||||
;; 批量调整表格
|
;; 批量调整表格
|
||||||
(defun org-table-align-all ()
|
(defun org-table-align-all ()
|
||||||
"Ajust all org table in current buffer."
|
"Ajust all table in current buffer."
|
||||||
(interactive)
|
(interactive)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
|
|||||||
@@ -89,6 +89,162 @@
|
|||||||
:hook (after-init . save-place-mode))
|
:hook (after-init . save-place-mode))
|
||||||
|
|
||||||
;; 安装ox-hugo
|
;; 安装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)
|
(provide 'init-package)
|
||||||
|
|||||||
Reference in New Issue
Block a user