feat: add org-journal integration and calendar keybindings
- Configure org-journal with custom templates and auto-setup hooks - Add keybindings for calendar access and journal management - Update org-agenda-files to include journal and blog paths
This commit is contained in:
@@ -183,9 +183,18 @@
|
|||||||
;; 存储一个链接
|
;; 存储一个链接
|
||||||
(global-set-key (kbd "C-c l") 'org-store-link)
|
(global-set-key (kbd "C-c l") 'org-store-link)
|
||||||
|
|
||||||
|
;; 打开calendar
|
||||||
|
(global-set-key (kbd "C-c o C") 'calendar)
|
||||||
|
|
||||||
|
;; 在calendar中快速打开当天日记
|
||||||
|
(eval-after-load "calendar"
|
||||||
|
'(define-key calendar-mode-map (kbd "j o") 'org-journal-open-entry-for-editing))
|
||||||
|
|
||||||
|
;; 日记
|
||||||
|
(global-set-key (kbd "C-c j o") 'org-journal-open-current-journal-file)
|
||||||
|
(global-set-key (kbd "C-c j n") 'org-journal-new-entry)
|
||||||
|
|
||||||
;; emms
|
;; emms
|
||||||
|
|
||||||
(global-set-key (kbd "C-c m n") 'emms-next)
|
(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 p") 'emms-previous)
|
||||||
(global-set-key (kbd "C-c m b") 'emms-browser)
|
(global-set-key (kbd "C-c m b") 'emms-browser)
|
||||||
|
|||||||
@@ -63,7 +63,10 @@
|
|||||||
|
|
||||||
;; agenda相关
|
;; agenda相关
|
||||||
(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")) ; agenda文件,目录或单个文件
|
(with-eval-after-load 'org
|
||||||
|
(setq org-agenda-files '("d:/emacs/org/learning-org-mode.org"
|
||||||
|
"d:/emacs/hugo/this-is-my-blog/all-blog.org"
|
||||||
|
"d:/emacs/my-org-daily/"))) ; agenda文件,目录或文件
|
||||||
(setq org-agenda-span 'day)
|
(setq org-agenda-span 'day)
|
||||||
|
|
||||||
|
|
||||||
@@ -144,4 +147,56 @@ See `org-capture-templates' for more information."
|
|||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(org-table-map-tables 'org-table-align t)))
|
(org-table-map-tables 'org-table-align t)))
|
||||||
|
|
||||||
|
;; org-journal
|
||||||
|
(use-package org-journal
|
||||||
|
:config
|
||||||
|
(setq org-journal-dir "D:/emacs/my-org-daily/"
|
||||||
|
org-journal-file-format "%Y-%m-%d.org"
|
||||||
|
org-journal-file-header "#+title: Daily Journal\n#+category: journal\n\n"
|
||||||
|
org-journal-time-format "%R \n:PROPERTIES:\n:Created: <%Y-%m-%d %a %H:%M:%S>\n:END:\n"
|
||||||
|
org-journal-time-prefix "\n*** TODO "
|
||||||
|
org-journal-hide-entries-p t
|
||||||
|
org-journal-date-format (lambda (time)
|
||||||
|
(format "* %s %s\n:PROPERTIES:\n:Created: [%s]\n:END:"
|
||||||
|
(format-time-string "%Y-%m-%d" time)
|
||||||
|
(format-time-string "%a" time)
|
||||||
|
(format-time-string "%Y-%m-%d %a" time))))
|
||||||
|
|
||||||
|
(defun my/journal-setup-new-day ()
|
||||||
|
(save-excursion
|
||||||
|
(org-back-to-heading)
|
||||||
|
(let ((day-end (save-excursion (org-end-of-subtree) (point))))
|
||||||
|
(unless (search-forward "** daily" day-end t)
|
||||||
|
(goto-char day-end)
|
||||||
|
(insert "\n\n** daily\n\n\n")
|
||||||
|
(insert "** tasks\n")))))
|
||||||
|
|
||||||
|
(add-hook 'org-journal-after-header-create-hook #'my/journal-setup-new-day)
|
||||||
|
|
||||||
|
(defun my/journal-position-cursor-after-time ()
|
||||||
|
(when (derived-mode-p 'org-journal-mode)
|
||||||
|
(org-back-to-heading)
|
||||||
|
(end-of-line)))
|
||||||
|
|
||||||
|
(add-hook 'org-journal-after-entry-create-hook #'my/journal-position-cursor-after-time)
|
||||||
|
|
||||||
|
(defun org-journal-open-entry-for-editing (&optional event)
|
||||||
|
"Open journal entry for the date under cursor in calendar for editing."
|
||||||
|
(interactive
|
||||||
|
(list last-nonmenu-event))
|
||||||
|
(let* ((date (calendar-cursor-to-date t event))
|
||||||
|
(time (org-journal--calendar-date->time date))
|
||||||
|
(org-journal-file (org-journal--get-entry-path time)))
|
||||||
|
(if (file-exists-p org-journal-file)
|
||||||
|
(progn
|
||||||
|
(funcall org-journal-find-file org-journal-file)
|
||||||
|
(unless (org-journal--daily-p)
|
||||||
|
(org-journal--goto-entry date)))
|
||||||
|
(message "No journal entry for this date.")))))
|
||||||
|
|
||||||
|
;; 在org-journal加载cns-mode
|
||||||
|
(add-hook 'org-journal-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(global-cns-mode-enable-in-buffer)))
|
||||||
|
|
||||||
(provide 'init-org)
|
(provide 'init-org)
|
||||||
|
|||||||
@@ -21,9 +21,7 @@
|
|||||||
|
|
||||||
;; 同步scoop目录
|
;; 同步scoop目录
|
||||||
(when *is-windows*
|
(when *is-windows*
|
||||||
;; 将 Scoop 的 Python Scripts 添加到 exec-path
|
|
||||||
(add-to-list 'exec-path (expand-file-name "H/appppppppppp/scoop/apps/"))
|
(add-to-list 'exec-path (expand-file-name "H/appppppppppp/scoop/apps/"))
|
||||||
;; 同时更新环境变量 PATH(供子进程使用)
|
|
||||||
(setenv "PATH" (concat (expand-file-name "H/appppppppppp/scoop/apps/") ";" (getenv "PATH"))))
|
(setenv "PATH" (concat (expand-file-name "H/appppppppppp/scoop/apps/") ";" (getenv "PATH"))))
|
||||||
|
|
||||||
;; 当文件被外部修改时自动刷新
|
;; 当文件被外部修改时自动刷新
|
||||||
@@ -41,7 +39,7 @@
|
|||||||
|
|
||||||
;; 自定义scratch
|
;; 自定义scratch
|
||||||
(setq initial-scratch-message
|
(setq initial-scratch-message
|
||||||
";; SCRATCH SCRATCH SCRATCH\n\n")
|
";; SCRATCH SCRATCH SCRATCH\n\n")
|
||||||
|
|
||||||
;; 开启server mode
|
;; 开启server mode
|
||||||
(server-start)
|
(server-start)
|
||||||
|
|||||||
Reference in New Issue
Block a user