This feed contains pages with tag "org-mode".
Context
Recently I was trying to reproduce a bug with
citeproc.el and
org-mode in emacs.
I thought I could use package-vc-install to install a set of
upstream emacs packages at fixed versions, and thereby let citeproc
upstream test in the same environment as I have.
It turns out that getting emacs to load the non-builtin version
of org via package-vc-install did not work because
org-modeneeds to run make after cloning- once package.el was initialized, I always seemed to end up with the
built in
org-mode(yeah, I realize that isn't an explanation).
Recipe part 1: get org
Here you can replace 9.8.7 with any other tagged release
EMACSHOME=$(mktemp -d)
git clone https://git.sr.ht/~bzg/org-mode ${EMACSHOME}/org
git -C ${EMACSHOME}/org reset --hard release_9.8.7
make -C ${EMACSHOME}/org autoloads
emacs -Q --batch -L ${EMACSHOME}/org/lisp --eval "(progn (require 'org) (message (org-version)))"
This should print 9.8.7, not the version of built in org-mode.
Recipe part 2: add-on packages
Now to test some add-on packages, run
emacs -Q --init-directory ${EMACSHOME} -L ${EMACSHOME}/org/lisp
(progn
(require 'org)
(package-initialize)
(package-vc-install "https://github.com/emacs-straight/queue")
(package-vc-install "https://github.com/joostkremers/parsebib" "6.7")
(package-vc-install "https://github.com/rejeep/f.el" "0.21.0")
(package-vc-install "https://github.com/magnars/s.el" "1.13.0")
(package-vc-install "https://github.com/akicho8/string-inflection" "1.0.16")
(package-vc-install "https://github.com/andras-simonyi/citeproc-el" "0.9.5"))
You can then run your tests in that emacs right away, or restart the environment with
emacs -Q --init-directory ${EMACSHOME} -L ${EMACSHOME}/org/lisp
I have lately been using org-mode literate programming to generate
example code and beamer slides from the same source. I hit a wall
trying to re-use functions in multiple files, so I came up with the
following hack. Thanks 'ngz' on #emacs and Charles Berry on the
org-mode list for suggestions and discussion.
(defun db-extract-tangle-includes ()
(goto-char (point-min))
(let ((case-fold-search t)
(retval nil))
(while (re-search-forward "^#[+]TANGLE_INCLUDE:" nil t)
(let ((element (org-element-at-point)))
(when (eq (org-element-type element) 'keyword)
(push (org-element-property :value element) retval))))
retval))
(defun db-ob-tangle-hook ()
(let ((includes (db-extract-tangle-includes)))
(mapc #'org-babel-lob-ingest includes)))
(add-hook 'org-babel-pre-tangle-hook #'db-ob-tangle-hook t)
Use involves something like the following in your org-file.
#+SETUPFILE: presentation-settings.org
#+SETUPFILE: tangle-settings.org
#+TANGLE_INCLUDE: lecture21.org
#+TITLE: GC V: Mark & Sweep with free list
For batch export with make, I do something like [[!format Error: unsupported page format make]]
I have been meaning to fix this up for a long time, but so far real work keeps getting in the way. The idea is that C-C t brings you to this week's time tracker buffer, and then you use (C-c C-x C-i/C-c C-x C-o) to start and stop timers.
The only even slightly clever is stopping the timer and saving on quitting emacs, which I borrowed from the someone on the net.
- Updated dependence on mhc removed.
- Updated 2009/01/05 Fixed week-of-year calculation
The main guts of the hack are here.
The result might look like the this (works better in emacs org-mode. C-c C-x C-d for a summary)