146 lines
7.2 KiB
Org Mode
146 lines
7.2 KiB
Org Mode
# Created 2022-03-03 Thu 01:39
|
|
#+title: Welcome
|
|
#+date: 2021-04-26
|
|
#+author: TEC
|
|
|
|
* Introduction
|
|
|
|
Org is an absolutely marvellous project. However, a quick glance at
|
|
https://orgmode.org can lead one to think "so... it's an Emacs version of
|
|
Markdown? What's the big deal?". While it's easy to understand how someone might
|
|
think that at first, that impression misses two crucial points:
|
|
- While for simple constructs (*bold*, /italic/, headlines, etc.) the syntax is very
|
|
much analogous[fn:1], Org scales to much more powerful forms that are a
|
|
headache to replicate in Markdown
|
|
- Org mode was developed in Emacs, for Emacs. The integrations for Org put /every
|
|
other plaintext markup editing experience to shame/. *This is a bold statement*,
|
|
and I stand by it.
|
|
|
|
This blog exists because of the second point. The world does not stand still,
|
|
while new Markdown editors et al. are [[https://github.com/marktext/marktext][popping]] [[https://github.com/ApostropheEditor/Apostrophe][up]] [[https://remarkableapp.github.io/linux.html][left]], [[https://github.com/brrd/Abricotine][right]], [[https://github.com/DaveJarvis/keenwrite][and]] [[https://znote.io/][centre]] --- Org
|
|
has not languished. The [[https://orgmode.org/list/][mailing list]] is active, as is development, and the
|
|
number of things you can do with Org is only increasing.
|
|
|
|
However, if one doesn't want to receive tens to hundreds of emails a week, it
|
|
can be all too easy to miss out on exciting developments[fn:3] 😢. So, to help keep
|
|
you abreast of the latest in Org, I'm starting a blog ✨. Like all good things,
|
|
it is [[https://github.com/tecosaur/this-month-in-org/][written entirely in Org]].
|
|
|
|
Inspired by [[https://pointieststick.com/category/this-week-in-kde/][This Week in KDE]] I'm thrilled to announce /This Month in Org/ (we have
|
|
slightly less going on than a Desktop Environment[fn:2]). Each month I shall
|
|
endeavour to present the highlights of Org development.
|
|
|
|
Who knows, perhaps you might see something you'd like to help out with or
|
|
suggest improvements too. We'd love you to [[https://orgmode.org/community.html][get in touch]].
|
|
|
|
[fn:1] Aside from somewhat more [[https://orgmode.org/quickstart.html][intuitive syntax]] for emphasis and simple
|
|
structures, Org also has the advantage of not having [[https://github.com/commonmark/commonmark-spec/wiki/markdown-flavors][40 functionally distinct
|
|
specifications]]. There is only one Org. \\
|
|
NB: If you attempt to be pedantic you may say that there are multiple Orgs
|
|
because, for example, GitHub uses [[https://github.com/wallyqs/org-ruby][org-ruby]]. However, that's just an incomplete
|
|
implementation --- not a [[https://orgmode.org/worg/dev/org-syntax.html][specification]].
|
|
|
|
[fn:3] There is [[https://code.orgmode.org/bzg/org-mode/src/master/etc/ORG-NEWS][ORG-NEWS]], but do you /really/ check that? Besides, it doesn't even
|
|
have pictures.
|
|
|
|
[fn:2] That said, with /interesting/ projects like the [[https://github.com/manateelazycat/emacs-application-framework][Emacs Application
|
|
Framework]] and the [[https://github.com/ch11ng/exwm][Emacs X Window Manager]], one could argue that Org is
|
|
(sometimes) a major component of a desktop environment...
|
|
|
|
* Catching up on lost time --- a year in review
|
|
|
|
I joined the Org mailing list in May last year, it's almost been a year since
|
|
then and we've seen the release of Org 9.4, and its inclusion in Emacs 27.
|
|
|
|
I'm not going to do 12 months of work for just this one post, but I'd like to
|
|
give you a sample of what's changed over the last year.
|
|
|
|
** A new discussion tracker --- [[https://updates.orgmode.org/][updates.orgmode.org]]
|
|
|
|
Mid last year Bastien rolled out tracker for
|
|
- Upcoming changes
|
|
- Help requests
|
|
- Bugs
|
|
- Patches
|
|
|
|
This should help ensure nothing slips through the cracks of the ML.
|
|
|
|
#+caption: A screenshot of [[https://updates.orgmode.org/][updates.orgmode.org]]
|
|
[[file:figures/screenshot-of-updates-orgmode-org.png]]
|
|
|
|
It's very slick, and Bastien built a [[https://github.com/bzg/woof][mailbox monitor]] just for it --- so be sure
|
|
to check it out. This should make it easier to see what needs doing. If you feel
|
|
inclined to help out with Org check out the /Help requests/ section in particular.
|
|
|
|
You can also get RSS feeds for individual sections, or get the information as
|
|
JSON to work into your own projects, for example [[https://tecosaur.github.io/emacs-config/config.html#development][an elisp function to fetch and
|
|
apply patches]].
|
|
|
|
** Inline display of remote images
|
|
|
|
Ever gazed forlornly at a link like
|
|
=[[https://github.com/larsmagne/meme/raw/master/images/Grandma-Finds-The-Internet.jpg]]=
|
|
wishing you could see the image?
|
|
|
|
Wish no more! Thanks to Jack Kamm you can now look upon remote images in all
|
|
their glory!
|
|
|
|
#+caption: Org mode discovers the internet
|
|
[[https://github.com/larsmagne/meme/raw/master/images/Grandma-Finds-The-Internet.jpg]]
|
|
|
|
To get this working, simply set src_elisp{org-display-remote-inline-images} to
|
|
src_elisp{'download} or src_elisp{'cache}.
|
|
|
|
** Use ~org-edit-special~ (=C-c '=) with LaTeX fragments
|
|
|
|
It's great how in Org you can jump into a LaTeX-mode minibuffer for LaTeX
|
|
environments, but why leave inline LaTeX fragments out? We'll, they're now in.
|
|
|
|
#+caption: Running ~org-edit-special~ on an inline LaTeX fragment
|
|
[[file:figures/org-edit-special-latex-fragment.png]]
|
|
|
|
** Control heading display on startup
|
|
=org-num-mode= is great for when you're keeping an eye on section numbers, but
|
|
it's not fun to find yourself enabling it every time you open a file where you
|
|
want it. With the new option =#+startup: num= by Bastien, you can set and forget
|
|
at last.
|
|
|
|
#+caption: Opening a buffer with the new =num= and =show2levels= startup options
|
|
[[file:figures/org-startup-num-and-levels.png]]
|
|
|
|
Should you want to set the number of levels you see on opening a file, there's
|
|
now an option for that too. Gustav Wikström has added /another/ new option
|
|
=#+startup: show<n>levels= (where =<n>= is between 2 and 5, inclusive).
|
|
/NB: This is part of the upcoming 9.5 release/
|
|
|
|
** Set permissions of tangled files
|
|
|
|
Are you particular about your file permissions? If so you'll likely like John
|
|
Herrlin's new source block header argument =:file-mode= pertinent. The easiest way
|
|
to set a permission is with an [[https://docs.nersc.gov/filesystems/unix-file-permissions/][octal value]], like so:
|
|
#+begin_src org
|
|
,#+begin_src shell :results file :file script.sh :file-mode (identity #o755)
|
|
echo "#!/bin/bash"
|
|
echo "echo Hello World"
|
|
,#+end_src
|
|
#+end_src
|
|
|
|
** A collection of improvements to source block header arguments
|
|
|
|
These's been a whole set of these, so I'll just list them off.
|
|
- python, improved =:return= :: Now works with sessions and the =:epilogue=
|
|
argument (Jack Kamm)
|
|
- Java, new argument =:cmdargs= :: Add some command line arguments to be passed to ~java~ (Jarmo Hurri)
|
|
- C/C++, non-system headers with =:includes= :: values that don't start with =<=
|
|
will now be formatted as double-quoted src_C{#include} statements (Brandon
|
|
Guttersohn)
|
|
- Screen, new argument =:screenrc= :: For those of you who still haven't moved to =tmux= (Kenneth D. Mankoff)
|
|
|
|
** A seven year old bug was fixed
|
|
|
|
In 2013 [[https://lists.gnu.org/archive/html/emacs-orgmode/2013-08/msg00072.html][it was reported]] that an infinite loop could be triggered in
|
|
~org-agenda-show-new-time~. At long last, this has been fixed by Bastien.
|