From ed214bd344958ba1176dad17b6d3a72377efa1f8 Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Sun, 22 Nov 2020 23:48:37 +0100 Subject: [PATCH] Add code --- README.md | 3 -- README.org | 32 +++++++++++++++++++ org-keynote.el | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+), 3 deletions(-) delete mode 100644 README.md create mode 100644 README.org create mode 100644 org-keynote.el diff --git a/README.md b/README.md deleted file mode 100644 index c974e8d..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# org-keynote - -Org Keynote -- Minimal org-mode presentation tool \ No newline at end of file diff --git a/README.org b/README.org new file mode 100644 index 0000000..03110f7 --- /dev/null +++ b/README.org @@ -0,0 +1,32 @@ +#+Title: org-keynote +#+Author: Yann Esposito + +* =org-keynote= + +This is the most minimal presentation mode I could write to simulate a +keynote from an org-mode document. + +** Configuration + +There are two hooks you could take advantage of. +Typical doom-emacs configuration: + +#+BEGIN_SRC elisp +(use-package! org-keynote + :config + (add-hook 'org-keynote-mode-hook + (lambda () + (org-sticky-header-mode -1) + (doom/increase-font-size 3) + (org-display-inline-images))) + + (add-hook 'org-keynote-mode-quit-hook + (lambda () + (org-sticky-header-mode -1) + (doom/reset-font-size) + (org-remove-inline-images))) + (map! :map org-keynote-mode-map + :ni "" #'org-keynote-next + :ni "" #'org-keynote-prev + :ni "q" #'org-keynote-quit')) +#+END_SRC diff --git a/org-keynote.el b/org-keynote.el new file mode 100644 index 0000000..355d2fd --- /dev/null +++ b/org-keynote.el @@ -0,0 +1,84 @@ +;;; org-keynote.el --- Minimal presentation minor mode for org-mode. +;; -*- lexical-binding: t; -*- +;; +;; Copyright (c) Yann Esposito +;; +;; Author: Yann Esposito +;; Package-Requires: ((org "9")) +;; URL: https://gitea.esy.fun/yogsototh/org-keynote +;; +;; This file is not part of GNU Emacs. +;; +;; 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 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, write to the Free Software +;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +;; 02111-1307, USA. +;; +;;; Commentary: +;; +;; This is meant to be an extremely minimalist presentation tool for +;; Emacs org-mode. + +;;; Code: + +(require 'org) + +(defvar org-keynote-mode-keymap (make-keymap) "The keymap for org-keynote-mode.") + +;; left and right page keys +(define-key org-keynote-mode-keymap [right] 'org-keynote-next) +(define-key org-keynote-mode-keymap [left] 'org-keynote-prev) +(define-key org-keynote-mode-keymap (kbd "C-c C-q") 'org-keynote-quit) + +(define-minor-mode org-keynote-mode + "Minimalist presentation minor mode for org-mode." + :init-value nil + :lighter " OK" + :keymap org-keynote-mode-keymap) + +(make-variable-buffer-local 'org-keynote-mode) + +(defun org-keynote-next () + "Show next subtree." + (interactive) + (when (buffer-narrowed-p) + (goto-char (point-min)) + (widen) + (org-forward-heading-same-level 1)) + (org-narrow-to-subtree)) + +(defun org-keynote-prev () + "Show previous subtree." + (interactive) + (when (buffer-narrowed-p) + (goto-char (point-min)) + (widen) + (org-backward-heading-same-level 1)) + (org-narrow-to-subtree)) + +(defun org-keynote () + "Start the presentation." + (interactive) + (setq org-keynote-mode t) + (run-hooks 'org-keynote-mode-hook) + (org-narrow-to-subtree)) + +(defun org-keynote-quit () + "Stop the presentation." + (interactive) + (run-hooks 'org-keynote-mode-quit-hook) + (widen) + (setq org-keynote-mode nil)) + +(provide 'org-keynote) +;;; org-keynote.el ends here