From 8d5e4d43c81668f1de274ff29a47ddd12cd580c3 Mon Sep 17 00:00:00 2001 From: mb Date: Sat, 2 Jul 2022 18:29:45 -0400 Subject: [PATCH 1/4] Fixed error thrown when saving in narrow mode --- org-ol-tree.el | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/org-ol-tree.el b/org-ol-tree.el index 9d8420f..65158ac 100644 --- a/org-ol-tree.el +++ b/org-ol-tree.el @@ -1246,19 +1246,24 @@ The file watched is always `org-ol-tree--org-buffer'. For more information on EVENT, check the documentation of `file-notify-add-watch'." - (cl-multiple-value-bind (descriptor action file) event - (when (member action '(renamed changed)) - (let ((ol-buffer (ht-get org-ol-tree-action--watcher-buffers descriptor)) - (current-window (selected-window))) - (if (and ol-buffer (buffer-live-p ol-buffer)) - (progn - (when (eq (org-ol-tree-ui--visibility) 'visible) - (select-window (get-buffer-window ol-buffer)) - (org-ol-tree-action--refresh) - (select-window current-window))) - (ht-remove! org-ol-tree-action--watcher-buffers descriptor) - (ht-remove! org-ol-tree-action--buffer-watchers ol-buffer) - (file-notify-rm-watch descriptor)))))) + + (save-restriction + (widen) + (save-excursion + (cl-multiple-value-bind (descriptor action file) event + (when (member action '(renamed changed)) + (let ((ol-buffer (ht-get org-ol-tree-action--watcher-buffers descriptor)) + (current-window (selected-window))) + (if (and ol-buffer (buffer-live-p ol-buffer)) + (progn + (when (eq (org-ol-tree-ui--visibility) 'visible) + (select-window (get-buffer-window ol-buffer)) + (org-ol-tree-action--refresh) + (select-window current-window))) + (ht-remove! org-ol-tree-action--watcher-buffers descriptor) + (ht-remove! org-ol-tree-action--buffer-watchers ol-buffer) + (file-notify-rm-watch descriptor)))))))) + (defun org-ol-tree-action--start-watching-buffer () From 11995d0d5bbb8c96eb6cf4cbc1292a8036ebaa7e Mon Sep 17 00:00:00 2001 From: mb Date: Sat, 2 Jul 2022 18:36:06 -0400 Subject: [PATCH 2/4] added fix for opening files in narrowed state --- org-ol-tree.el | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/org-ol-tree.el b/org-ol-tree.el index 65158ac..3e832ee 100644 --- a/org-ol-tree.el +++ b/org-ol-tree.el @@ -1485,19 +1485,22 @@ With a prefix ARG call `org-ol-tree-ui--kill-buffer' instead." - If no org-ol-tree buffer exists for the current Org-file buffer create and show it." (interactive) - (unless (or org-ol-tree--buffer-p (buffer-live-p org-ol-tree--buffer) (eq major-mode 'org-mode)) - (user-error "Org Outline Tree can only be used with Org buffers")) - (pcase (org-ol-tree-ui--visibility) - ('visible - (if org-ol-tree--buffer-p - (delete-window (org-ol-tree-ui--get-window)) - (org-ol-tree-ui--setup-window nil))) - ('exists - (org-ol-tree-ui--setup-buffer) - (org-ol-tree-ui--setup-window t) - (org-ol-tree-action--refresh)) - ('none - (org-ol-tree-action--init)))) + (save-restriction + (widen) + (save-excursion + (unless (or org-ol-tree--buffer-p (buffer-live-p org-ol-tree--buffer) (eq major-mode 'org-mode)) + (user-error "Org Outline Tree can only be used with Org buffers")) + (pcase (org-ol-tree-ui--visibility) + ('visible + (if org-ol-tree--buffer-p + (delete-window (org-ol-tree-ui--get-window)) + (org-ol-tree-ui--setup-window nil))) + ('exists + (org-ol-tree-ui--setup-buffer) + (org-ol-tree-ui--setup-window t) + (org-ol-tree-action--refresh)) + ('none + (org-ol-tree-action--init)))))) From 822021e70ef07ceae0468c63a1b9d5357ce70b99 Mon Sep 17 00:00:00 2001 From: anakha Date: Mon, 4 Jul 2022 23:51:25 -0400 Subject: [PATCH 3/4] added better folding/unfolding logic --- org-ol-tree.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/org-ol-tree.el b/org-ol-tree.el index 3e832ee..0e83303 100644 --- a/org-ol-tree.el +++ b/org-ol-tree.el @@ -1101,7 +1101,9 @@ If the buffer is narrowed, it will get widen as a side effect of this function." (widen) (goto-char target-point) (org-reveal) + (+org/toggle-fold) (org-show-entry) + (org-show-children) (recenter (min (max 0 scroll-margin) (truncate (/ (window-body-height) 4.0))) t)) From 014c6f7b5b77d71b2f3377992752ff7fde63c686 Mon Sep 17 00:00:00 2001 From: anakha Date: Tue, 5 Jul 2022 01:53:53 -0400 Subject: [PATCH 4/4] fixed empty line in TOC error handling - click - double click - expand - collapse added util function for string length on line. --- org-ol-tree.el | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/org-ol-tree.el b/org-ol-tree.el index 0e83303..3e1cc2e 100644 --- a/org-ol-tree.el +++ b/org-ol-tree.el @@ -1009,6 +1009,9 @@ The argument EVENT, is the same event received by the (goto-char (posn-point (cadr event))) (goto-char (point-at-bol)) + (when (eq (org-ol-tree--util-line-length) 0) + (keyboard-quit)) + (when (region-active-p) (keyboard-quit)) @@ -1038,6 +1041,8 @@ This function cancels any timer call from `org-ol-tree-action--leftclick'." (goto-char (point-at-bol)) (when (region-active-p) (keyboard-quit)) + (when (eq (org-ol-tree--util-line-length) 0) + (keyboard-quit)) (org-ol-tree-action--visit))) @@ -1078,22 +1083,30 @@ state is collapsed, the parent not will be selected." If the cursor is not on top of an expanded section, calling this function has no effect." (interactive) + (when (eq (org-ol-tree--util-line-length) 0) + (keyboard-quit)) + (pcase (org-ol-tree-core--node-get :state) ('treemacs-org-ol-doc-open-state (treemacs-collapse-org-ol-doc)) ('treemacs-org-ol-parent-section-open-state (treemacs-collapse-org-ol-parent-section)))) + (defun org-ol-tree-action--expand () "Expand an expandable section that is currently collapsed. If the cursor is not on top of a collapsed section, calling this function has no effect." (interactive) + (when (eq (org-ol-tree--util-line-length) 0) + (keyboard-quit)) + (pcase (org-ol-tree-core--node-get :state) ('treemacs-org-ol-doc-closed-state (treemacs-expand-org-ol-doc)) ('treemacs-org-ol-parent-section-closed-state (treemacs-expand-org-ol-parent-section)))) + (defun org-ol-tree-action--move-to (target-point) "Move the cursor to TARGET-POINT and scroll point to top. @@ -1476,6 +1489,21 @@ With a prefix ARG call `org-ol-tree-ui--kill-buffer' instead." ;;;; --- Commands +;;;; --- Utils + +(defun org-ol-tree--util-line-length (&optional n) + "Length of the Nth line." + (if (not n) + (setq n (line-number-at-pos))) + + (save-excursion + (goto-char (point-min)) + (if (zerop (forward-line (1- n))) + (setq line-length-of-entry (- (line-end-position) + (line-beginning-position))))) + (princ line-length-of-entry)) + + ;;;###autoload (defun org-ol-tree () "Initialise or toggle org-ol-tree.