Note: This was a rather long meetup with a large number of different topics discussed. I may miss some details in my notes. - As usual, we started from Emacs News https://sachachua.com/blog/2024/12/2024-12-09-emacs-news/ - This time we had a topic: discussing Org development directions following my presentation at EmacsConf 2024 https://emacsconf.org/2024/talks/org-update/ - karthink revealed his plans to work on rewriting org-pcomplete - Currently, Org mode uses pcomplete system to provide a list of completions - The completions are given "as-is" without any extra hints - In particular, Org babel header arguments are completed without giving any idea about one or other argument does - Karthik's idea is to rewrite org-pcomplete into a proper capf backend, where we can define "annotations" - a way to give a docstring during completion - Here is a demo: https://share.karthinks.com/citation-test.mp4 - As an alternative (or additional feature), I proposed to use eldoc for similar purposes - eldoc provides contextual help at point in the minibuffer - Some people may be familiar with eldoc via eglot (and lsp servers) where eldoc is used to show function documentation - ... but eldoc itself does not depend on LSP; it can be configured from Elisp - in fact, it is exactly what eglot does: eglot implements an eldoc backend that connects to LSP server to fetch the documentation - we may as well implement showing documentation for keyword at point via eldoc - This will not be as useful while typing and choosing completion, but useful when reading and examining code blocks - Org does not currently have built-in eldoc support, although there is org-eldoc library in org-contrib (which we cannot upstream for copyright reasons) - Here is some info on how to implement eldoc support https://www.masteringemacs.org/article/seamlessly-merge-multiple-documentation-sources-eldoc - Also, we have ~org-babel-view-src-block-info~ displaying a summary of all the header arguments; but without documentation - Some way of adding a documentation to header arguments and keywords would be nice to have - Probably, by introducing a new variable that will hold that documentation - Another interesting idea could be an equivalent of ~describe-variable~, but for Org buffers - We may display help for keyword/argument at point - We may jump to relevant page in the manual - Or even pop-up the info page in a child frame, as it is done in some game UIs - While discussing a way to document babel header arguments, we also deviated into the topic of Babel backend design - Currently, Babel backends are implemented by example, with backends using specially named functions and variables like ~org-babel-execute:~ - Not all these function names are even documented - This way of defining backends makes it difficult to judge whether a given src block has some backend associated with it or not, if the relevant backend library is not yet loaded - I eventually want to re-design the backend definition system using something similar to ~org-export-define-backend~ or maybe even ~org-export-define-derived-backend~. Then, we might be able to 1. autoload backend definitions to "register" them 2. Self-document what needs to be defined in babel backends simply by documenting parameters of the imaginary ~org-babel-define-backend~ function/macro - Of course, we will have to keep the old system working for backwards compatibility with third-party ob-* packages. - Bala Ramadurai asked about linking between personal notes - It is simple: you can use =C-c C-l= (~org-insert-link~) to insert a link at point - One common workflow is (1) going to the note to be linked; (2) M-x org-store-link (3) going back; (4) M-x org-insert-link where the recently stored link will be listed as the default option - I personally 1. configured link completion to search links interactively https://github.com/yantar92/emacs-config/blob/master/config.org#id-link-completion 2. made a helm command searching for headings with one of the actions to insert link to heading https://github.com/yantar92/emacs-config/blob/master/config.org#helm-org-ql - Also, I think that https://github.com/oantolin/embark can provide ways to insert link at point once you are using appropriately designed search interface, like org-ql-find - there is "l" embark action to store link to selected heading - zororg suggested https://github.com/toshism/org-super-links/ - This will not just store/insert links, but also store a "backlink" - Backlink is a link stored under Org heading that is referenced - org-super-links, for each heading references at least once, creates a list of places where a given header is referenced from - visuwesh asked about plans for org-mouse - he wants to implement Org mode support for context-menu-mode - ... which is one of the important things I think we should have in Org https://emacsconf.org/2024/talks/org-update/ - a more immediate problem with org-mouse is that loading org-mouse has side effects on the user - otherwise, someone working on context-menu-mode support would be very welcome - visuwesh shared a blog post explaining how to implement context-menu-mode integration https://amodernist.com/texts/emacs-mouse.html - another example is http://yummymelon.com/devnull/customizing-the-emacs-context-menu.html - Mehmet, the author of WIP patch for automatic two-ways sync between tangled files and Org src blocks, asked if his patch should wait until org.el refactoring - his patch: https://list.orgmode.org/orgmode/CAHHeYzJ6koLOr9=K82bjGX3fo6RHRJcvgdhJ6Ym08uPavuXnXQ@mail.gmail.com/ - There is no point waiting for my https://git.sr.ht/~yantar92/org-mode/log/feature/refactor-deps-v2 - it will take a long time, especially now when I can no longer afford to work on Org full time - William Denton asked a question that I recall I did not get first (from the chat) - The real question, I think, was about me searching Org headings using helm-org-ql https://github.com/yantar92/emacs-config/blob/master/config.org#helm-org-ql - Search looks like on the screenshot [[attachment:helm-org-ql.png]] - For each heading, I have multiple custom helm actions [[attachment:helm-org-ql-actions.png]] - I also modified org-ql query syntax to allow "postfix" notation: https://github.com/yantar92/emacs-config/blob/master/config.org#trying-org-ql - =contacts/= will match =contacts= in buffer path - =foo:= will match tag "foo" (with inheritance) - =foo== will match "foo" via regexp search - =foo#= will match "#foo" keywords in text (that's how I mark extra inline search terms in my notes) - helm-org-ql (and org-ql-find) can search in current buffer, in agenda files, or in arbitrary set of Org buffers - as visuwesh pointed, C-u C-u prefix in org-ql-find will prompt for buffers where to search - visuwesh even shared his custom buffer list function (I will also add my comments there) #+begin_src emacs-lisp ;; Ihor: might also use `org-buffer-list'. (defun vz/org-ql--buffers () "Return list of Org buffers to search in." (let ((buffers vz/org-ql-files)) (dolist (b (buffer-list)) (when (and (/= (aref (buffer-name b) 0) ?\s) ; Exclude hidden buffers. ;; Ihor: there is `derived-mode-p' (provided-mode-derived-p (buffer-local-value 'major-mode b) 'org-mode) (null (member (buffer-local-value 'buffer-file-name (or (buffer-base-buffer b) b)) vz/org-ql-files))) (push b buffers))) buffers)) (defun vz/org-ql-search () "Search for entry in relevant org files. This function considers the currently open org buffers and fixed set of files to search." (interactive) (let ((bufs (vz/org-ql--buffers))) (minibuffer-with-setup-hook (lambda () (use-local-map vz/org-ql-search-keymap) (setq vz/org-ql-search-buffer-files bufs)) (org-ql-find bufs)))) #+end_src - zororg asked whether I've ever tried NYXT browser https://nyxt.atlas.engineer/ - NYXT is a browser configurable in common lisp - I tried it two times, but my past attempts were not successful because things were crashing - Admittedly, it was during the early days of NYXT - For now, I am happy with my Qutebrowser (extendable in Python) https://qutebrowser.org/ - zororg commented that Qutebrowser (as well as NYXT) can be configured with Emacs key bindings - ...which is true, but makes little sense for browsers, where the main interaction model is closer to view-mode or VIM - although, I actually did configure many Emacs bindings specifically for editing in qutebrowser https://github.com/yantar92/emacs-config/blob/master/system-config.org#key-bindings-1 - zororg's version: https://git.sr.ht/~willvaughn/dots/blob/main/.config/qutebrowser/qutemacs.py - There is an integration between qutebrowser, Emacs, and EXWM https://github.com/lrustand/qutebrowser.el - We also deviated a bit too far away from Org mode and started discussing chromium vs. webkit rendering. I will not go into these details. - zororg asked about getting magit into Emacs upstream - this is from the chat and I do not recall answering this question - The same question was asked during https://emacsconf.org/2024/talks/emacs30/ talk (Q&A) and the answer was that there are still copyright issues to be sorted - Mehmet asked about my window manager (Awesome WM) - config: https://github.com/yantar92/emacs-config/blob/master/system-config.org#window-manager-awesome-wm - among other things, I display currently clocked in task (from Org) in one of the toolbars https://github.com/yantar92/emacs-config/blob/master/system-config.org#system-wibar-indicator-showing-currently-clocked-in-tasks https://github.com/yantar92/emacs-config/blob/master/system-config.org#externally-controlled-widgets https://github.com/yantar92/emacs-config/blob/master/config.org#display-clocked-in-entry - pinmacs's version for i3 #+begin_src emacs-lisp (defun my/org-clock-goto/light () "it is basically the same, but less interactive. no widen, no reveal" (if (org-clocking-p) (progn (pop-to-buffer-same-window (marker-buffer org-clock-marker)) (goto-char org-clock-marker) (org-back-to-heading t)))) (defun my/clocking-i3bar-pystatus-text() (save-window-excursion (save-excursion (if (org-clocking-p) (progn (my/org-clock-goto/light) (let* ((title_raw (org-entry-get nil "ITEM")) (title (replace-regexp-in-string "\\[.*?\\]" "" title_raw)) (tags (substring-no-properties (org-get-tags-string))) (proj_regex "\\([0-9]+_[0-9]+_[09a-zA-Z_]+\\)") (proj_tag (if (or (string-match "nutricion" tags) (string-match proj_regex tags)) (match-string 0 tags) " 🔴 💥 🔥"))) (if org-clock-task-overrun (format "🟡 %s 🟨 %s ⚠️" title proj_tag) (format "🟢 %s 🟩 %s" title proj_tag)))))))) #+end_src - While talking about my WM displaying current clocked task (time management), I also shared a similar idea I am using for budget management - I use envelope budgeting to keep track of expenses for different categories: food, rental, entertainment, etc. https://github.com/yantar92/emacs-config/blob/master/system-config.org#continuous-monitoring-of-budget - By keeping the current balance in front of my eyes all the time and am constantly aware of how much I spend for various things - It really helps with my overspending (and underspending in at least one case) - More recently (after having no job for a while) I went further, I started displaying the long-term planning indicators as well: emergency fund, retirement savings targets, investment targets, and income/expense ratios from various sources. To stay on top of the situation. - All the data is based on my well-established habit (since 2015) of keeping daily records in my ledger files. I can easily access various running averages on income and spending and calculate budget projections - karthink showed a demo displaying his customizations for C-c C-c in Org mode - He customized ~org-ctrl-c-ctrl-c-final-hook~ to automatically download information about movies and their upcoming broadcasts https://github.com/karthink/.emacs.d/blob/master/lisp/setup-org.el#L2234 - When one of the headings has tag @movie, heading title is searched via a couple of movie DBs online and the resulting query (formatted) is inserted under the heading - short description of the movie - an Org table with upcoming online broadcasts of the movie - Similarly, C-c C-c on latex previews, when the preview fails, displays LaTeX error https://github.com/karthink/.emacs.d/blob/master/lisp/setup-org.el#L593 - visuvesh customized C-c C-c to call ~org-open-link~ - this way his C-c C-c can be used in all scenarios without choosing between C-c C-c and C-c C-o - I personally use something similar, but customize TAB (~org-tab-first-hook~) in addition to C-c C-c - TAB or C-c C-c toggle image previews for me, when there is image at point https://github.com/yantar92/emacs-config/blob/master/config.org#preview - Tim asked about my capture templates I use for my quick notes - I automatically add a lot of context into the captured todos/notes 1. Link to current buffer/point where I am when capturing a note 2. Creation date 3. Currently clocked in task - Config: https://github.com/yantar92/emacs-config/blob/master/config.org#todo-item - Admittedly, my config is a bit complex because I am adding a few extra things on top what built-in capture templates do: - I use yasnippet integration via https://github.com/ag91/ya-org-capture - I use a custom placeholder to insert a link to currently clocked in task - Normally, one can simply use =%K= placeholder (see ~org-capture-templates~ docstring) - I modified things to avoid referencing certain types of clocked in tasks - For more complex templates I go further and also implement other extra things - For example, I use completion when capturing new topics (areas of interest) and setting CATEGORY property and title - The completion simply displays already existing categories, so that I (1) avoid duplicates; (2) keep similar keywords as in other categories I already use https://github.com/yantar92/emacs-config/blob/master/config.org#area-of-interest - Here, I also use https://github.com/progfolio/doct - karthink went a bit off-topic asking about WIP Emacs feature to support child frames in terminal Emacs - Among other things, child frames will allow https://github.com/minad/corfu/ to work in TTYs without having to write alternative UI for terminal (like what corfu-terminal package does) - emacs-devel discussions: https://yhetil.org/emacs-devel/m2h694lp7s.fsf@gmail.com https://yhetil.org/emacs-devel/m2ed6nfw86.fsf@pro2.fritz.box/ - We then went further astray talking about Emacs completion - I recently (relatively) switched to using built-in minibuffer completions + https://protesilaos.com/emacs/mct - Although I heavily customized things, more or less replicating helm experience (I still use helm for many custom commands though) https://github.com/yantar92/emacs-config/blob/master/config.org#custom-bindings-to-replicate-helm-look-and-feel - I made it so that I can switch to completions buffer and switch back automatically if I type there https://github.com/yantar92/emacs-config/blob/master/config.org#when-typing-in-completions-buffer-automatically-switch-to-the-minibuffer-for-input - We discussed various alternative ways to quickly select completion candidates - Someone raised a topic of using avy to select the candidates - visuwesh shared his code that integrates embark-act with avy for selecting or acting on a candidate #+begin_src emacs-lisp (defun vz/avy-completions--action (point) (avy-action-goto point) (choose-completion)) (defun vz/avy-completions () "Use avy to select the candidate in the *Completions* buffer." (interactive) (let ((avy-action #'vz/avy-completions--action) (avy-style 'post)) (avy-process (save-excursion (save-restriction (narrow-to-region (point-min) (window-end)) (goto-char (point-min)) (let (points prop) (while (setq prop (text-property-search-forward (if (>= emacs-major-version 29) 'completion--string 'mouse-face))) (push (prop-match-beginning prop) points)) points)))))) (defun vz/minibuffer-avy-completions () "Use avy to select a completion candidate from the minibuffer." (interactive nil minibuffer-mode) (let ((minibuffer (selected-window))) (switch-to-completions) (vz/avy-completions) (select-window minibuffer))) (defun vz/avy-embark-act-at-point (point) "Call `embark-act' at POINT." (let ((completionsp (equal (buffer-name) "*Completions*"))) (unwind-protect (progn (save-excursion (goto-char point) (when completionsp (choose-completion nil t t)) (when completionsp (switch-to-minibuffer)) (embark-act)))) (select-window (cdr (ring-ref avy-ring 0))) t)) #+end_src - Sacha Chua showcased various actions with embark, switching back closer to Org mode topic - Sacha uses embark to extend :follow functionality of Org links - She has multiple embark actions for a link, with a popup menu displaying the list of actions - By using embark, Sasha can perform a number of custom actions, in addition to Org's single :follow function - This lets her avoid introducing new custom link types just to create an alternative :follow function - Absence of custom link types also makes the Org files work for other people without Sacha's personal Emacs config - This embark menu is very similar to what we are thinking for citations in https://list.orgmode.org/87zfm4s50x.fsf@localhost/T/#t - The difference is that we aim to use transient.el rather than embark - More generally, Org aims to switch to transient.el for all the menus in order to drop our self-written menu UIs in favor of well-designed menu system that does not have to be maintained by us - We just need a few extra features, like dynamically constructing the transient menus, according to user preferences: https://list.orgmode.org/87o71jwdxz.fsf@localhost/T/#mea57a87665c1bb50f171bdc9490b040dd8cd8503 - With working dynamic transient UI building, we can later provide user-customizeable Org menus for following citations, links, etc - My mention of switching to transient.el triggered a long discussion on pros and cons of using transient - A number of people expressed concerns about some deficiencies of transient.el - Some people also prefer more lightweight solutions that do not alter certain aspects of the usual Emacs-keyboard interactions - The general idea we came up with is that menu UI should ideally be customizeable - /there is no UI that will fit all users/ - Possible UIs: transient itself, which-key, context-menus, embark, or even the usual completing-read minibuffer prompt - although embark does quite a bit more than just showing a menu of choices - it also hacks on completing-read interface to act of completions, which is an entirely different beast - Someone also mentioned do-at-point package where a similar UI issue has been discussed https://lists.sr.ht/~pkal/public-inbox/%3C85h6dgkrcl.fsf@elpa.gnu.org%3E - there is also hydra, but it did not see updates for a long while, and seems to be strictly inferior to transient - I followed up with the discussion on emacs-devel as it seems important enough before we commit (in Org mode) to transient-only https://list.orgmode.org/87msgzh1dh.fsf@localhost/ - The above discussion almost concluded the meeting, and a number of people left, but we accidentally slipped into talking about MPS and concurrency in Emacs - karthink (I think; may not recall correctly) noticed that I have a "project" in my Emacs dev notes about implementing concurrency in Emacs - That's not a serious project, but there are some good ideas I took time to invest into by reading Emacs sources and discussing on emacs-devel - See https://yhetil.org/emacs-devel/871qhnr4ty.fsf@localhost/ - It is a long thread, but we discuss in fine details, with pointers to Emacs sources, why concurrency in Emacs is hard and what can be done about it - My personal conclusion is that it is doable, but requires certain fundamental changes in Emacs code - And no, I am not going to pause Org maintenance to work on concurrency. I am not that familiar with Emacs internals to take on something as fundamental - Related, there is ongoing work concurrence garbage collector in Emacs https://mail.gnu.org/archive/html/emacs-devel/2024-04/msg00322.html - Eli and other maintainers are in favor of merging it - The branch is mostly stable and 100% usable - However, there are several fundamental problems that are yet to be solved before we know that the whole idea is going to work without having to sacrifice certain Emacs functionalities (like profiler or child processes) :chat: The latest Emacs news: https://sachachua.com/blog/2024/12/2024-12-09-emacs-news/ 16:59 Bala Ramadurai Bala Ramadurai says:Hello everyone! 17:00 Tim Tim says:Hello everyone, this is Tim 17:02 Tim says:Thanks for your interesting talk on EmacsConf! 17:03 Mehmet Mehmet says:Just wanted to say congrats on the new maintener status, Ihor! 👍 17:04 pinmacs pinmacs says:+1 17:04 zororg zororg says:Hi all! 17:04 K karthink karthink says:If there are no topics I can ask about org-pcomplete 17:05 zororg zororg says:Congrats Ihor for taking Org ahead! Hope to get inspired and try to contribute somehow 17:05 Bala Ramadurai Bala Ramadurai says:I am curious if any of you use linking of notes. I have tried many times, but failed 17:06 K karthink karthink says: https://share.karthinks.com/citation-test.mp4 17:06 zororg zororg says:I do linking with org-super-links 👍 17:06 K karthink karthink says:A while ago I made this demo of using Org completions with annotation strings 17:06 visuwesh visuwesh says:pcomplete can have annotations 17:11 Bala Ramadurai Bala Ramadurai says:pardon the ignorant question - what does eldoc do? 17:27 pinmacs pinmacs says:eldoc would be more useful for a code reviewer and pcomplete more for a developer 17:28 William Denton William Denton says:Thanks and congratulations to Ihor for being the new maintainer! 17:28 zororg zororg says:Eldoc displays documentation for symbols, functions . usually used in programming modes 17:29 visuwesh visuwesh says:Its the thing that shows you the information about the function or variable at point in an elisp buffer, for example 17:29 zororg zororg says:To use eldoc, other than elisp buffer you would need to have either lsp or repl (run-python, R) loaded 17:31 Bala Ramadurai Bala Ramadurai says:Thanks, got it! 17:31 me says: https://www.masteringemacs.org/article/seamlessly-merge-multiple-documentation-sources-eldoc 17:31 WT weary-traveler weary-traveler says:another option regd. self-documenting would be having something like C-h v / C-h f / C-h s / C-h o . i.e., having something like describe-org-keyword and describe-org-option 17:32 visuwesh visuwesh says:Are there any plans for org-mouse? I would like to make it work with context-menu-mode some day TM if there are no takers (once I figure out how to make context-menu-mode place nicely with mouse-save-then-kill) 17:33 visuwesh says:play nicely* 17:33 visuwesh says:Okay if there are no takers, i will eventually look into changing org-mouse to use context-menu-mode 17:34 visuwesh says: https://amodernist.com/texts/emacs-mouse.html there's also this 17:34 me says: http://yummymelon.com/devnull/customizing-the-emacs-context-menu.html 17:35 Mehmet Mehmet says:I have no mic right now, I just wanted to ask -- what are the plans on the two-way sync in tangle right now? I haven't looked at it in a while, and havent seen mention of it in the mailing list for a while. Is this something that will get clobbered by the org.el rewrite (i.e. I should wait until afterwards the rewrite to do something?) 17:36 William Denton William Denton says:Ihor, what was that command you ran on an Org heading that displayed all the information about it in the minibuffer? 17:36 visuwesh visuwesh says:it would be nice if we could use the transient stuff developed for cite keyowrd in context-menu-mode but that's getting ahead of us when the existing support for c-m-m is non-existent 17:36 Mehmet Mehmet says:"tangle-sync" 17:36 Mehmet says:yeah 17:36 Mehmet says:Im happy to start working on it again, but should I wait until after the org-el erewrite 17:37 Mehmet says:okay, thanks! 17:37 zororg zororg says:probably org-ql-find ? 17:39 William Denton William Denton says:Thanks. I didn't know about them. 17:40 zororg zororg says:There is no completions for internal linking by default? 17:41 zororg says:org-super-link does this 17:41 pinmacs pinmacs says:I like to use a BACKLINKS drawer, when from another subtree you link a subtree, is something "custom" I did 17:42 visuwesh visuwesh says:[[* TAB completes headings here? 17:42 zororg zororg says:for id: i mean 17:42 pinmacs pinmacs says:*... based on org-super-links 17:42 visuwesh visuwesh says:ah yes, that's unfortunate but I remember seeing someone adding a capf for autocompleting id: links 17:42 Tim Tim says:Could you show this linking using org-ql again? It was too fast for me. 17:43 zororg zororg says:embark? 17:43 Tim Tim says:OK, thanks! 17:46 zororg zororg says:embark shows option to insert link 17:46 visuwesh visuwesh says:If you use embark, it adds the `l' action to store the link to the selected heading in an org-ql-find command session 17:46 WT weary-traveler weary-traveler says:we need a yantar92-org-mode with ihor's config + documentation 17:46 K karthink karthink says:Can you use org-ql-find to find headings in Org files besides the current one? 17:47 WT weary-traveler weary-traveler says:yes, i've borrowed some tips from it now and again 17:47 K karthink karthink says:(Like org-ql-search does) 17:47 zororg zororg says:ihor, have you tried nyxt browser? 17:47 me says: https://github.com/yantar92/emacs-config/blob/master/config.org 17:47 zororg zororg says:Even qutebrowser can be configured to have emacs keybindings too 17:47 visuwesh visuwesh says:karthik: yes 17:47 zororg zororg says:Nyxt will be moving to electron (blink/chromium engine) soon 17:48 WT weary-traveler weary-traveler says:what? 17:48 Tim Tim says:There is a nice package for quotebrowser integration into exwm 17:49 WT weary-traveler weary-traveler says:zororg: got a citation for that? 17:49 zororg zororg says: https://git.sr.ht/~willvaughn/dots/blob/main/.config/qutebrowser/qutemacs.py this config make it like emacs 17:49 me says: https://github.com/lrustand/qutebrowser.el 17:49 Tim Tim says:Yes, exactly that one. Just started using it and it looks promising. 17:49 zororg zororg says:weary, https://github.com/atlas-engineer/nyxt/issues/2989 17:50 visuwesh visuwesh says:ughh my internet disconnected 17:50 WT weary-traveler weary-traveler says:okay, it'll add chromium as a renderer. that's less disturbing 17:51 visuwesh visuwesh says:karthik: you can give org-ql-find C-u C-u prefix to ask the buffers to search in. personally i have a wrapper command that searches in some set files and all open org buffers 17:51 zororg zororg says:yay 😉 org-ql! 17:52 pinmacs pinmacs says:woah, org-ql-find, thanks for mentioning it, very nice 17:52 K karthink karthink says:visuwesh: thanks 17:52 visuwesh visuwesh says:(defun vz/org-ql--buffers () "Return list of Org buffers to search in." (let ((buffers vz/org-ql-files)) (dolist (b (buffer-list)) (when (and (/= (aref (buffer-name b) 0) ?\s) ; Exclude hidden buffers. (provided-mode-derived-p (buffer-local-value 'major-mode b) 'org-mode) (null (member (buffer-local-value 'buffer-file-name (or (buffer-base-buffer b) b)) vz/org-ql-files))) (push b buffers))) buffers)) (defun vz/org-ql-search () "Search for entry in relevant org files. This function considers the currently open org buffers and fixed set of files to search." (interactive) (let ((bufs (vz/org-ql--buffers))) (minibuffer-with-setup-hook (lambda () (use-local-map vz/org-ql-search-keymap) (setq vz/org-ql-search-buffer-files bufs)) (org-ql-find bufs)))) 17:52 zororg zororg says:What the status of magit getting into core? 17:53 visuwesh visuwesh says:For current buffer, I added a `buf' predicate to narrow the search to specific buffer(s?) which is what im using since im poor at thinking ahead of what i want 😃 17:54 K karthink karthink says:Ihor, can you back up and show the command you're running again 17:55 visuwesh visuwesh says:The postfix idea is something I eventually want to steal 17:56 me says: https://github.com/yantar92/emacs-config/blob/master/config.org#trying-org-ql 17:57 Mehmet Mehmet says:unrelated: do you have your AwesomeWM(?) config hosted anywhere. I really like it 17:58 me says: https://github.com/yantar92/emacs-config/blob/master/system-config.org#window-manager-awesome-wm ❤️ 17:58 pinmacs pinmacs says:ihor, in your config you are using a query from your bar to get the clocking status, I also have something like that, I could not find in your config mine is like this (defun my/org-clock-goto/light () "it is basically the same, but less interactive. no widen, no reveal" (if (org-clocking-p) (progn (pop-to-buffer-same-window (marker-buffer org-clock-marker)) (goto-char org-clock-marker) (org-back-to-heading t)))) (defun my/clocking-i3bar-pystatus-text() (save-window-excursion (save-excursion (if (org-clocking-p) (progn (my/org-clock-goto/light) (let* ((title_raw (org-entry-get nil "ITEM")) (title (replace-regexp-in-string "\\[.*?\\]" "" title_raw)) (tags (substring-no-properties (org-get-tags-string))) (proj_regex "\\([0-9]+_[0-9]+_[09a-zA-Z_]+\\)") (proj_tag (if (or (string-match "nutricion" tags) (string-match proj_regex tags)) (match-string 0 tags) " 🔴 💥 🔥"))) (if org-clock-task-overrun (format "🟡 %s 🟨 %s ⚠️" title proj_tag) (format "🟢 %s 🟩 %s" title proj_tag)))))))) 17:59 WT weary-traveler weary-traveler says:are there plans for awesome to move to wayland? 17:59 weary-traveler says:i used to use awesome a while back. was a great experience (till laptop croaked and i switched OS) 18:00 zororg zororg says:hyprland, niri and sway are solid wayland compositors right now 18:00 William Denton William Denton says:I need to leave, but thanks for another Org meetup, Ihior. 18:00 V visuwesh visuwesh says:I think waycooler was supposed to be awesome's wayland continuation but it was discontinued AFAIR 18:00 pinmacs pinmacs says:yes 18:01 V visuwesh visuwesh says:(also rip kiwmi) 18:01 pinmacs pinmacs says:ok, thanks for sharing 😃 18:03 me says: https://github.com/yantar92/emacs-config/blob/master/system-config.org#system-wibar-indicator-showing-currently-clocked-in-tasks 18:03 Mehmet Mehmet says:thats brilliant 18:04 Sacha Chua Sacha Chua says:oooh, that's a nice way of seeing how things are going 18:05 V visuwesh visuwesh says:It would be nice to rely on dbus for this. Unfortunately, awesomewm's dbus support is essentially nonexistent 18:05 Sacha Chua Sacha Chua says:sort of lends itself to some kind of display on your dashboard or modeline or something 18:05 V visuwesh visuwesh says:Yea it is good enough but it does not feel clean tho 18:05 Sacha Chua Sacha Chua says:I use envelopes in ledger a lot too. I have an Org Mode file with lots of blocks that help me check various things. 18:06 Sacha Chua says:Oh yeah! For your Q&A last weekend - was there anything you might want us to remove from the recording, or can I post it as is? 18:07 Sacha Chua says:The Q&A transcript is just in the backstage area right now 18:08 Sacha Chua says:ah, it looks like I did post it 18:08 Tim Tim says:BTW: Thanks for EmacsConf, Sacha! 18:09 Sacha Chua Sacha Chua says:awesome, I'll post the video 18:09 Mehmet Mehmet says:thank you for the transcripts btw, super useful as someone who came late to the talks 18:09 Sacha Chua Sacha Chua says:Tim: You're welcome! Thanks to Ihor and everyone! 18:09 pinmacs pinmacs says:I need to leave, this is my first org meetup and it's so cool to have this space with you guys, wish to see you in the next one 😃 18:09 Sacha Chua Sacha Chua says:Okay it's now live at https://emacsconf.org/2024/talks/org-update/ 18:10 K karthink karthink says:I can show something I cooked up 18:11 WT weary-traveler weary-traveler says:all good 18:13 Mehmet Mehmet says:that's fun 18:14 Sacha Chua Sacha Chua says:Oh, I like that idea of making C-c C-c even smarter 18:15 Sacha Chua says:I have some code for filling in shopping details (thumbnail, etc) that could benefit from something like that 18:16 V visuwesh visuwesh says:I have C-c C-c on links do what C-c C-o does. One less binding to remember 18:17 WT weary-traveler weary-traveler says:karthink can you show the code please? 18:18 zororg zororg says:For website (movies) you can use justwatch as well https://www.justwatch.com/in/movie/hundreds-of-beavers 18:19 Tim Tim says:Ihor, could you elaborate a little bit on the way you are capturing quick notes? I saw a lot of meta data within your notes. 18:26 me says:org-capture-templates: %a and %k 18:29 Tim Tim says:Thanks! 18:29 V visuwesh visuwesh says:huh i was completely unaware of this 18:30 K karthink karthink says:Has anyone tried the childframes on tty patch yet? 18:31 karthink says:Search for from:gerd 18:32 V visuwesh visuwesh says:Since I practically don't use tty emacs at all, I haven't 18:32 K karthink karthink says: https://yhetil.org/emacs-devel/m2h694lp7s.fsf@gmail.com 18:33 V visuwesh visuwesh says: https://yhetil.org/emacs-devel/m2h694lp7s.fsf@gmail.com/ i think? 18:33 visuwesh says:oh same link 18:33 visuwesh says: https://yhetil.org/emacs-devel/m2ed6nfw86.fsf@pro2.fritz.box/ i think this is the initial thread 18:34 visuwesh says:it is well tested with corfu-posframe iirc since that's what Gerd was using 18:34 K karthink karthink says:Isn't Corfu already using a childframe? 18:35 V visuwesh visuwesh says:Yes but it wouldn't work in a tty because tty lacks childframe support currently 18:35 K karthink karthink says:I meant in reference to "corfu-posframe" 18:35 zororg zororg says:corfu-terminal by akib 18:35 K karthink karthink says:which is just Corfu 18:35 V visuwesh visuwesh says:I think there was corfu-popup or somesuch for tty Emacs tho 18:35 visuwesh says:Ahh, I do not use corfu so im unaware of how it actually works 18:35 visuwesh says:not really since company uses overlays by default 18:36 zororg zororg says:visuwesh you use built-in completions? 18:38 V visuwesh visuwesh says:yes, i was using ivy and company previously though 18:38 K karthink karthink says:Does completion-preview-mode (Emacs 30) block Emacs in your experience? 18:39 zororg zororg says:I tried built-in completions, fido-vertical, icomplete... but still came back to minad's stack 18:39 V visuwesh visuwesh says:c-p-m seems to use while-no-input so it is most likely performant? I haven't used it myself though 👍 18:40 zororg zororg says:prot (mct author) himself abadoned and told to use vertico lol 18:40 V visuwesh visuwesh says:Quickly selecting candidates is bit of a pain with built-in completions though 18:41 K karthink karthink says:zororg: He picked it up again after a while 18:41 V visuwesh visuwesh says:I am using avy to select candidates. Kind of like ivy-avy and I think vertico's indexed mode? 18:42 visuwesh says:Does minibuffer-next-completion not do the job for you? 18:42 visuwesh says:It is bound to M-/ by default 18:42 visuwesh says:M- does not switch to the Completions buffer here 18:43 zororg zororg says:there is `(completion-auto-select 'second-tab)` 18:44 V visuwesh visuwesh says:Ah so basically mimicing ivy and friends 18:44 visuwesh says:Yea going back is not fun 18:44 visuwesh says:That self-insertion-command thingy is really neat 18:45 visuwesh says:ahh can you not attach images here? for some reason, my uni manages to block audio for jitsi so i cannot really share my scren 18:47 visuwesh says:nah, something i wrote for mtself 18:47 zororg zororg says:avy is a package 18:47 V visuwesh visuwesh says:that is essentially what i do, yea. i can post the code if it is of interest 18:53 visuwesh says:and embark-act is just an avy action in my case 18:53 visuwesh says:(defun vz/avy-completions--action (point) (avy-action-goto point) (choose-completion)) (defun vz/avy-completions () "Use avy to select the candidate in the *Completions* buffer." (interactive) (let ((avy-action #'vz/avy-completions--action) (avy-style 'post)) (avy-process (save-excursion (save-restriction (narrow-to-region (point-min) (window-end)) (goto-char (point-min)) (let (points prop) (while (setq prop (text-property-search-forward (if (>= emacs-major-version 29) 'completion--string 'mouse-face))) (push (prop-match-beginning prop) points)) points)))))) (defun vz/minibuffer-avy-completions () "Use avy to select a completion candidate from the minibuffer." (interactive nil minibuffer-mode) (let ((minibuffer (selected-window))) (switch-to-completions) (vz/avy-completions) (select-window minibuffer))) 18:54 visuwesh says:(defun vz/avy-embark-act-at-point (point) "Call `embark-act' at POINT." (let ((completionsp (equal (buffer-name) "*Completions*"))) (unwind-protect (progn (save-excursion (goto-char point) (when completionsp (choose-completion nil t t)) (when completionsp (switch-to-minibuffer)) (embark-act)))) (select-window (cdr (ring-ref avy-ring 0))) t)) 18:55 visuwesh says:and here's the embark code 18:55 Sacha Chua Sacha Chua says:I like Embark =) I have a bunch of custom actions for various org link types 18:55 Sacha Chua says:like for image links, so I can open them in various apps 18:56 K karthink karthink says:I am surprised that you can have dozens of embark-target-finders without slowing down Embark 18:56 Sacha Chua Sacha Chua says:oh, a transient menu for link types would be nice 18:57 V visuwesh visuwesh says:Embark struggles in a remote-buffer when it goes through the file target 18:57 Sacha Chua Sacha Chua says:like if I can org-link-set-parameters ... :map ... 18:57 V visuwesh visuwesh says:But other than that, it is really solid. Goes to show how performant thing-at-point is I suppose (since i think embark uses thing-at-point for most basic targets) 18:58 Sacha Chua Sacha Chua says:On a related note, I've been moving some stuff away from custom link types towards just regular https:// links so that I don't have to worry about other people having to load my link types, but with some Embark target matching so I still have smart actions on certain kinds of things like blog posts. 18:59 kickingvegas kickingvegas says:hi folks! 19:03 Sacha Chua Sacha Chua says:hi hi! 19:03 V visuwesh visuwesh says:On this note, has anyone looked into turning embark into a context-menu-mode menu? 19:03 Sacha Chua Sacha Chua says:I would also like that 19:03 zororg zororg says:I will give you nightmare, try hyperbole hahah 19:04 V visuwesh visuwesh says:In principle, it should be straightforward but the problem is coming up with a short, descriptive name for the item name 19:04 Sacha Chua Sacha Chua says:also if anyone has figured out how to have friendly labels in the embark which-key menu that shows up if you delay, but that's off-topic for Org Mode 19:04 V visuwesh visuwesh says:Yeah... that's what I'm looking for too 19:04 zororg zororg says:sacha: `(embark-prompter 'embark-completing-read-prompter)` is better than which-key like menu 19:06 zororg says:basically you have completing-read on actions 19:06 Sacha Chua Sacha Chua says:zororg: I think I use that with C-h when I really can't see what I'm looking for 19:08 Sacha Chua says:so I get the which-key interface for quick hints, and still have completion if I need to 19:08 zororg zororg says:ah okay. That makes sense 19:11 zororg says:I lost my attention span these days, I cannot read whole thing. 19:12 Sacha Chua Sacha Chua says:ooh it looks like which-key-replacement-alist lets me use the function name even without a keybinding 19:12 Sacha Chua says:that might be enough to get me the rest of the way 19:12 Sacha Chua says:ooooh, org-link-set-parameters :transient .... ? =) 19:14 Sacha Chua says:it would be nice to have that for all sorts of other link types 19:14 Sacha Chua says:or :menu, or :map 19:14 Sacha Chua says:or :actions, because then it might not be transient 19:14 Tim Tim says:Unfortunately I have to leave. Ihor, thank you very much spending time explaining things to us. I really appreciate it. Bye! 19:15 Sacha Chua Sacha Chua says:ooooh, which-key-replacement-alist worked! 19:17 Sacha Chua says:I'm going to go fix all my menus now 19:17 me says: https://list.orgmode.org/87o71jwdxz.fsf@localhost/T/#mea57a87665c1bb50f171bdc9490b040dd8cd8503 The patch implementing dynamic transient 19:18 kickingvegas kickingvegas says:lost audio 19:19 Sacha Chua Sacha Chua says:Ihor: I'm contemplating setting up a Galene server that might be easier to run than BBB (fewer system resources needed, so I might be able to leave it running instead of bringing it up/down for each meetup) 19:20 Sacha Chua says:Do you have strong feelings one way or the other? 19:20 Sacha Chua says:or would you be okay with intermittent access to BBB (maybe 1 hour before the OrgMeetup, and an hour or two after the scheduled end?) 19:21 V visuwesh visuwesh says:Is there a way to calculate the values of those !thingies? It would be nice to reuse this defcustom in other UIs like Karthik points out 19:24 visuwesh says:There's also context-menu-mode 😛 19:24 WT weary-traveler weary-traveler says:sounds like a good case for embark to be upstreamed into emacs 19:25 weary-traveler says:or, coalesce around transient 19:25 kickingvegas kickingvegas says:not too thrilled to see fragmentation in menu toolkits here; would rather call out requirements and coalesce 19:27 V visuwesh visuwesh says:aaaahh okay that's good then, i hope it can be used outside of transient too 19:28 WT weary-traveler weary-traveler says:mute again? 19:29 SC Sacha Chua Sacha Chua says:I can show you the context menu I have for my links =) 19:36 WT weary-traveler weary-traveler says:sacha, that would be nifty 19:37 V visuwesh visuwesh says: https://lists.sr.ht/~pkal/public-inbox/%3C85h6dgkrcl.fsf@elpa.gnu.org%3E there was some discussion about things, actions, UI for those too which might be of interest 19:38 SC Sacha Chua Sacha Chua says:can you hear me? 19:38 T tbanel tbanel says:yes 19:39 SC Sacha Chua Sacha Chua says:oh yeah maybe that means #+LINK: might be handy for those rewritable links 19:46 Sacha Chua says:they're lighter-weight than making a link type 19:46 V visuwesh visuwesh says:Yea, the default things offered by thing-at-point are fast enough 19:46 SC Sacha Chua Sacha Chua says:anyway, yeah, context-sensitive actions will be great, and maybe there'll be multiple paths to it 19:47 V visuwesh visuwesh says:do-at-point might be a better candidate for Emacs core but yea involving minibuffer candidates is a whole another headache 19:48 visuwesh says:I tried to make do-at-poinat act on minibuffer candidates but gave up in the end since hte solution was really hacky 19:49 T tbanel tbanel says:hydra? 19:50 tbanel says:low activity on hydra, yes 19:50 SC Sacha Chua Sacha Chua says:Thanks! =) 20:09 martinl martinl says:Thank you all! My first meetup, see you again next month! 😀 20:10 V visuwesh visuwesh says:thank you all 20:10 tbanel tbanel says:thanks, bye 20:10 K karthink karthink says:Thanks for the meetup 20:10 SC Sacha Chua Sacha Chua says: https://mail.gnu.org/archive/html/emacs-devel/2024-04/msg00322.html ? 20:20 Sacha Chua says:from Gerd 20:20 me says: https://yhetil.org/emacs-devel/?q=f%3Atomas+and+Re%3A+Concurrency+via+isolated+process%2Fthread :end: -- Ihor Radchenko // yantar92, Org mode maintainer, Learn more about Org mode at . Support Org development at , or support my work at