Dear all, Here are the long overdue meetup notes from the meetup before previous. (Finally getting back to more stable schedules)
TL;DR: xclip-mode + org-refile bug; org-transclusion bug; org-include-inline; transcluding code files into Org; MCP tool experiments; various ways to auto-list backlinks; filetags - predecessor idea for denote; including logbook records in agenda; repeated timestamps - scheduling a single event to other day; org-class; links inside links and image previews; org-capture'ing URLs - As usual, we started from the latest Emacs news https://sachachua.com/blog/2025/08/2025-08-11-emacs-news/ - Jacob S. Gordon shared (and showcased) a bug where org-refile does not interact well with xclip-mode (https://elpa.gnu.org/packages/xclip.html) - xclip-mode fiddles with the kill ring and org-refile internally uses the kill ring to carry around the refiled subtree (do not ask me why, although it is exactly what karthink did), leading to problems - I believe that the bug should be now fixed in https://cgit.git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=f974e85c07e80615bd35d58d3ba564b9a8ff0df9 - Nick Anderson reported an issue with org-transclusion - when org-indent-mode is active, the indentation is sometimes broken in the transcluded text - we tried to find the cause interactively, without much success (as I remember by now - I am writing this two months after the meetup) - org-transclusion is a pretty complex package, with many features - There is also https://github.com/yibie/org-include-inline if one needs something simpler and more reliable - Morgan asked about including non-Org text into Org files using org-transclusion - It should be possible with https://nobiot.github.io/org-transclusion/#Transclude-source-file-into-src_002dblock - We then moved to a bit of a tangent - MCP tools - I had some experiments in my scratch buffer and someone noticed :) - MCP tools are for LLMs. In my case, it was playing around mcp-hub + gptel #+begin_src emacs-lisp (use-package mcp :straight t :after gptel :custom (mcp-hub-servers `(;; ("filesystem" . (:command "npx" :args ("-y" "@modelcontextprotocol/server-filesystem" "/home/lizqwer/MyProject/"))) ;; ("fetch" . (:command "uvx" :args ("mcp-server-fetch"))) ("anki-mcp-server" . (:command "node" :args ("/home/yantar92/Dist/anki-mcp-server/build/index.js"))) ;; ("qdrant" . (:url "http://localhost:8000/sse")) ;; ("browser-use-mcp-server" . (:url "http://localhost:8000/sse")) ;; ("server-puppeterr" . (:command "npx" :args ("-y" "@modelcontextprotocol/server-puppeteer"))) ;; ("octagon" . (:command "npx" :args ("-y" "octagon-deep-research-mcp@latest"))) ;; ("google-docs-mcp" . (:command "node" :args ("/home/yantar92/test/mcp-googledocs-server/dist/server.js"))) ;; ("jupyter" . (:command "docker" :args ("run" "-i" "--rm" "--network=host" "-e" "ROOM_URL=http://localhost:8888" "-e" "ROOM_TOKEN=MY_TOKEN" "-e" "ROOM_ID=notebook.ipynb" "-e" "RUNTIME_URL=http://localhost:8888" "-e" "RUNTIME_TOKEN=MY_TOKEN" "datalayer/jupyter-mcp-server:latest"))) ;; ("graphlit" . ( ;; :command "npx" ;; :args ("-y" "graphlit-mcp-server") ;; :env ( ;; :GRAPHLIT_ORGANIZATION_ID "your-organization-id" ;; :GRAPHLIT_ENVIRONMENT_ID "your-environment-id" ;; :GRAPHLIT_JWT_SECRET "your-jwt-secret"))) )) :config (require 'mcp-hub) :hook (after-init . mcp-hub-start-all-server)) (setq mcp-server-start-time 12000) (require 'gptel-integrations) #+end_src - I tried multiple things with mixed success - The latest one was connector to Anki, which did not work very well - The tools I tried with some success (but no real use at the end) https://github.com/co-browser/browser-use-mcp-server https://github.com/a-bonus/google-docs-mcp https://github.com/datalayer/jupyter-mcp-server - Nick Anderson recommended https://github.com/choplin/jira-cli-mcp - Going back on topic, we talked about https://github.com/meedstrom/org-node and linking between Org entries - Nikita first asked about org-node specifically, but we quickly moved to more general discussion about different ways to connect between headings - There is, of course, classic linking with links (especially file-independent id: links), but the idea to create links automatically (e.g. backlinks) is fairly popular - There is, of course, well-known org-roam, with its backlinks - someone raised the issue that org-roam is not actively maintained - AFAIK, it is maintained (not by original author, but by enthusiasts with write accesss to the repo) and is fairly stable as for now - Some packages implement similar functionality but without using databases as in org-roam - One recent example is https://github.com/meedstrom/org-mem (previously called indexed) - Another example is https://github.com/toshism/org-super-links, which is closer to vanilla linking - Nick Anderson also mentioned https://thanosapollo.org/posts/org-gnosis-01/ - Nikita then clarified that he is specifically looking for an agenda-like list of "related" headings from different files - There are different ways how such list can be obtained - https://github.com/protesilaos/denote has somewhat similar functionality via dynamic blocks - there is also less known and fragile filetag support in Org (org-ctag) - so, the most relevant is probably org-roam's backlink buffer - we also talked a bit more about denote design with notes stored in individual files and file names containing keywords used for searching and ids used for linking - this denote's idea with file names is repeating an earlier idea from https://github.com/novoid/filetags - karthink asked about displaying :LOGBOOK: drawer in org-agenda-entry-text-mode - I looked into org-agenda.el, and filtering out the drawer is hard-coded there - An alternative could be https://github.com/alphapapa/org-quick-peek, where filtering can be customized - Morgan shared his problem with regular meetings that are occasionally rescheduled - such meeting can normally be marked with =<2025-10-06 Mon +1w>=, but when moved, say to Tuesday once (and back to Mondays next weeks), one cannot simply change the timestamp to =<2025-10-07 Tue +1w>= - I suggested adding an extra timestamp: =<2025-10-06 Mon +1w>= (regular weekly), =<2025-10-07 Tue>= (one off) - Unfortunately, there is no way (other than constructing diary-style timestamp with direct Elisp) to exclude a single day from timestamp with repeater. Maybe it is a feature that should be added one day - Another common suggestion that many people like is using org-clone-subtree-with-timeshift - We also have some special case for weekly timestamps excluding certain weeks - org-class. It is to be used in diary-style timestamps as =<%(org-class ...)>= (see the docstring). - This has been a part of Org mode since forever, although not mentioned in the manual - kikingvegas also chimed in describing some Mac's (if I recall correctly) feature to create repeated tasks not using special syntax, but simply by human-readable description: "Org diary timestamp for every second Wednesday of a month" - This is indeed possible. Either using a set of regexp rules to match or LLMs (well, I mentioned LLMs first, because it is that hummer that makes everything looking like nails nowadays). - karthink asked about recent discussion about the new customizeable link preview system. We had a bug report about previewing links inside links like =[[https://orgmode.org][file:./img.png]]= (aka clickable icon). - the tricky part about such example is that Org markup does not allow links inside link descriptions. Kind of. More specifically, the parser does not allow links inside description, but other parts of Org mode, in fact, do allow them as a special case. That special case was missed in the new preview system implementation. - Another part of that bug report was referring to https://blog.tecosaur.com/tmio/2021-04-26-Welcome.html#inline-display-remote that claims that links like =[[https://github.com/larsmagne/meme/raw/master/images/Grandma-Finds-The-Internet.jpg]]= can also be previewed - The truth is that they cannot - org-display-remote-inline-images option only works for TRAMP links. I myself keep getting confused about this, and even claimed that such feature existed in the email thread. - (maybe it should indeed exist) - karthink asked me about using org-capture to record links/bookmarks - some people configure capture templates to put link in title, or property drawer, or inside body - I myself use a sophisticated method, storing the link and other metadata in properties drawer in a way compatible with org-bibtex. I even have a very elaborate html parser package that captures links, downloads html/media, parses the html, and extracts author/title/etc - https://github.com/yantar92/org-capture-ref - Note that =C-c C-o= on heading in Org mode will offer a choice of all the links in title, properties drawer, and also body to open. This is an easy way to follow the link stored inside heading - Similar to what happens with links inside link description, Org parser does not recognize links inside property drawer. It is yet another special case in Org mode code. Parsing links inside property drawer also has drawbacks though. :comments: [17:55] yantar92 is now the presenter [17:59] [yantar92 : MODERATOR]: The latest Emacs news: https://sachachua.com/blog/2025/08/2025-08-11-emacs-news/ [17:59] [yantar92 : MODERATOR]: Official start in a few minutes [18:00] [yantar92 : MODERATOR]: Editable notes (including after the meetup): https://pad.emacsconf.org/orgmeetup [18:03] [Jacob S. Gordon : VIEWER]: am I audible? [18:03] [Jacob S. Gordon : VIEWER]: guess not, let me rejoin [18:04] Jacob S. Gordon is now the presenter, set by yantar92 [18:25] [karthink : VIEWER]: Why does org-refile touch the kill-ring at all? [18:29] [yantar92 : MODERATOR]: https://0x0.st/8CxO.patch [18:32] yantar92 is now the presenter, set by yantar92 [18:39] [Nick Anderson : VIEWER]: I use org-transclusion pretty frequently and often using the detach option to create a copy in whatever buffer i pulled the content in. [18:40] [Nick Anderson : VIEWER]: Sometimes there is some jank, yes. [18:40] [yantar92 : MODERATOR]: https://nobiot.github.io/org-transclusion/#Detach-transclusion-and-copy-source-buffer [18:40] [Nick Anderson : VIEWER]: I might have modifified my workflow to make things wqork for me [18:41] [yantar92 : MODERATOR]: https://github.com/yibie/org-include-inline [18:41] [Nick Anderson : VIEWER]: it does weird stuff with the source buffer during a transclusion. Breaks indention or something. [18:41] [Nick Anderson : VIEWER]: thanks for that, will check it out. [18:43] [Nick Anderson : VIEWER]: How do i share screen:? [18:44] [Nick Anderson : VIEWER]: May i 😁 [18:44] Nick Anderson is now the presenter, set by yantar92 [18:47] [Morgan : VIEWER]: If I wanted to include read only patch files in an org buffer would transclusion be good for that? [18:48] [Nick Anderson : VIEWER]: Maybe, depending what you want to include for [18:48] yantar92 is now the presenter, set by yantar92 [18:48] [Nick Anderson : VIEWER]: for exporting to a doc and sending to someone else? [18:48] [Morgan : VIEWER]: just for local preview in the org buffer [18:49] [Nick Anderson : VIEWER]: nore sure if it can transclude non-org thouhg [18:49] [Nick Anderson : VIEWER]: probably can, it can use file soource [18:49] [Morgan : VIEWER]: I guess I'm going for something like the latex inline preview but for plain text files [18:50] [Nick Anderson : VIEWER]: You can, i just tried [18:50] [Nick Anderson : VIEWER]: you just need to have a file path i think [18:50] [Nick Anderson : VIEWER]: #+transclude: [[file:/tmp/blah.txt][HI]] [18:50] [Morgan : VIEWER]: oh that's exactly what I want. Thank you very much 😊. I will look into this [18:52] [Nick Anderson : VIEWER]: thanks [18:54] [Nick Anderson : VIEWER]: I saw you were playing with some anki mcp toools [18:54] [Nick Anderson : VIEWER]: what other mcp tools are you using [18:55] [Nikita : VIEWER]: Anyone using org-node? I use it to have a links to connected org entries. Wanted to hear opinions regarding it. [18:55] [Nick Anderson : VIEWER]: google docs mcp ihavent seen that one [18:56] [Nick Anderson : VIEWER]: I have had good success with jira-cli-mcp in recent past. [18:56] [Nick Anderson : VIEWER]: sorry [18:56] [karthink : VIEWER]: In case there is no topic of discussion, I have a question about org-agenda-entry-text-mode: By default it omits the :LOG: drawer of an entry. i record updates to the status of a task in the :LOG: drawer -- is there some way to show that instead of the entry content? [18:57] [yantar92 : MODERATOR]: https://github.com/co-browser/browser-use-mcp-server [18:57] [yantar92 : MODERATOR]: https://github.com/a-bonus/google-docs-mcp [18:57] [yantar92 : MODERATOR]: https://github.com/datalayer/jupyter-mcp-server [18:58] [yantar92 : MODERATOR]: https://github.com/meedstrom/org-node [18:59] [Nick Anderson : VIEWER]: yep [18:59] [Nikita : VIEWER]: It is. It helps to connect org entries with each other. [18:59] [Nick Anderson : VIEWER]: It's like org-roam, but no sqlite [18:59] [Nick Anderson : VIEWER]: Renamed maybe? [19:00] [Nick Anderson : VIEWER]: no that was another of his [19:00] [Nick Anderson : VIEWER]: indexed or something [19:01] [Nick Anderson : VIEWER]: Yeah, org-mem was originally called indexed. [19:02] [Nick Anderson : VIEWER]: https://github.com/meedstrom/indexed [19:02] [Nikita : VIEWER]: May be there is a better way to connect org entries with each other? [19:02] [Nick Anderson : VIEWER]: Nikita I use id links almost exclusively what do you mean by interconnecting? [19:03] [Nikita : VIEWER]: I want it to be backlinked and also I want to have agenda that shows all connected chain of org entries. That what I am looking for. [19:03] [Nick Anderson : VIEWER]: org-superlinks, [19:04] [Nick Anderson : VIEWER]: and org-roam, or org-node, or i think org-gnosis there are a handfull [19:04] [yantar92 : MODERATOR]: https://github.com/toshism/org-super-links [19:04] [Nick Anderson : VIEWER]: https://thanosapollo.org/posts/org-gnosis-01/ [19:06] [Nick Anderson : VIEWER]: It's another org-roam alike I htink [19:07] [Nikita : VIEWER]: What will work best if I want to construct an agenda view to see all connected org entries from different files? [19:07] [Nikita : VIEWER]: With links and backlinks [19:08] [Nikita : VIEWER]: Right! [19:09] [Nikita : VIEWER]: Okay, thank you for answering. [19:11] [Nikita : VIEWER]: Will try in my spare time. Thank you! [19:12] [sam : VIEWER]: org-roam is no longer maintained ? [19:14] [sam : VIEWER]: I read somewhere, but I dont rememeber where [19:14] [sam : VIEWER]: the author dropped its maintaince [19:16] [sam : VIEWER]: I think prot denote is a very good alternative [19:16] [sam : VIEWER]: not really ? [19:17] [sam : VIEWER]: I yes [19:17] [sam : VIEWER]: but for someone who does not have a problem with that [19:17] [sam : VIEWER]: it is a good alternative [19:18] [sam : VIEWER]: you can link to any file, not only org [19:18] [sam : VIEWER]: image, photo ,pdf [19:19] [yantar92 : MODERATOR]: https://github.com/protesilaos/denote [19:19] [sam : VIEWER]: using the same links [19:19] [sam : VIEWER]: note file: [19:19] [sam : VIEWER]: id: or file: [19:19] [sam : VIEWER]: but denote their is only denote: links [19:20] [yantar92 : MODERATOR]: https://github.com/novoid/filetags [19:21] [sam : VIEWER]: I mean it is a good alternative to org-roam [19:22] [sam : VIEWER]: specialy from maintaince point of view also [19:22] [sam : VIEWER]: ande denote has no DB [19:22] [sam : VIEWER]: yep [19:22] [sam : VIEWER]: depends on the user taste [19:23] [sam : VIEWER]: yep [19:27] [karthink : VIEWER]: Yeah, I figured I would have to advise org-agenda-get-some-entry-text. Alternatively I can make org-add-note not use the :LOG: drawer [19:27] [karthink : VIEWER]: For which there is a customization [19:28] [karthink : VIEWER]: Ah, org-quick-peek is like org-agenda-follow-mode [19:29] [karthink : VIEWER]: With org-agenda-follow-indirect set to t [19:31] [karthink : VIEWER]: No updates from me [19:34] [Morgan : VIEWER]: that is an issue I have actually with the anchor thingy. I have a usually monday meeting that occasionally get pushed to tuesday or wednesday. but if i change the timestamp to tuesday and keep the same +7 then all hell breaks lose [19:34] [Jacob S. Gordon : VIEWER]: In those cases I just don't reschedule [19:35] [Morgan : VIEWER]: oh that's smart. why didn't I think of that [19:35] [Morgan : VIEWER]: thank you 😊 multi timestamp is the solution [19:36] [kickingvegas : VIEWER]: fwiw, there's org-clone-subtree-with-timeshift which IMHO works better than repeating timestamps [19:36] [kickingvegas : VIEWER]: for many use cases [19:38] [karthink : VIEWER]: I had a question about previewing http links to images [19:39] [karthink : VIEWER]: As discussed here: https://list.orgmode.org/87h5yjymth.fsf@localhost [19:40] [karthink : VIEWER]: Did Org ever preview images at http urls with org-toggle-inline-images? [19:41] [Morgan : VIEWER]: a slightly related other issue I have with scheduling: what if I know of an irregularity far in advanced. like my monday meeting is on tuesday due to a holiday like this: ,* meeting <2025-10-27 Mon ++7d> <2025-08-26 Tue> This will still show the meeting on the monday that it's not happening. For one meeting it's just annoying but if it's like 6 school classes then it could get garbled real fast [19:43] [Morgan : VIEWER]: is that a recent addition? I don't remember that from when I was in school [19:45] [karthink : VIEWER]: Also had a question about capturing links. There are a few different ways to do it, depending on the associated data: link in the heading, as a LINK property, in the body of the entry. What is your preferred method? [19:53] [kickingvegas : VIEWER]: gotta run - thanks! [20:19] [karthink : VIEWER]: Have to leave now, thanks for the meetup Ihor [20:19] [zaimon : VIEWER]: Thanks everyone [20:19] [Jacob S. Gordon : VIEWER]: Thanks for the help Ihor! [20:19] [cryptk : VIEWER]: thanks [20:19] [Morgan : VIEWER]: Thanks 😊 :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>
