* [BLOG] #14 [[bbb:OrgMeetup]] on Wed, Dec 11, 19:00 UTC+3
2024-12-09 19:03 #14 [[bbb:OrgMeetup]] on Wed, Dec 11, 19:00 UTC+3 Ihor Radchenko
@ 2024-12-26 10:25 ` Ihor Radchenko
0 siblings, 0 replies; 2+ messages in thread
From: Ihor Radchenko @ 2024-12-26 10:25 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 48158 bytes --]
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:<backend name>~
- 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 <laugh>
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-<up>/<down> by default
18:42
visuwesh says:M-<up> 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 <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
[-- Attachment #2: helm-org-ql.png --]
[-- Type: image/png, Size: 378197 bytes --]
[-- Attachment #3: helm-org-ql-actions.png --]
[-- Type: image/png, Size: 314256 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread