.emacs.d/elisp/init-org.el

115 lines
3.7 KiB
EmacsLisp

;;; init-org.el --- -*- lexical-binding: t -*-
;;
;; Filename: init-org.el
;; Description: Initialize Org, Toc-org, HTMLize, OX-GFM
;; Author: Mingde (Matthew) Zeng
;; Copyright (C) 2019 Mingde (Matthew) Zeng
;; Created: Fri Mar 15 11:09:30 2019 (-0400)
;; Version: 2.0.0
;; Last-Updated: Tue Dec 24 14:05:45 2019 (-0500)
;; By: Mingde (Matthew) Zeng
;; URL: https://github.com/MatthewZMD/.emacs.d
;; Keywords: M-EMACS .emacs.d org toc-org htmlize ox-gfm
;; Compatibility: emacs-version >= 26.1
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Commentary:
;;
;; This initializes org toc-org htmlize ox-gfm
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or (at
;; your option) any later version.
;;
;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Code:
;; OrgPac
(use-package org
:ensure nil
:defer t
:bind
("C-c l" . org-store-link)
("C-c a" . org-agenda)
("C-c c" . org-capture)
("C-c b" . org-switch)
(:map org-mode-map ("C-c C-p" . org-export-as-pdf-and-open))
:custom
(org-log-done 'time)
(org-export-backends (quote (ascii html icalendar latex md odt)))
(org-use-speed-commands t)
(org-confirm-babel-evaluate 'nil)
(org-todo-keywords
'((sequence "TODO" "IN-PROGRESS" "REVIEW" "|" "DONE")))
(org-agenda-window-setup 'other-window)
:config
(unless (version< org-version "9.2")
(require 'org-tempo))
(when (file-directory-p "~/org/agenda/")
(setq org-agenda-files (list "~/org/agenda/")))
(defun org-export-turn-on-syntax-highlight ()
"Setup variables to turn on syntax highlighting when calling `org-latex-export-to-pdf'."
(interactive)
(setq org-latex-listings 'minted
org-latex-packages-alist '(("" "minted"))
org-latex-pdf-process
'("pdflatex -shelnl-escape -interaction nonstopmode -output-directory %o %f"
"pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")))
(defun org-export-as-pdf-and-open ()
"Run `org-latex-export-to-pdf', delete the tex file and open pdf in a new buffer."
(interactive)
(save-buffer)
(let* ((pdf-path (org-latex-export-to-pdf))
(pdf-name (file-name-nondirectory pdf-path)))
(if (try-completion pdf-name (mapcar #'buffer-name (buffer-list)))
(progn
(kill-matching-buffers (concat "^" pdf-name) t t)
(find-file-other-window pdf-name))
(find-file-other-window pdf-name))
(delete-file (concat (substring pdf-path 0 (string-match "[^\.]*\/?$" pdf-path)) "tex")))))
;; -OrgPac
;; TocOrgPac
(use-package toc-org
:hook (org-mode . toc-org-mode))
;; -TocOrgPac
;; HTMLIZEPac
(use-package htmlize :defer t)
;; -HTMLIZEPac
;; OXGFMPac
(use-package ox-gfm :defer t)
;; -OXGFMPac
;; PlantUMLPac
(use-package plantuml-mode
:defer t
:custom
(org-plantuml-jar-path (expand-file-name "~/tools/plantuml/plantuml.jar"))
:config
(org-babel-do-load-languages
'org-babel-load-languages
'(;; other Babel languages
(plantuml . t))))
;; -PlantUMLPac
(provide 'init-org)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; init-org.el ends here