feat[archive]: Removed archive functionality

I removed the advanced subtree archives as it was disrupting my
workflow.
I would like to rework it at some point.
I also stripped out the display-in-eww functionality.
This commit is contained in:
Judah Sotomayor 2023-11-13 12:43:22 -05:00
parent f5caccd7f7
commit b7b85eaf9a
Signed by: judahsotomayor
SSH Key Fingerprint: SHA256:9Dq4ppxhfAjbX+7HLXEt+ROMiIojI6kqQgUyFUJb9lI
2 changed files with 27 additions and 294 deletions

160
config.el
View File

@ -264,160 +264,30 @@ If nil it defaults to `split-string-default-separators', normally
(org-edna-mode) (org-edna-mode)
(use-package org-habit (use-package org-habit
:custom :custom
(org-habit-graph-column 1) (org-habit-graph-column 1)
(org-habit-preceding-days 10) (org-habit-preceding-days 10)
(org-habit-following-days 1) (org-habit-following-days 1)
(org-habit-show-habits-only-for-today nil)) (org-habit-show-habits-only-for-today nil))
(use-package! org-heatmap (use-package! org-heatmap
:after (org) :after (org)
:config :config
(org-heatmap-mode)) (org-heatmap-mode))
(map! :leader (map! :leader
:desc "Export to html and diplay with eww" :desc "Archive subtree"
:n "m A" #'org-archive-subtree-default) :n "m A" #'org-archive-subtree-default)
(require 'org-archive)
; Set the function to use for org-archive-default (C-c C-x C-a)
; (setq org-archive-location (concat org-directory "/archive/%s_archive::"))
; (setq org-archive-location "archive/archived_%s::")
(setq org-archive-location "~/org/archive.org")
(setq org-archive-location (concat org-directory "/archive.org::"))
; unmap org-archive-subtree
; select command to execute via org-archive-subtree-default (C-c C-x C-a)
(setq org-archive-default-command 'org-archive-subtree-hierarchical)
(defun line-content-as-string ()
"Returns the content of the current line as a string"
(save-excursion
(beginning-of-line)
(buffer-substring-no-properties
(line-beginning-position) (line-end-position))))
(defun org-child-list (&optional top-level)
"This function returns all children of a heading as a list. "
(interactive)
(save-excursion
;; this only works with org-version > 8.0, since in previous
;; org-mode versions the function (org-outline-level) returns
;; gargabe when the point is not on a heading.
(unless top-level
(if (= (org-outline-level) 0)
(outline-next-visible-heading 1)
(org-goto-first-child)))
(let ((child-list (list (line-content-as-string))))
(while (org-goto-sibling)
(setq child-list (cons (line-content-as-string) child-list)))
child-list)))
(defun fa/org-struct-subtree ()
"This function returns the tree structure in which a subtree belongs as a list."
(interactive)
(let ((archive-tree nil))
(save-excursion
(while (org-up-heading-safe)
(let ((heading
(buffer-substring-no-properties
(line-beginning-position) (line-end-position))))
(if (eq archive-tree nil)
(setq archive-tree (list heading))
(setq archive-tree (cons heading archive-tree))))))
archive-tree))
(defun org-archive-subtree-hierarchical ()
"This function archives a subtree hierarchical"
(interactive)
(let ((org-tree (fa/org-struct-subtree))
(source-buffer (current-buffer))
(file (abbreviate-file-name
(or (buffer-file-name (buffer-base-buffer))
(error "No file associated to buffer")))))
(save-excursion
(setq location (org-archive--compute-location
(or (org-entry-get nil "ARCHIVE" 'inherit)
org-archive-location))
afile (car location)
heading (cdr location)
infile-p (equal file (abbreviate-file-name (or afile ""))))
(unless afile
(error "Invalid `org-archive-location'"))
(if (not (equal heading ""))
(progn
(setq org-tree (cons heading
(mapcar (lambda (s) (concat "*" s)) org-tree)))
(org-demote-subtree)))
(if (> (length afile) 0)
(progn
(setq newfile-p (not (file-exists-p afile))
visiting (find-buffer-visiting afile)
target-buffer (or visiting (find-file-noselect afile))))
(progn
(setq target-buffer (current-buffer))))
(unless target-buffer
(error "Cannot access file \"%s\"" afile))
(org-cut-subtree)
(set-buffer target-buffer)
(setq ind-target-buffer (clone-indirect-buffer nil nil))
(set-buffer ind-target-buffer)
(org-mode)
(goto-char (point-min))
; simplified version of org-complex-heading-regexp-format
(setq my-org-complex-heading-regexp-format
(concat "^"
"\\(%s\\)"
"\\(?: *\\[[0-9%%/]+\\]\\)*"
"\\(?:[ \t]+\\(:[[:alnum:]_@#%%:]+:\\)\\)?"
"[ \t]*$"))
(setq top-level-p t)
(while (not (equal org-tree nil))
(let ((child-list (org-child-list top-level-p))
(re (format my-org-complex-heading-regexp-format (regexp-quote (car org-tree))))
)
(if (member "______FOUND_MATCH" (mapcar (lambda (s) (replace-regexp-in-string re "______FOUND_MATCH" s)) child-list))
(progn
(re-search-forward re nil t)
(setq org-tree (cdr org-tree)))
(progn
(if (not top-level-p) (newline))
(org-insert-struct org-tree)
(setq org-tree nil))))
(setq top-level-p nil))
(end-of-buffer)
(newline)
(org-yank)
;; Kill the indirect buffer, returning the current buffer to the direct target buffer
(kill-buffer ind-target-buffer)
;; Save and kill the target buffer, if it is not the source buffer.
(when (not (eq source-buffer target-buffer))
(save-buffer target-buffer)
(kill-buffer target-buffer))
;; ensure font-lock and indentation are normal
(set-buffer source-buffer)
(org-restart-font-lock)
(org-indent-mode t)
(message "Subtree archived %s"
(concat "in file: " (abbreviate-file-name afile))))))
(defun org-insert-struct (struct)
"TODO"
(interactive)
(when struct
(insert (car struct))
(if (not (equal (length struct) 1))
(newline))
(org-insert-struct (cdr struct))))
(setq templates/post-capture-props "#+date: [%<%Y-%m-%d %a>]\n#+lastmod:\n#+categories[]:\n#+tags[]:\n#+images[]: ") (setq templates/post-capture-props "#+date: [%<%Y-%m-%d %a>]\n#+lastmod:\n#+categories[]:\n#+tags[]:\n#+images[]: ")
(setq templates/post-capture-title "#+TITLE: ${title}\n") (setq templates/post-capture-title "#+TITLE: ${title}\n")
(setq templates/post-capture-template (concat templates/post-capture-title templates/post-capture-props)) (setq templates/post-capture-template (concat templates/post-capture-title templates/post-capture-props))
(setq org-preview-latex-image-directory (concat org-directory (file-name-as-directory "images/latexsnip"))) (add-to-list 'org-roam-capture-templates
'("m" "Markdown" plain "" :target
(file+head "training-resources/content/${title}.md"
"---\ntitle: ${title}\nid: %<%Y-%m-%dT%H%M%S>\ncategory: \n---\n")
:unnarrowed t))
(setq org-hugo-base-dir (concat org-directory (file-name-as-directory "website"))) (setq org-hugo-base-dir (concat org-directory (file-name-as-directory "website")))
(setq org-hugo-default-section-directory "posts") (setq org-hugo-default-section-directory "posts")

View File

@ -426,162 +426,25 @@ Edna allows better dependency handling for todos and the like.
** Org-habit ** Org-habit
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package org-habit (use-package org-habit
:custom :custom
(org-habit-graph-column 1) (org-habit-graph-column 1)
(org-habit-preceding-days 10) (org-habit-preceding-days 10)
(org-habit-following-days 1) (org-habit-following-days 1)
(org-habit-show-habits-only-for-today nil)) (org-habit-show-habits-only-for-today nil))
(use-package! org-heatmap (use-package! org-heatmap
:after (org) :after (org)
:config :config
(org-heatmap-mode)) (org-heatmap-mode))
#+END_SRC #+END_SRC
** Org-archive with structure ** Org-archive with structure
Many thanks to Mark Edigmar's [[https://gist.github.com/edgimar/072d99d8650abe81a9fe7c8687c0c993][Gist]] Many thanks to Mark Edigmar's [[https://gist.github.com/edgimar/072d99d8650abe81a9fe7c8687c0c993][Gist]]
*** Keymaps *** Keymaps
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(map! :leader (map! :leader
:desc "Export to html and diplay with eww" :desc "Archive subtree"
:n "m A" #'org-archive-subtree-default) :n "m A" #'org-archive-subtree-default)
#+END_SRC
*** Source
#+BEGIN_SRC emacs-lisp
(require 'org-archive)
; Set the function to use for org-archive-default (C-c C-x C-a)
; (setq org-archive-location (concat org-directory "/archive/%s_archive::"))
; (setq org-archive-location "archive/archived_%s::")
(setq org-archive-location "~/org/archive.org")
(setq org-archive-location (concat org-directory "/archive.org::"))
; unmap org-archive-subtree
; select command to execute via org-archive-subtree-default (C-c C-x C-a)
(setq org-archive-default-command 'org-archive-subtree-hierarchical)
(defun line-content-as-string ()
"Returns the content of the current line as a string"
(save-excursion
(beginning-of-line)
(buffer-substring-no-properties
(line-beginning-position) (line-end-position))))
(defun org-child-list (&optional top-level)
"This function returns all children of a heading as a list. "
(interactive)
(save-excursion
;; this only works with org-version > 8.0, since in previous
;; org-mode versions the function (org-outline-level) returns
;; gargabe when the point is not on a heading.
(unless top-level
(if (= (org-outline-level) 0)
(outline-next-visible-heading 1)
(org-goto-first-child)))
(let ((child-list (list (line-content-as-string))))
(while (org-goto-sibling)
(setq child-list (cons (line-content-as-string) child-list)))
child-list)))
(defun fa/org-struct-subtree ()
"This function returns the tree structure in which a subtree belongs as a list."
(interactive)
(let ((archive-tree nil))
(save-excursion
(while (org-up-heading-safe)
(let ((heading
(buffer-substring-no-properties
(line-beginning-position) (line-end-position))))
(if (eq archive-tree nil)
(setq archive-tree (list heading))
(setq archive-tree (cons heading archive-tree))))))
archive-tree))
(defun org-archive-subtree-hierarchical ()
"This function archives a subtree hierarchical"
(interactive)
(let ((org-tree (fa/org-struct-subtree))
(source-buffer (current-buffer))
(file (abbreviate-file-name
(or (buffer-file-name (buffer-base-buffer))
(error "No file associated to buffer")))))
(save-excursion
(setq location (org-archive--compute-location
(or (org-entry-get nil "ARCHIVE" 'inherit)
org-archive-location))
afile (car location)
heading (cdr location)
infile-p (equal file (abbreviate-file-name (or afile ""))))
(unless afile
(error "Invalid `org-archive-location'"))
(if (not (equal heading ""))
(progn
(setq org-tree (cons heading
(mapcar (lambda (s) (concat "*" s)) org-tree)))
(org-demote-subtree)))
(if (> (length afile) 0)
(progn
(setq newfile-p (not (file-exists-p afile))
visiting (find-buffer-visiting afile)
target-buffer (or visiting (find-file-noselect afile))))
(progn
(setq target-buffer (current-buffer))))
(unless target-buffer
(error "Cannot access file \"%s\"" afile))
(org-cut-subtree)
(set-buffer target-buffer)
(setq ind-target-buffer (clone-indirect-buffer nil nil))
(set-buffer ind-target-buffer)
(org-mode)
(goto-char (point-min))
; simplified version of org-complex-heading-regexp-format
(setq my-org-complex-heading-regexp-format
(concat "^"
"\\(%s\\)"
"\\(?: *\\[[0-9%%/]+\\]\\)*"
"\\(?:[ \t]+\\(:[[:alnum:]_@#%%:]+:\\)\\)?"
"[ \t]*$"))
(setq top-level-p t)
(while (not (equal org-tree nil))
(let ((child-list (org-child-list top-level-p))
(re (format my-org-complex-heading-regexp-format (regexp-quote (car org-tree))))
)
(if (member "______FOUND_MATCH" (mapcar (lambda (s) (replace-regexp-in-string re "______FOUND_MATCH" s)) child-list))
(progn
(re-search-forward re nil t)
(setq org-tree (cdr org-tree)))
(progn
(if (not top-level-p) (newline))
(org-insert-struct org-tree)
(setq org-tree nil))))
(setq top-level-p nil))
(end-of-buffer)
(newline)
(org-yank)
;; Kill the indirect buffer, returning the current buffer to the direct target buffer
(kill-buffer ind-target-buffer)
;; Save and kill the target buffer, if it is not the source buffer.
(when (not (eq source-buffer target-buffer))
(save-buffer target-buffer)
(kill-buffer target-buffer))
;; ensure font-lock and indentation are normal
(set-buffer source-buffer)
(org-restart-font-lock)
(org-indent-mode t)
(message "Subtree archived %s"
(concat "in file: " (abbreviate-file-name afile))))))
(defun org-insert-struct (struct)
"TODO"
(interactive)
(when struct
(insert (car struct))
(if (not (equal (length struct) 1))
(newline))
(org-insert-struct (cdr struct))))
#+END_SRC #+END_SRC
* Website * Website