[SUMMARY] #2 [[bbb:OrgMeetup]] on Wed, Sep 13, 19:00 UTC+3
[SUMMARY] #2 [[bbb:OrgMeetup]] on Wed, Sep 13, 19:00 UTC+3
-
weary-traveler asked to add a new feature to Org publishing system.
The use case is publishing using CI tasks, where a new, fresh image is created every time a web site is re-published. Such image does not preserve the original modification times of the source Org files, making Org publish re-generate everything every single time.
The new suggested feature is (optionally) using last git commit time instead of file modification time.
- Org already has somewhat similar functionality in a form of ={{{modification-time ...}}}= macro. See [[info:org#Macro Replacement][org#Macro Replacement]] section of Org manual.
- Also, several other places in Org are relying on file modification time and might need to be considered.
- Conclusion: the feature request is to be submitted to mailing list for more detailed discussion. (see https://orgmode.org/manual/Feedback.html#Feedback)
-
Tomas Volf asked where to start learning Org. Answer:
-
Go to https://orgmode.org
-
Click on "Worg" (Org wiki): https://orgmode.org/worg/
-
Check out https://orgmode.org/worg/#learn
-
I specifically recommend a short Org mode guide: https://orgmode.org/guide/index.html to get an overview of what is possible and https://orgmode.org/worg/org-tutorials/index.html with various use cases.
-
Karl Voit later pointed to his usual suggestion to learn one thing at a time: https://karl-voit.at/2020/01/20/start-using-orgmode/
- In short, Org is so large that it is useless to try learning everything. Just look quickly what is possible and use whatever is practically useful - small step at a time.
- If nothing in Org is useful, do not use Org (yes, it is perfectly fine not to use Org ;])
-
-
As usual, a number of people use Org mode for a number of different things. This time, the participants mentioned
- outlining documents and writing plain text notes
- source blocks to run code from notes
- note taking (sometimes on paper first, later copying to Org)
- blogging
- publishing to html
- export to LaTeX
- storing bookmarks from internet
- working on HS/CS projects
- People often start with one thing, but then it becomes convenient to re-use Org for more and more and ...
-
oatmeal described Emacs hanging when opening one specific Org file. Without further info, we could only offer generic tip to submit a bug report: https://orgmode.org/manual/Feedback.html#Feedback
-
William Denton asked about how yantar92 (me) uses Org mode to maintain Org mode :)
- ... which opened the pandora box of my rather complex GTD setup: https://github.com/tartan92/emacs-config/blob/master/config.org#org-mode
Some highlights:
- This setup is definitely not for beginners. Too many idiosyncratic things.
- I use a single notes.org file for all the notes + a bunch of
archive files for things I do not need to pop up in my searches
(via org-ql).
- Karl Voit has somewhat similar setup with giant Org files:
https://karl-voit.at/2020/05/03/current-org-files/
- He keeps pretty much all his digital life in Org mode: https://github.com/novoid/Memacs (all emails, browser history, SMS, rss, bank statements, git commits, etc)
- Karl Voit has somewhat similar setup with giant Org files:
https://karl-voit.at/2020/05/03/current-org-files/
- Org mode maintenance involves dealing with a growing pile of bug reports, feature requests, patches, ideas, etc. I currently have over 1k (yes, over one thousand) actionable ideas recorded.
- It is literally impossible for a single human to handle all these
- So, I instead approach this using priority system
- I collect everything Org-related (emails, github issues, reddit posts, blogs) into Org headings via https://github.com/yantar92/org-capture-ref
- I categorize Org-related tasks into: (1) bugs; (2) feature requests; (3) maintenance tasks; (4) misc tasks; (5) specific non-trivial projects (task groups), like implementing new syntax or fixing particularly difficult bugs.
- At any time, I limit my Org-related work to bugs, feature
request, maintenance tasks, and a couple of projects (according
to my free time).
- I do it by setting todo keyword "NEXT" on active groups and "SOMEDAY"/"HOLD" on inactive groups
- only active groups of tasks contribute to my agenda
- I re-consider active groups every week during weekly review
- More about my todo keywords: https://github.com/yantar92/emacs-config/blob/master/config.org#tasks
- Inside each group, I only mark a couple (of several hundreds) of
tasks as active (NEXT)
- I only review non-active tasks when I run out of "active" (NEXT) tasks (and the area/project is thus "stuck")
- Non-active tasks are marked with various levels of urgency, for easier review (I do not want to review all 300-500 tasks every time)
- A/B/C priority
- flagged/non-flagged
- flagged "#A" tasks are the first to be marked "NEXT" during the review
- Use https://github.com/yantar92/org-autosort
- The active tasks are scattered across my multiple layers of agenda views: focused agenda (have to do today); normal agenda (do after I finish focused agenda); NEXT task list (tasks to consider if I finish everything that is actually scheduled for today)
- More details at https://github.com/yantar92/emacs-config/blob/master/config.org#agenda--scheduling
- As an aside, because of so many headings, I display many standard
tags and todo keywords as UTF symbols: πππππββ―βββΆπββ©βΈ... for more compressed view
- See https://github.com/yantar92/emacs-config/blob/master/config.org#items
- Emacs allows to create you own non-standard symbols by combining multiple "glyphs" on top of each other: ~'(?π (cc . cc) ?π«)~ will draw π on top of π«, creating "prohibit clock" symbol. See help:reference-point-alist docstring more details about combining symbols in Emacs.
-
On working with large Org file
- The key point when working with large Org files is ability to search things and narrow things down to the project/area you currently work on
- One way is org-narrow-to-subtree and org-tree-to-indirect-buffer - it will limit Emacs buffer to specific subtree.
- Sparse trees allow revealing specific headings in folded Org buffer - by todo keyword, by tag, by property, by regexp etc. See https://orgmode.org/manual/Sparse-Trees.html
- One can even display Org buffer in a table form via https://orgmode.org/manual/Using-column-view.html
- Org agenda, despite its name, is not limited to listing scheduled
tasks. It is Editable search interface across multiple Org files.
One can search for specific headings (via tag, property,
scheduled, todo keyword, regexp, etc searches), see them as a list
in agenda view, and edit by changing their todo keywords,
scheduled, deadline, priority, etc See
https://orgmode.org/manual/Matching-tags-and-properties.html
- There are bulk agenda commands (B) to act of marked (m) headings together. See "Bulk remote editing selected entries" in https://orgmode.org/manual/Agenda-Commands.html
- C-k in agenda will delete the corresponding heading in Org file (with a prompt). M-x undo in agenda will undo both in agenda and in the Org file (not just deletion, any changes, like todo keywords, scheduling, etc)
- Karl Voit reminded that =<= in agenda will narrow items to
category at point (usually, it means current project/file). =C-u
<= will do the inverse (all but current category). Karl Voit uses
this to switch between business/non-business tasks.
- I personally use similar idea, but with =@home= and =@work= tags: https://github.com/yantar92/emacs-config/blob/master/config.org#location-contexts
- Even in existing agenda it is possible to further narrow matches down using filters. See https://orgmode.org/manual/Filtering_002flimiting-agenda-items.html
-
Tomas Volf asked about synchronizing Org files across multiple machines.
- Org files are just text files and things like Synchthing work just fine (https://syncthing.net/)
-
Karl Voit mentioned an alternative version of org-tree-to-indirect-buffer: https://github.com/novoid/dot-emacs/blob/master/config.org#L7510
- It allows multiple indirect buffers (built-in version needs customization for multiple indirect buffers; it kills previously existing indirect buffers by default)
- It uses different naming scheme.
-
Karl Voit mentioned a convenient way to copy html markup to Org markup: https://github.com/kuanyui/copy-as-org-mode
- Similar project, but for the whole web page: https://github.com/alphapapa/org-web-tools
- ... and for pasting images: https://github.com/abo-abo/org-download
- visuwesh reminded about his planned work on yank-media integration to be able to paste files and images from clipboard into Org. As usual, patches are welcome: https://orgmode.org/worg/org-contribute.html
-
Side track: why not using ChatGTP to implement new features? ... which does not work most of the time without manual editing :)
-
weary-traveler mentioned his alternative html export backend https://github.com/ox-tufte/ox-tufte
- The highlight is ability to have side (margin) notes in the exported html.
- Based on "tufte" CSS
-
weary-traveler showed a demo on using rst (reStructured text) tables inside Org files: https://weary-travelers.gitlab.io/posts/how-tos/overcome-org-syntactic-restrictions/guide.html
- The idea is to create a source block backend, which executes exporting its code to whatever export backend is needed
- This way, one can use complex rst tables with multi-row cells and complex cell layouts
- The same idea can be used to embed alternative markups into Org (also, it is how Org's embedded LaTeX works under the hood)
- Alternatively, Org mode supports =table.el= tables that allow
multi-row cells.
- Some Org auto-formatting convenience for table.el tables: https://github.com/casouri/ftable
-
Karl Voit briefly described his system to deal with "hard to finish" tasks
- He uses "reward" tag and allows himself do something enjoyable only after finishing the "reward" tasks, but not otherwise.
- One can use https://www.nongnu.org/org-edna-el/#introduction to automatically schedule "reward" task upon finishing the associated difficult task
- Also, see https://karl-voit.at/2020/08/14/project-mgt-draft/
-
Org mode clocking can be used as website blocker
- I block a number of websites that I tend to reach out mindlessly unless a specific task I am working on is either associated with such website or when that task is marked to not block anything.
- Such approach helps to avoid mindless scrolling across social media: https://www.goodreads.com/book/show/40672036-digital-minimalism
- Setup:
https://github.com/yantar92/emacs-config/blob/master/config.org#distraction-free-browsing
- This is specific to qutebrwoser (https://qutebrowser.org/), but one may as well write directly to /etc/hosts to the same global effect.
- visuwesh also asked about blocking certain Emacs buffers
(apparently, ement.el can be as addictive and reddit/youtube)
- One can utilize https://github.com/nex3/perspective-el and similar "workspace" packages for Emacs for this purpose
- Also, leading space in buffer name, by Emacs convention, hides it from buffer list: ~(get-buffer-create " another sample buffer") ;; space as the first char in the buffer name "unlists" the buffer~
- And there are, of course, various built-in Emacs hooks
-
Hooks executed when clocking in/out: org-clock-in-hook, org-clock-out-hook π
-
Tomas Volf asked about giant Emacs setup: whether the author (me) remembers everything that is going on there:
- The answer is no, I don't remember: things that are of use are simply in muscle memory and do not require further tweaking.
- Sometimes, config things feel so natural (after years of usage),
that they are thought as Emacs built-in (to later surprise trying
with emacs -Q)
- Like =highlight-parenthesis-mode=, which is a package I use for many years
- Unlike built-in, it highlights multiple levels of parentheses around point, not a single level.
- Like =highlight-parenthesis-mode=, which is a package I use for many years
-
Karl Voit uses major mode hydra as a personal version of cheat sheet for rarely used commands
- Another approach is using =which-key= package that displays all the prefix bindings after delay
- Or M-x describe-bindings
- Or something like =C-c C-v C-h= (any prefix ending with =C-h=), which will display a summary of bindings starting from that prefix key
-
kickingvegas asked about agenda command to move to an event that is scheduled now (for example, it is 2pm and the event is 1pm-3pm)
- Org agenda only has built-in command to jump to today (bound to ".")
- jumping to current time might be a logical addition to Org - see https://orgmode.org/worg/org-contribute.html