Re: [PATCH 0/1] Add option to delay fontification of source blocks

2021-04-02 Thread Leo Okawa Ericson
Kyle Meyer  writes:

> Have you explored whether jit-lock (e.g., jit-lock-defer-time) helps for
> your use case?

No I didn't know about it. I have tried it now and it seems to solve
the same problem as my patch. 

> If we do go this route, I think the case needs to be made why this
> spot is special, and why we don't expect or would reject follow-up
> patches for this and that other area.
>

I can't think of a reason either (now that I know that jit-lock exists)
so I will retract my patch. 



[PATCH 0/1] Add option to delay fontification of source blocks

2021-03-27 Thread Leo Okawa Ericson
From: Leo Okawa Ericson 

I tried sending this patch once before, but I think it got caught as spam so I'm
trying this again.

Fontification of long code blocks can be very slow. The patch (in the reply to
this email) mitigates this by adding an option to delay the fontification after
the user has become idle by using idle timers. This seems to be faster from my
limited testing, but I'm not sure if something will go horribly wrong because of
the timers.

There is a trade-off in that there will be no syntax highlightinting when the
user is typing. I don't know how to keep existing fontification so it would be
great if somebody could share a solution to that.

I have signed the copyright papers so that shouldn't be a problem. This is my
first patch submission so any suggestions for improvement are welcome.

Leo Okawa Ericson (1):
  org-src.el: Add option to delay fontification of source blocks

 lisp/org-src.el | 29 +
 1 file changed, 29 insertions(+)

-- 
2.25.1




[PATCH 1/1] org-src.el: Add option to delay fontification of source blocks

2021-03-27 Thread Leo Okawa Ericson
* lisp/org-src.el (org-src-font-lock-fontify-block): Add option to delay
fontification of source blocks.  If
`org-src-font-lock-fontify-idle-delay' is non-nil fontification of
code blocks is delayed until the user has become
idle.

Fontification of source blocks can be very slow. This will add an option
for users to delay the fontification until they have become idle so that
the typing delay is kept low. The trade-off is that there will be no
syntax highlighting when the user is typing.
---
 lisp/org-src.el | 29 +
 1 file changed, 29 insertions(+)

diff --git a/lisp/org-src.el b/lisp/org-src.el
index 20acee4e6..b1446e105 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -584,11 +584,40 @@ (defun org-src--edit-element
 
 
 ;;; Fontification of source blocks
+(defvar org-src-font-lock-fontify-idle-timer nil
+  "Idle timer to use for when fontifying with a timer.")
+
+
+(defvar org-src-font-lock-fontify-idle-delay nil
+  "Duration of the delay until fontification of source blocks.
+If non-nil, source blocks are fontified when the user has been
+idle for `org-src-font-lock-fontify-idle-delay' seconds. This
+means that instead of applying syntax highlighting when you type
+it is delayed until you become idle. Not that when typing there
+will be no fontification.
+")
 
 (defun org-src-font-lock-fontify-block (lang start end)
   "Fontify code block.
 This function is called by emacs automatic fontification, as long
 as `org-src-fontify-natively' is non-nil."
+  (if org-src-font-lock-fontify-idle-delay
+  (progn
+(when org-src-font-lock-fontify-idle-timer
+  (cancel-timer org-src-font-lock-fontify-idle-timer))
+(setq org-src-font-lock-fontify-idle-timer
+  (let ((buf (current-buffer)))
+(run-with-idle-timer
+ org-src-font-lock-fontify-idle-delay
+ nil
+ (lambda ()
+   (with-current-buffer buf
+ (org-src-font-lock-fontify-block-1 lang start end)
+ (when org-src-font-lock-fontify-idle-timer
+   (cancel-timer org-src-font-lock-fontify-idle-timer)) 
))
+(org-src-font-lock-fontify-block-1 lang start end)))
+
+(defun org-src-font-lock-fontify-block-1 (lang start end)
   (let ((lang-mode (org-src-get-lang-mode lang)))
 (when (fboundp lang-mode)
   (let ((string (buffer-substring-no-properties start end))
-- 
2.25.1




[PATCH 0/1] Add option to delay fontification of source blocks

2021-03-27 Thread Leo Okawa Ericson
Fontification of long code blocks can be very slow. The patch, which should be
in another other email, mitigates this by
adding an option to delay the fontification after the user has become idle by
using idle timers. This seems to be faster from my limited testing, but I'm not
sure if something will go horribly wrong because of the timers.

There is a trade-off in that there will be no syntax highlightinting when the
user is typing. I don't know how to keep existing fontification so it would be
great if somebody could share a solution to that.

I have signed the copyright papers so that shouldn't be a problem. This is my
first patch submission so any suggestions for improvement are welcome.

Leo Okawa Ericson (1):
  org-src.el: Add option to delay fontification of source blocks

 lisp/org-src.el | 29 +
 1 file changed, 29 insertions(+)

-- 
2.25.1




[PATCH 1/1] org-src.el: Add option to delay fontification of source blocks

2021-03-27 Thread Leo Okawa Ericson
* lisp/org-src.el (org-src-font-lock-fontify-block): Add option to delay
fontification of source blocks.  If
`org-src-font-lock-fontify-idle-delay' is non-nil fontification of
code blocks is delayed until the user has become
idle.

Fontification of source blocks can be very slow. This will add an option
for users to delay the fontification until they have become idle so that
the typing delay is kept low. The trade-off is that there will be no
syntax highlighting when the user is typing.
---
 lisp/org-src.el | 29 +
 1 file changed, 29 insertions(+)

diff --git a/lisp/org-src.el b/lisp/org-src.el
index 20acee4e6..b1446e105 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -584,11 +584,40 @@ (defun org-src--edit-element
 
 
 ;;; Fontification of source blocks
+(defvar org-src-font-lock-fontify-idle-timer nil
+  "Idle timer to use for when fontifying with a timer.")
+
+
+(defvar org-src-font-lock-fontify-idle-delay nil
+  "Duration of the delay until fontification of source blocks.
+If non-nil, source blocks are fontified when the user has been
+idle for `org-src-font-lock-fontify-idle-delay' seconds. This
+means that instead of applying syntax highlighting when you type
+it is delayed until you become idle. Not that when typing there
+will be no fontification.
+")
 
 (defun org-src-font-lock-fontify-block (lang start end)
   "Fontify code block.
 This function is called by emacs automatic fontification, as long
 as `org-src-fontify-natively' is non-nil."
+  (if org-src-font-lock-fontify-idle-delay
+  (progn
+(when org-src-font-lock-fontify-idle-timer
+  (cancel-timer org-src-font-lock-fontify-idle-timer))
+(setq org-src-font-lock-fontify-idle-timer
+  (let ((buf (current-buffer)))
+(run-with-idle-timer
+ org-src-font-lock-fontify-idle-delay
+ nil
+ (lambda ()
+   (with-current-buffer buf
+ (org-src-font-lock-fontify-block-1 lang start end)
+ (when org-src-font-lock-fontify-idle-timer
+   (cancel-timer org-src-font-lock-fontify-idle-timer)) 
))
+(org-src-font-lock-fontify-block-1 lang start end)))
+
+(defun org-src-font-lock-fontify-block-1 (lang start end)
   (let ((lang-mode (org-src-get-lang-mode lang)))
 (when (fboundp lang-mode)
   (let ((string (buffer-substring-no-properties start end))
-- 
2.25.1




Re: Clock tables and two ways to categorize tasks

2020-11-20 Thread Leo Okawa Ericson


Some time ago I hacked together a bunch of elisp to create a clock table
based on tags. [1] It uses org's dynamic block feature[2] to create a
piechart with gnuplot and a simple table that shows percentages of time
spent on different tags. I should say that it has basically no
documentation at all, but if there is interest I could write something
to explain the basic usage at least.

[1] https://github.com/Zetagon/dotfiles/blob/master/doom/pichart-property.el

[2] https://orgmode.org/manual/Dynamic-Blocks.html




Re: Get Grades Done: the joys of Org's simple power

2020-06-13 Thread Leo Okawa Ericson
Diego Zamboni  writes:

> Hi Leo,
>
> Thanks - I had seen that one too, and couldn't figure out which one
> was a fork of the other one. Both have recent activity - do you know
> what are the main differences between them?
>

Well the changelog in org-web hasn't been updated in quite a while:
https://github.com/DanielDe/org-web/blob/master/changelog.org
wheras organice seem to actively developed
https://github.com/200ok-ch/organice/blob/master/changelog.org .

The have a section in their readme that shows how they differ: 
https://github.com/200ok-ch/organice#org-web



Re: Get Grades Done: the joys of Org's simple power

2020-06-12 Thread Leo Okawa Ericson
Diego Zamboni  writes:

> Hi Devin,
>
> Your could try https://org-web.org/ - it allows online editing of Org files
> and a quick test shows that it supports the automatic update of checkbox
> counts.

Or you could try https://github.com/200ok-ch/organice - it is a friendly
fork of org-web.



Re: Is there a way to export only a subtree of a document to LaTeX (or anywhere)?

2020-05-25 Thread Leo Okawa Ericson
Kyle Meyer  writes:

> Vladimir Nikishkin writes:
>
> When you enter the export dispatch, you should see an "Export scope"
> option bound to C-s.  That toggles between buffer and subtree export.

I think it also works to narrow the buffer to what you want to export.
Calling org-narrow-to-subtree and then exporting will export only that
subtree (at least for me).