emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* #14 [[bbb:OrgMeetup]] on Wed, Dec 11, 19:00 UTC+3
@ 2024-12-09 19:03 Ihor Radchenko
  2024-12-26 10:25 ` [BLOG] " Ihor Radchenko
  0 siblings, 1 reply; 2+ messages in thread
From: Ihor Radchenko @ 2024-12-09 19:03 UTC (permalink / raw)
  To: emacs-orgmode

Dear all,

Another OrgMeetup will be scheduled on the second Wednesday of December,
in 2 days.

This meetup follows my EmacsConf 2024 talk "The Future of Org":
https://emacsconf.org/2024/talks/org-update/
Feel free to ask anything about the talk.

Previous meetup notes:
https://list.orgmode.org/875xnsem1e.fsf@localhost/T/#u

WORG page with earlier notes and meetup schedule:
https://orgmode.org/worg/orgmeetup.html

URL: https://meet.jit.si/OrgMeetup
Time & Date: <2024-12-11 Wed 19:00-21:00 @+03,Europe/Istanbul>
The room will be open half an hour before the official start.

We will use jitsi as BBB instance is busy processing EmacsConf Q&A.

During the meetup, we can:

- Give advice to new users
- Showcase Org configs or workflows
- Demo/discuss interesting packages
- Troubleshoot each-other's issues
- Discuss Org mode development
- Discuss "Org mode" section of Emacs news (https://sachachua.com/blog/)
- Discuss anything else Org-related

Everyone is free to join the discussion/chat or lurk around silently,
listening.

We will _not_ do any recording by default.

-- 
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>


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [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

end of thread, other threads:[~2024-12-26 10:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-09 19:03 #14 [[bbb:OrgMeetup]] on Wed, Dec 11, 19:00 UTC+3 Ihor Radchenko
2024-12-26 10:25 ` [BLOG] " Ihor Radchenko

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).