diff --git a/outshine.el b/outshine.el index bcc9833..fb38100 100644 --- a/outshine.el +++ b/outshine.el @@ -4,7 +4,7 @@ ;; Version: 1.0 ;; URL: https://github.com/tj64/outshine ;; -;; ** MetaData +;;;; MetaData ;; :PROPERTIES: ;; :copyright: Thorsten_Jolitz ;; :copyright-from: 2013 @@ -21,10 +21,18 @@ ;; :git-clone: git://github.com/tj64/outshine.git ;; :END: -;; ** Commentary +;;;; Commentary -;; *** About outshine +;;;;; About outshine +;; [NOTE: For the sake of adding this library to MELPA, headlines had to be +;; converted back from 'Org-mode style' to 'oldschool', and a few extra lines +;; of required information had to be added on top of the MetaData section - +;; just to comply with the required file formatting. All outshine, outorg and +;; navi-mode functionality still works with this file. See my +;; [[https://github.com/tj64/iorg][iOrg]] repository for examples of +;; Emacs-Lisp and PicoLisp files structured 'the outshine way'.] + ;; This library merges, modifies and extends two existing extension-libraries ;; for `outline' (minor) mode: `outline-magic' (by Carsten Dominik) and ;; `out-xtra' (by Per Abrahamsen). It offers all the functionality of @@ -47,7 +55,7 @@ ;; in temporary Org-mode buffers) and `navi-mode.el' (fast navigation and ;; remote-control via modified occur-buffers). -;; *** Installation +;;;;; Installation ;; Download `outshine.el' and copy it to a location where Emacs can find it, ;; and use this in your '.emacs' to get started: @@ -103,29 +111,29 @@ ;; or whatever. The prefix can only be changed before outline (minor) mode is ;; loaded. -;; *** Emacs Version +;;;;; Emacs Version ;; `outshine.el' works with [GNU Emacs 24.2.1 (x86_64-unknown-linux-gnu, GTK+ ;; Version 3.6.4) of 2013-01-20 on eric]. No attempts of testing with older ;; versions or other types of Emacs have been made (yet). -;; ** ChangeLog +;;;; ChangeLog ;; | date | author(s) | version | ;; |-----------------+-----------------+---------| ;; | <2013-05-03 Fr> | Thorsten Jolitz | 1.0 | ;; | <2013-02-20 Mi> | Thorsten Jolitz | 0.9 | -;; * Requires +;;; Requires (require 'outline) (require 'easymenu) ;; necessary before Emacs 24.3 (require 'newcomment) -;; * Variables -;; ** Consts +;;; Variables +;;;; Consts (defconst outshine-version "1.0" "outshine version number.") @@ -143,7 +151,7 @@ Used to override any major-mode specific file-local settings") (defconst outshine-oldschool-elisp-outline-regexp-base "[;]+" "Oldschool Emacs Lisp base for calculating the outline-regexp") -;; ** Vars +;;;; Vars ;; "\C-c" conflicts with other modes like e.g. ESS (defvar outline-minor-mode-prefix "\M-#" @@ -209,12 +217,12 @@ them set by set, separated by a nil element. See the example for (make-variable-buffer-local 'outshine-imenu-generic-expression) -;; ** Hooks +;;;; Hooks (defvar outshine-hook nil "Functions to run after `outshine' is loaded.") -;; ** Faces +;;;; Faces ;; from `org-compat.el' (defun outshine-compatible-face (inherits specs) @@ -369,8 +377,8 @@ any other entries, and any resulting duplicates will be removed entirely." "Face used for level 8 headlines." :group 'outshine-faces) -;; ** Customs -;; *** Custom Groups +;;;; Customs +;;;;; Custom Groups (defgroup outshine nil "Enhanced library for outline navigation in source code buffers." @@ -383,7 +391,7 @@ any other entries, and any resulting duplicates will be removed entirely." :group 'outshine) -;; *** Custom Vars +;;;;; Custom Vars (defcustom outshine-imenu-show-headlines-p t "Non-nil means use calculated outline-regexp for imenu." @@ -484,9 +492,9 @@ t Everywhere except in headlines" "Suppress visibility-state-change messages when non-nil.") -;; * Defuns -;; ** Functions -;; *** Define keys with fallback +;;; Defuns +;;;; Functions +;;;;; Define keys with fallback ;; copied and adapted from Alexander Vorobiev ;; http://www.mail-archive.com/emacs-orgmode@gnu.org/msg70648.html @@ -520,7 +528,7 @@ recover it by stripping off \"-map\" from KEYMAP name." (call-interactively original-func) (error nil))))))) -;; *** Normalize regexps +;;;;; Normalize regexps ;; from http://emacswiki.org/emacs/ElispCookbook#toc6 (defun outshine-chomp (str) @@ -558,7 +566,7 @@ recover it by stripping off \"-map\" from KEYMAP name." (setq outshine-normalized-outline-regexp-base (outshine-chomp outshine-outline-regexp-base)))) -;; *** Calculate outline-regexp and outline-level +;;;;; Calculate outline-regexp and outline-level ;; dealing with special case of oldschool headers in elisp (;;;+) (defun outshine-modern-header-style-in-elisp-p (&optional buffer) @@ -652,7 +660,7 @@ Based on `comment-start' and `comment-add'." m-strg ""))))))) -;; *** Set outline-regexp und outline-level +;;;;; Set outline-regexp und outline-level (defun outshine-set-local-outline-regexp-and-level (start-regexp &optional fun end-regexp) @@ -668,7 +676,7 @@ Set optionally `outline-level' to FUN and (make-local-variable 'outline-heading-end-regexp) (setq outline-heading-end-regexp end-regexp))) -;; *** Show number of lines in hidden body +;;;;; Show number of lines in hidden body ;; Calc and show line number of hidden body for all visible headlines (defun outshine-write-hidden-lines-cookies () @@ -730,7 +738,7 @@ Set optionally `outline-level' to FUN and ;; (add-hook 'outline-view-change-hook ;; 'outshine-write-hidden-lines-cookies) -;; *** Return outline-string at given level +;;;;; Return outline-string at given level (defun outshine-calc-outline-string-at-level (level) "Return outline-string at level LEVEL." @@ -771,7 +779,7 @@ top-level heading first." `(,(outshine-calc-outline-string-at-level (+ i 2)) . ,(+ i 2)) 'APPEND)))) -;; *** Fontify the headlines +;;;;; Fontify the headlines (defun outshine-fontify-headlines (outline-regexp) ;; (interactive) @@ -841,7 +849,7 @@ top-level heading first." (,heading-7-regexp 1 'outshine-level-7 t) (,heading-8-regexp 1 'outshine-level-8 t))))) -;; *** Outshine hook-function +;;;;; Outshine hook-function (defun outshine-hook-function () "Add this function to outline-minor-mode-hook" @@ -870,8 +878,8 @@ top-level heading first." ;; ;; add this to your .emacs ;; (add-hook 'outline-minor-mode-hook 'outshine-hook-function) -;; *** Additional outline functions -;; **** Functions from `outline-magic' +;;;;; Additional outline functions +;;;;;; Functions from `outline-magic' (defun outline-cycle-emulate-tab () "Check if TAB should be emulated at the current position." @@ -1029,9 +1037,9 @@ If yes, return this character." (>= level 1000)) -;; ** Commands -;; *** Additional outline commands -;; **** Commands from `out-xtra' +;;;; Commands +;;;;; Additional outline commands +;;;;;; Commands from `out-xtra' (defun outline-hide-sublevels (keep-levels) "Hide everything except the first KEEP-LEVEL headers." @@ -1067,7 +1075,7 @@ If yes, return this character." (show-children) (setq last (point))))))) -;; **** Commands from `outline-magic' +;;;;;; Commands from `outline-magic' (defun outline-next-line () "Forward line, but mover over invisible line ends. @@ -1278,7 +1286,7 @@ may have changed." -;; **** Commands from `outline-mode-easy-bindings' +;;;;;; Commands from `outline-mode-easy-bindings' ;; Copied from: http://emacswiki.org/emacs/OutlineMinorMode @@ -1385,7 +1393,7 @@ may have changed." (outshine-hide-hidden-lines-cookies) (outshine-show-hidden-lines-cookies))) -;; *** Overridden outline commands +;;;;; Overridden outline commands ;; overriding 'outline-insert-heading' ;; copied and adapted form outline.el, taking into account modes @@ -1420,7 +1428,7 @@ This function takes `comment-end' into account." (forward-char -1)) (run-hooks 'outline-insert-heading-hook))) -;; *** iMenu and idoMenu Support +;;;;; iMenu and idoMenu Support (defun outshine-imenu-with-navi-regexp (kbd-key &optional PREFER-IMENU-P LAST-PARENTH-EXPR-P) @@ -1524,7 +1532,7 @@ i.e. the text following the regexp match until the next space character." "Headline: "))))) -;; * Menus and Keybindings +;;; Menus and Keybindings ;; FIXME ;; From: Stefan Monnier @@ -1551,8 +1559,8 @@ i.e. the text following the regexp match until the next space character." ;; (lambda () (interactive) (if foo (CMD))), bind it to ;; (menu-item "" CMD :filter (lambda (cmd) (if foo cmd))). -;; ** Menus -;; *** Advertise Bindings +;;;; Menus +;;;;; Advertise Bindings (put 'outshine-insert-heading :advertised-binding [M-ret]) (put 'outline-cycle :advertised-binding [?\t]) @@ -1569,7 +1577,7 @@ i.e. the text following the regexp match until the next space character." (put 'outline-up-heading :advertised-binding [?\M-# ?\M-u]) (put 'outorg-edit-as-org :advertised-binding [?\M-# ?\M-#]) -;; *** Define Menu +;;;;; Define Menu (easy-menu-define outshine-menu outline-minor-mode-map "Outshine menu" '("Outshine" @@ -1606,8 +1614,8 @@ i.e. the text following the regexp match until the next space character." ;; get rid of "Outline" menu item (define-key outline-minor-mode-map [menu-bar outline] 'undefined) -;; ** Keybindings -;; *** Principal Keybindings +;;;; Keybindings +;;;;; Principal Keybindings ;; Adapted from `org-mode' and `outline-mode-easy-bindings' (let ((map outline-minor-mode-map)) @@ -1639,7 +1647,7 @@ i.e. the text following the regexp match until the next space character." map (kbd "M-") 'outline-next-visible-heading)) -;; *** Other Keybindings +;;;;; Other Keybindings ;; Set the outline-minor-mode-prefix key in your init-file ;; before loading outline-mode @@ -1680,7 +1688,7 @@ i.e. the text following the regexp match until the next space character." (define-key map "\M-#" 'outorg-edit-as-org) (define-key map "#" 'outorg-edit-as-org)) -;; * Run hooks and provide +;;; Run hooks and provide (run-hooks 'outshine-hook)