Re: [PATCH] ob-maxima.el: Fix execution on MS Windows
Oh, nice. Thank you. I was starting to wonder what happened to this.
Re: [PATCH] ob-maxima.el: Fix execution on MS Windows
When some external data is substituted into a Maxima command (batchload this case) there should be an extra pass of escaping that protects special characters like quotes (and backslashes?) accordingly to Maxima rules. Not necessarily, Maxima is capable of understanding unescaped paths, for example, this works: maxima --very-quiet -r "batchload(\"/tmp/sp ce/babel-gxqTkM/maxima-ua3e9j.max\")"$ I suspect that quotes your added around %S must not be used there. Due to them file name appears outside of quotes at all. Yes, good catch. Unsure concerning Maxima but usually it is possible to pass arguments avoiding quoting issues for particular language. Command line Maxima actually has a batch flag, but using it returns the entire input file in the output too and that seems to be the reason why the original authors of ob-maxima didn't use it. It's probably possible to filter that on our side, but such filtering would require extra work, which they probably deemed unnecessary, for such a rather obscure set of use cases. Anyway, I've tried to get it to work using shell-quote-argument, see the attached patch. Seems to work well enough in practice on both platforms and for cases like (setq temporary-file-directory "/tmp/`echo hi`/"). From 47690d14ac4838d8e39f08bd8224f0b4af053359 Mon Sep 17 00:00:00 2001 From: Nikolay Kudryavtsev Date: Sun, 26 Dec 2021 22:47:19 +0300 Subject: [PATCH] ob-maxima.el: Fix execution on MS Windows * ob-maxima.el (org-babel-execute:maxima): Change command line invocation to a one that should work everywhere. --- lisp/ob-maxima.el | 7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/ob-maxima.el b/lisp/ob-maxima.el index 7b49bb07a..08b586414 100644 --- a/lisp/ob-maxima.el +++ b/lisp/ob-maxima.el @@ -77,8 +77,11 @@ This function is called by `org-babel-execute-src-block'." (result (let* ((cmdline (or (cdr (assq :cmdline params)) "")) (in-file (org-babel-temp-file "maxima-" ".max")) - (cmd (format "%s --very-quiet -r 'batchload(%S)$' %s" -org-babel-maxima-command in-file cmdline))) + (cmd (format "%s --very-quiet -r %s$ %s" +org-babel-maxima-command + (shell-quote-argument + (format "batchload(%S)" in-file)) + cmdline))) (with-temp-file in-file (insert (org-babel-maxima-expand body params))) (message cmd) ;; " | grep -v batch | grep -v 'replaced' | sed '/^$/d' " -- 2.34.1.windows.1
Re: [PATCH] ob-maxima.el: Fix execution on MS Windows
If your temporary-file-directory is something like "/tmp/apostrophe'", it would not work currently either. So apostrophe is a very special case here. As for possible evaluation within the double quotes, while this is theoretically possible, user sort of has to go out of his way to trigger it, so the question is whether we should introduce any platform-specific code to mitigate such an obscure case? Then we are also limited by Maxima itself since it has to be able to read that path too and it's very picky when it comes to file paths.
[PATCH] ob-maxima.el: Fix execution on MS Windows
Hello. I've been playing around with Maxima from time to time. Ob-maxima currently does not work on Windows due to it using single quotes in the Maxima invocation and those not being supported by Windows CMD. After some testing I've found an invocation that seems to work fine on both Windows and Linux. I don't think this patch can cause any real issue, since the string in those quotes is just the temp file path. From b0206d14df8947c831e56eef21fbd38ca88c1fd5 Mon Sep 17 00:00:00 2001 From: Nikolay Kudryavtsev Date: Sun, 26 Dec 2021 22:47:19 +0300 Subject: [PATCH] ob-maxima.el: Fix execution on MS Windows * ob-maxima.el (org-babel-execute:maxima): Change command line invocation to a one that should work everywhere. --- lisp/ob-maxima.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/ob-maxima.el b/lisp/ob-maxima.el index 7b49bb07a..512712221 100644 --- a/lisp/ob-maxima.el +++ b/lisp/ob-maxima.el @@ -77,7 +77,7 @@ This function is called by `org-babel-execute-src-block'." (result (let* ((cmdline (or (cdr (assq :cmdline params)) "")) (in-file (org-babel-temp-file "maxima-" ".max")) - (cmd (format "%s --very-quiet -r 'batchload(%S)$' %s" + (cmd (format "%s --very-quiet -r \"batchload(\\\"%S\\\")\"$ %s" org-babel-maxima-command in-file cmdline))) (with-temp-file in-file (insert (org-babel-maxima-expand body params))) (message cmd) -- 2.34.1.windows.1
Re: [O] manual: stale bindings for org-clock-report and org-columns-insert-dblock
Thanks, everything's fine now. Sorry for late reply. Icicles is doing it wrong. Packages are supposed to provide only prefixed functions, since there is no namespace in Emacs. As far as I could grasp, those are shorthand alias functions created for easier access. Luckily that behavior can be disabled by a variable. And they're probably enabled by default because nobody complained yet. So, you are doing a mixed installation on purpose. No wonder you have troubles. Don't reload a different installation on top of a loaded one. Yes, wishful thinking on my part. Been doing that for ages and the reason I didn't ran into many issues is that I was usually reloading versions that are pretty close, while bisecting for bugs. In my defense I assumed that org-reload does some powerful unload magic. And it's definitely a kind of magic that I would be scared to even look at, so it never crossed my mind to look into it's sources.;-) -- Best Regards, Nikolay Kudryavtsev
Re: [O] clocktable - Wrong type argument: plistp - after upgrade
Sorry for being a necromancer, but the problem is still sort of there. In the old versions you didn't need to specify the state, so just adding "fileskip0" would work, but now you have to use "fileskip0 t". It's not a big deal by any means, but maybe the manual should be improved, since it has leftovers from laxer times. I wouldn't expect users to know that dblocks properties should be a proper plist, so reminding them is probably a good idea. So for fileskip0, stepskip0 and other boolean values(are there any more?) maybe the manual sentence should follow the form of one for :emphasize, that is, start with "When ‘t’,". -- Best Regards, Nikolay Kudryavtsev
Re: [O] manual: stale bindings for org-clock-report and org-columns-insert-dblock
I was able to debug the Icicles interaction bug: In org-dblock-write:clocktable there's a check ((pred functionp) (funcall scope)) which checks whether the scope is a function. Since the default scope is currently "file", it gets funcalled. Icicles provides a function called file. There it can be disabled by setting (setq icicle-define-alias-commands-flag nil), but getting to that would generally mean that the user ran into some problems and did the same debugging I had to do. I'm not 100% sure but I'd rather prefer org not calling any functions with generic names like "file" or "subtree", so maybe prepending some predicate on a call is warranted, so instead of "file", something like "org-scope-file" would get checked, but I don't really understand the intended use of this feature. As for dynamic reloading, I retested and can confirm that it's broken since 69c300bbf. To repeat, start with elpa org, add master org to the load path, do org-reload. -- Best Regards, Nikolay Kudryavtsev
Re: [O] manual: stale bindings for org-clock-report and org-columns-insert-dblock
I don't use Icicles, but I cannot reproduce it. What are the exact steps to do so? Sorry, it's not clear whether you use Icicles. At the moment the recipe is: 1. Install icicles as described here <https://www.emacswiki.org/emacs/Icicles_-_Libraries>. Enable it by doing icy-mode. 2. Do org-clock-report. I'll try to see whether there's some other way this odd behavior shows itself, that can be seen without using Icicles. At the moment, do you see anything in that commit that made this command, let's say abnormal? I don't see the need for that. You can, however, bind `C-c C-x C-r' to `org-clock-report' in your config. Minor thing, but I still see this as a regression, without a good reason, but it's your call... You seem to have a mixed installation. This function only exists in development branch, i.e., Org 9.3, not ELPA. I'll double check and report. Note you can insert source blocks with 'C-c C-,` Didn't knew that, thanks. Drop the "g". The relative commit is "029cf6". Thanks. -- Best Regards, Nikolay Kudryavtsev
Re: [O] manual: stale bindings for org-clock-report and org-columns-insert-dblock
Thanks for the tip. After reading that discussion and a few hours of research, there are actually three different problems I have with org-clock-report. The first is that drop in clock reports now use :scope file by default, instead of :scope subtree. The second is that the clock report function is set up in some weird way that it gets broken if you use icicles. Gonna look into it further, not sure whether org or icicles is the bad actor here. The behavior I'm seeing is as follows: The command spawns empty table with :scope file, asks for a file, when I select that file, it asks for a function and I have no idea which function should I choose here. For those two problems I've bisected the offending commit to 1a5151c51. The third is the removal of C-c C-x C-r. I've read the discussion there, but it seems like nobody really wanted it removed, this is just a consequence of refactoring. So, can we get C-c C-x C-r org-clock-report back, if only as a closure over org-dynamic-block-insert-dblock? Also, ever since that Stardiviner's commit the dynamic reloading of org seems to be broken on master. When I try to I get: Symbol’s function definition is void: org-dynamic-block-define Another thing, since org is moving towards unifying dynamic blocks, maybe the next step is to add begin_src blocks into the mix in org-dynamic-block-insert-dblock? It seems that they historically have different syntax, but are in practice the same thing. That's actually one place where I could use a wizard. And why the function is called org-dynamic-block-insert-dblock and not org-insert-dblock? Seems redundant to me. Also can someone explain how do I get from org elpa version to the git commit it's based on? E. g., in org-version.el I have "9.2.1-33-g029cf6-elpaplus" but g029cf6 does not seem like a real commit in the git repo. -- Best Regards, Nikolay Kudryavtsev
Re: [O] manual: stale bindings for org-clock-report and org-columns-insert-dblock
Am I reading it correctly that C-c C-x C-r is no longer a valid keybinding? Is this the reason why it now behaves so stupidly, creating a block with :scope file and asking for that file? Can someone point me to a discussion of that change? Manual is still not updated about it and nothing in ORG-NEWS. Quickly using that key was quite useful to pop a clock report for a task and I really don't see why would anyone want to remove that. -- Best Regards, Nikolay Kudryavtsev
Re: [O] Org protocol, Windows 10
Hello Fabrice. If you set your protocol bookmarklet with a single slash like "org-protocol:/capture" everything would work. I asked before for someone from the dev team to weight in on it, because org test seem to use both. -- Best Regards, Nikolay Kudryavtsev
Re: [O] org-protocol: deal with broken links on windows
Hello Ingo. Sorry my bad, I've ran into exactly the same bug before, just I originally didn't notice that "/" before the query is exactly the thing, that brings everything down, but I still suspected it to be the same bug. Your problem is that your bookmarklets have "//" before the protocol name. Change it to a single slash and that should work. -- Best Regards, Nikolay Kudryavtsev
Re: [O] org-protocol: deal with broken links on windows
I've recently set up org-protocol as well and while I can confirm that it prepends the full executable path, I don't get the extra "/" and org-protocol works fine. And your link worked fine, except that I had to obviously change the template name. From what I understand the addition of that "/" is extremely weird, since protocol just passes the whole string to the command. What version of org are you using? I'm currently using org-9.0.9 installed from a zip. And to be sure maybe you should try something like: emacsclientw.exe "org-protocol:/capture?template=w=http%3A%2F%2Fjira%2Fbrowse%2FSDST-705=SOMETHING=" -- Best Regards, Nikolay Kudryavtsev
Re: [O] Update to org-protocol-capture-html
Yeah, I'm asking whoever's currently doing the org-protocol maintenance. That's why I put you in copy, not to.;-) You're right this has to be tested on all those platforms, but it's a more proper way, than doing server-edit... -- Best Regards, Nikolay Kudryavtsev
Re: [O] Update to org-protocol-capture-html
My testing had shown that if in org-protocol-check-filename-for-protocol we have (server-delete-client _client) instead of (server-edit), the client process gets closed fine. May I propose such a change? -- Best Regards, Nikolay Kudryavtsev
Re: [O] Update to org-protocol-capture-html
Oh, I see. In org-protocol-protocol-alist you can define protocols with :kill-client t and this should close the server buffer for them. And on my machine it does it half-way - server-edit no longer pops them, but the process still hangs. Normal use of server works fine though - doing server-edit on a manually opened client buffer closes the process fine. I'll do some more debugging on that. C-h v org-capture-templates RET Look for ":immediate-finish" Thanks. I don't have org-capture required, so I even got confused before why that variable documentation is empty. :-) -- Best Regards, Nikolay Kudryavtsev
Re: [O] Update to org-protocol-capture-html
I'm using 9.0 too. It's just that I'm also using Windows. Maybe it's the only platform where this happens. I even got the idea that you could use single slashes there from test-org-protocol.el, since the documentation for org-protocol is outdated. Weirdly some tests in test-org-protocol.el use single slash, while some use double. I guess we need a comment on this from org-protocol dev. Yeah, I've seen emacsclient stockpiling, it happens on Windows and should also happen on some other platforms, I guess, depending on how their protocol support and/or OS processes are implemented. By default emacsclient creates a process that waits till server reports that it's finished editing it. This works for stuff like git and other places where you want to edit something and then do something else from an external app. But for places where you're not doing anything else it's kind of pointless. Bonus somewhat offtopic question: I remember that you could create a capture template that captures immediately, without launching a capture window. How is it done? Forgot to write down the instructions, the last time I tinkered with org-protocol. -- Best Regards, Nikolay Kudryavtsev
Re: [O] Update to org-protocol-capture-html
Sorry for kind of resurrecting this thread. I've been trying to get this working and I noticed that bookmarklets only work with a single slash after org-protocol. Does not work: javascript:location.href = 'org-protocol://capture-html ... Does work: javascript:location.href = 'org-protocol:/capture-html ... Is this a bug in org-protocol-capture-html documentation or // before protocol should actually work? Another somewhat minor thing of note and this applies to generic org-protocol documentation too - we probably want to give emacsclient with -n flag in all protocol documentation. There's no point in stockpiling client processes, right? -- Best Regards, Nikolay Kudryavtsev
Re: [O] Best book to get from novice to guru?
The answer - all of them are good. Emacs and Org manuals are available from inside of Emacs with every installation. They describe out-of-box capabilities of Emacs and Org respectively. Ideally you want to skimp through them, so you'd understand what's available. Then you can reference them as needed. Mastering Emacs is a tips and tricks book. It's good, but no replacement for the manuals. -- Best Regards, Nikolay Kudryavtsev
Re: [O] clock-table property column empty
Cool, thanks. -- Best Regards, Nikolay Kudryavtsev
Re: [O] clock-table property column empty
Is there any way to get the old behavior back? I think it made more sense. Also, I got to the reason why I was getting those cryptic prompts. It's actually a bug in icicles package, that for some reason misfires functionality meant for integrating the anything package, which I don't even use. Gonna go report that... -- Best Regards, Nikolay Kudryavtsev
Re: [O] clock-table property column empty
Ok, this was due to me not running make in the repo first. Still I have another problem - I get two extra columns in the clocktable. See the attached test.org file. -- Best Regards, Nikolay Kudryavtsev ** TODO Test :test: :PROPERTIES: :key: 123 :END: :LOGBOOK: CLOCK: [2017-05-24 Ср 21:08]--[2017-05-24 Ср 22:08] => 1:00 :END: ** Clocktable #+BEGIN: clocktable :maxlevel 4 :scope file :tags "test" :properties ("key") #+CAPTION: Clock summary at [2017-05-25 Чт 03:51] | key | Headline | Time | | | | |-+--++--+---+---| | | *Total time* | *1:00* | | | | |-+--++--+---+---| | 123 | \_ Test || 1:00 | | | #+END
Re: [O] clock-table property column empty
I've just tried the repo at 30ceb5c7942b5804b2bba18ce3e08124add0d278. That is master ATM Clocktables do not seem to work there at all.| | ||Also it seems that remote |git://orgmode.org/org-mode.git does not currently work. http://|||orgmode.org/org-mode.git| works.| || -- Best Regards, Nikolay Kudryavtsev
Re: [O] Save-excursion that works with org visibility?
Thanks for the info, this answers the topic question. -- Best Regards, Nikolay Kudryavtsev
Re: [O] Save-excursion that works with org visibility?
Thanks. This removed the need for (org-content). -- Best Regards, Nikolay Kudryavtsev
[O] Save-excursion that works with org visibility?
Is there any way to modify node visibility and then revert those changes? In particular I'm interested in doing and then reverting (org-content). What follows is more details at what I'm trying to accomplish in the end. Let's say we have nodes: * A ** B *** TODO С For task node C I want to see which parent node has tag "project" and then put it into a prefix in agenda. Here's my code: === (defun org-get-task-project () (let ((project "")) (save-excursion (org-content) (while (progn (ignore-errors (outline-up-heading 1)) (when (and (eq project "") (member "project" (org-get-tags-at (point) t))) (setq project (nth 4 (org-heading-components (> (nth 1 (org-heading-components)) 1 project)) (with-eval-after-load 'org-agenda (add-to-list 'org-agenda-prefix-format '(todo . " %i %?-20(org-get-task-project)"))) === In the code above we have to make all headings visible first with org-content because outline-up-heading works only on visible nodes. -- Best Regards, Nikolay Kudryavtsev
[O] Clock tables with file list scope do not work anymore
Hello. Let's say we have file Test-todo.org: * Test todo :LOGBOOK: CLOCK: [2016-11-25 Пт 17:02]--[2016-11-25 Пт 21:02] => 4:00 :END: When we try to add it to a clocktable in a different file using a list, it does not get interpreted: * Todo #+BEGIN: clocktable :maxlevel 4 :scope ("d:/Test-todo.org") :block 2016-11 #+CAPTION: Clock summary at [2016-11-25 Пт 21:30], for Ноябрь 2016. | Headline | Time | |--+| | *Total time* | *0:00* | #+END: I'm using org-plus-contrib package from elpa, the last working version is org-plus-contrib-20161024. Dev does not seem to work either. Also, I'm using Windows 10, just in case. -- Best Regards, Nikolay Kudryavtsev
Re: [O] org-log-into-drawer should behave similarly to org-clock-into-drawer
There are two things worth noting: 1. The original value for org-log-into-drawer is nil. 2. There seems to be no value that would enable movement of old records into drawers. So assuming somebody just discovers this variable(like me), decides that drawers is what he wants, now he has to move all those old entries manually. That's not too much work, but we already have a better behavior example in org-clock-into-drawer. It's still a rather minor issue, by all means... -- Best Regards, Nikolay Kudryavtsev
Re: [O] org-log-into-drawer should behave similarly to org-clock-into-drawer
I'm not suggesting t to be the default value. Here I totally agree with nil. The main consistency problem is that t would not move log entries, like t moves them for org-clock-into-drawer. -- Best Regards, Nikolay Kudryavtsev
Re: [O] org-log-into-drawer should behave similarly to org-clock-into-drawer
Oh, I never thought about it like this. Not having a consistent syntax is a good reason not to include code like this in the core. Thanks. -- Best Regards, Nikolay Kudryavtsev
[O] org-log-into-drawer should behave similarly to org-clock-into-drawer
Hello. Currently when org-clock-into-drawer is set to t, it moves all old drawer-less clock records to a new drawer. But org-log-into-drawer does not do the same for log entries. I think it's logical for those two variables to follow the same convention. -- Best Regards, Nikolay Kudryavtsev
Re: [O] org-clock-into-drawer t is broken
Sorry, I was away for some time. So, this bug is still there. Let's say you have a very basic org file, something like this: * TODO Task CLOCK: [2014-10-29 Ср 20:22]--[2014-10-29 Ср 21:32] => 1:10 CLOCK: [2014-10-27 Вт 22:22]--[2014-10-28 Вт 02:48] => 4:26 Now, I want to move old-style no drawer records into those new and shiny drawers whenever I touch any of those old tasks. As far as I understood from the documentation, this is what should happen by default. But it does not. One workaround I found is setting org-clock-into-drawer to 0. It worked in older elpa versions, but breaks your org file in the current one. -- Best Regards, Nikolay Kudryavtsev
[O] org-clock-into-drawer t is broken
After I switched to org 8.3 I've noticed that org-clock-into-drawer does not really behave as advertised. Docs say that if it's set to t, which is the default value, this should create a :LOGBOOK and move old entries there. But this does not happen in practice. :LOGBOOK gets created only for headings that don't have any clock entries. Or is having no drawer considered a form of drawer? Setting org-clock-into-drawer 0 works. This assumes the latest elpa org. In the latest git dev verison, clocking in does not work at all. -- Best Regards, Nikolay Kudryavtsev
[O] Org-todo-yesterday broken?
Hello. org-todo-yesterday and org-agenda-todo-yesterday do not seem to work in all recent versions of org that I've tried. Also is there a version of them that allows to input a custom date? -- Best Regards, Nikolay Kudryavtsev
[O] org-clock-report by hours
Hello. Recently I've updated my org to a newer version and it by default uses days in clock reports. In the earlier version I had something like this: *Total time* | *28:40* Now I get this: *Total time* | *1d 4:40* How can I get the old behavior back? I've tried searching for a variable that controls this, but could not find it. -- Best Regards, Nikolay Kudryavtsev
[O] Marking repeating task as done with the scheduled time
Hi all. I have a habit set up that I need to mark done every day. If it's not done that day I can do it later. Basically I want to track how many days I'm running late and have the ability to catch up. If I use +1d interval, when I mark task as done it updates the schedule by one 1 day, but puts the done record with the current date. So I have to edit every timestamp manually, to make the habit display properly. Is there any way I can make my done records to use task scheduled time instead of now? -- Best Regards, Nikolay Kudryavtsev
[O] Marking repeating task as done with the scheduled time
Hi all. I have a habit set up that I need to mark done every day. If it's not done that day I can do it later. Basically I want to track how many days I'm running late and have the ability to catch up. If I use +1d interval, when I mark task as done it updates the schedule by one 1 day, but puts the done record with the current date. So I have to edit every timestamp manually, to make the habit display properly. Is there any way I can make my done records to use task scheduled time instead of now? -- Best Regards, Nikolay Kudryavtsev