Subject: bug#16041: 24.3.50; Comment causes different indentation with SMIE

From: Ivan Andrus <[email-masked]>
Date: Tue, 3 Dec 2013 09:11:52 -0700

I am creating a major mode using SMIE for indentation.  The following
should indent the same, but they don't:

if false then # Hi
             DoSomething(x);
fi;

if false then
    # Hi
    DoSomething(x);
fi;

All the code for gap-mode can be found at
https://bitbucket.org/gvol/gap-mode/src but the relevant portions are
reproduced below.

Thanks,
Ivan

(require 'smie)

(defconst gap-smie-grammar
  (smie-prec2->grammar
   (smie-bnf->prec2
    '((id)
      (inst (exp) ;not technically, but probably makes sense
            (exp ":=" exp)
            ("function" insts "end")
            ("repeat" insts "until" exp)
            ("while" exp "do" insts "od")
            ("for" id "in" exp "do" insts "od")
            ("if" if-body "fi")
            ("return" exp)
            ("local" exps))
      (insts (insts ";" insts) (insts ";;" insts) (inst))
      (exp ("(" exps ")")
           ("[" exps "]")
           ("{" exps "}")

           ("not" exp)

           (exp ".." exp)
           (exp "and" exp)
           (exp "or" exp)
           (exp "<" exp)
           (exp "<=" exp)
           (exp "=" exp)
           (exp ">=" exp)
           (exp ">" exp)
           (exp "<>" exp)
           ;; (exp "in" exp)
           (exp "+" exp)
           (exp "-" exp)
           (exp "*" exp)
           (exp "/" exp)
           (exp "mod" exp)
           (exp "^" exp))

      (exps (exps "," exps) (exp))
      (itheni (insts) (exp "then" insts))
      (ielsei (itheni) (itheni "else" insts))
      (if-body (ielsei) (if-body "elif" if-body)))

    '((assoc ";" ";;"))
    '((assoc ","))
    '((assoc "elif"))
    '((assoc "not")
      (assoc "..")
      (assoc "and" "or")
      (assoc "<" "<=" "=" ">=" ">" "<>") ;; "in"
      (assoc "+" "-")
      (assoc "*" "/" "mod")
      (assoc "^"))))
  "SMIE Grammar for the GAP language.")

(defun gap-smie-rules (kind token)
  "SMIE indentation rules for the GAP language.
See `smie-rules-function' for meaning of KIND and TOKEN."
  (pcase (cons kind token)

    (`(:before . ",") (smie-rule-separator kind))

    ;; Handle indentation of XX := function(...) ... end
    (`(:before . "function")
     (when (save-excursion
             (forward-word 1)
             (forward-sexp 1)
             (smie-rule-hanging-p))
       (smie-rule-parent)))

    (`(:after . ")")
     (save-excursion
       (up-list -1)
       (when (equal "function" (car (smie-indent-backward-token)))
         `(column . ,(+ gap-indent-step (smie-indent-virtual))))))

    ;; It was aligning with the token following the if...
    (`(:before . ,(or `"then" `"elif" `"else"))
     0)

    ;; Stolen from ruby-mode -- need to check these...
    (`(:after . ,(or `"if" `"else" `"then"
                     `"elif" `"do" `"repeat" `"while"))
     gap-indent-step)

    (`(:before . ,(or `";" `";;"))
     (cond
      ((smie-rule-parent-p "function" "repeat" "while" "for"
                           "if" "then" "elif" "else" "when")
       (smie-rule-parent gap-indent-step))
      ))

    (`(:after . ,(or "=" ":=" "+" "-" "*" "/" "^"
                     ">" "<" ">=" "<=" "<>" "and" "or"))
     (if (smie-rule-parent-p ";" ";;" nil) gap-indent-step))))

;; The relevant portions of `gap-mode' itself
(defvar gap-syntax-table
  (let ((table (make-syntax-table)))
    ;; Comments
    (modify-syntax-entry ?#  "<" table)
    (modify-syntax-entry ?\n ">" table)
    (modify-syntax-entry ?\r ">" table) ;; cope with outline mode
    ;; operators
    (modify-syntax-entry ?+  "." table)
    (modify-syntax-entry ?-  "." table)
    (modify-syntax-entry ?*  "." table)
    (modify-syntax-entry ?/  "." table)
    (modify-syntax-entry ?^  "." table)
    (modify-syntax-entry ?~  "." table)
    (modify-syntax-entry ?!  "." table)
    (modify-syntax-entry ?=  "." table)
    (modify-syntax-entry ?<  "." table)
    (modify-syntax-entry ?>  "." table)
    ;; Symbol (sort of a hack so that x.y is a single symbol for help purposes)
    ;; We will make .. into punctuation later
    (modify-syntax-entry ?.  "_" table)
    table)
  "Syntax table used for GAP code.")

(progn
  (set-syntax-table gap-syntax-table)
  (set (make-local-variable 'comment-start) "#")
  (smie-setup gap-smie-grammar #'gap-smie-rules))

In GNU Emacs 24.3.50.1 (i386-apple-darwin12.5.0, NS apple-appkit-1187.40)
of 2013-11-29 on ivanandres-MacBookPro
Bzr revision: 115299 [email-masked]
Windowing system distributor `Apple', version 10.3.1187
Configured using:
`configure --with-ns --with-xml2'

Important settings:
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Org

Minor modes in effect:
  fold-mode-active: t
  semantic-minor-modes-format: ((:eval (if (or semantic-highlight-edits-mode semantic-show-unmatched-syntax-mode semantic-idle-scheduler-mode)  S)))
  TeX-PDF-mode: t
  diff-auto-refine-mode: t
  reveal-mode: t
  which-function-mode: t
  show-paren-mode: t
  global-semantic-stickyfunc-mode: t
  msb-mode: t
  minibuffer-depth-indicate-mode: t
  global-hl-line-mode: t
  global-auto-revert-mode: t
  delete-selection-mode: t
  auto-image-file-mode: t
  auto-insert-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  ido-everywhere: t
  global-visible-mark-mode: t
  visible-mark-mode: t
  gvol-mode: t
  shell-dirtrack-mode: t
  recentf-mode: t
  desktop-save-mode: t
  drag-stuff-global-mode: t
  global-anzu-mode: t
  anzu-mode: t
  keyfreq-autosave-mode: t
  keyfreq-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  auto-fill-function: org-auto-fill-function
  transient-mark-mode: t

Recent input:
C-r b i t b u C-o C-o C-u C-u C-u C-u C-o C-M-SPC C-M-j
C-M-j C-w C-/ C-c C-p <tab> M-x p a c k <return> C-x
b g a p <C-tab> <C-tab> C-s g a p - m o <return> <return>
C-s C-s C-s C-s C-s C-s C-a u p d x y e s <return>
M-x <return> C-s C-s <return> <return> i x y e s <return>
y y <C-tab> C-s <return> <C-tab> <C-down> <C-down>
<return> <return> C-y TAB TAB TAB <tab> C-/ C-k <tab>
C-k C-k C-M-SPC <C-up> <C-up> <C-up> C-w C-h v c o
m m e <tab> s t <tab> a <tab> <return> <C-tab> C-M-k
C-x r j e C-x r j n C-3 C-e C-x n w C-3 C-e <C-return>
N e w SPC Y e a r s C-j ' C-e SPC R e s o l u t i o
n s <return> <return> <C-return> <M-right> g e t SPC
a SPC w i l l <C-return> b u y SPC a SPC h o u s e
<C-return> g i v e <C-backspace> f i n d SPC c h a
r t i C-t i e s SPC t o SPC g i v e SPC t o <C-return>
f u n d SPC p u b l i c SPC r a d i o C-x C-s TAB TAB
TAB C-a M-c C-e M-c C-e M-c C-e M-c <C-return> B u
y SPC a SPC r e a l l y SPC n i c e SPC c o m p u t
e r C-u C-u C-x C-s <C-return> A n d SPC m a y b e
SPC a SPC t a b l e t C-x C-s C-g M-x r e p o C-s
<return>

Recent messages:
Finding ID locations (15/18 files): ~/SageStuff/trac.org
Finding ID locations (16/18 files): ~/TeX/dissertation/todo.org
Finding ID locations (17/18 files): ~/Documents/archive.org
Finding ID locations (18/18 files): ~/todo.org
8 unique files scanned for IDs
No new items
Creating agendas...
Agenda written to Org file /Users/ivanandres/Sites/org/agendas.org
Creating agendas...done
Saving all Org-mode buffers...
Quit

Load-path shadows:
/Users/ivanandres/.emacs.d/elpa/gap-mode-20131201.8/gap-smie hides /Users/ivanandres/vcs/gap-mode/gap-smie
/Users/ivanandres/.emacs.d/elpa/gap-mode-20131201.8/gap-process hides /Users/ivanandres/vcs/gap-mode/gap-process
/Users/ivanandres/.emacs.d/elpa/gap-mode-20131201.8/gap-mode hides /Users/ivanandres/vcs/gap-mode/gap-mode
~/vcs/emacs-achievements/ideas-achievements hides /Users/ivanandres/.emacs.d/elpa/achievements-20131112.151/ideas-achievements
~/vcs/emacs-achievements/basic-achievements hides /Users/ivanandres/.emacs.d/elpa/achievements-20131112.151/basic-achievements
~/vcs/emacs-achievements/advanced-achievements hides /Users/ivanandres/.emacs.d/elpa/achievements-20131112.151/advanced-achievements
~/vcs/emacs-achievements/achievements hides /Users/ivanandres/.emacs.d/elpa/achievements-20131112.151/achievements
~/vcs/emacs-achievements/achievements-pkg hides /Users/ivanandres/.emacs.d/elpa/achievements-20131112.151/achievements-pkg
~/vcs/emacs-achievements/achievements-functions hides /Users/ivanandres/.emacs.d/elpa/achievements-20131112.151/achievements-functions
~/vcs/emacs-clang-complete-async/auto-complete-clang-async hides /Users/ivanandres/.emacs.d/elpa/auto-complete-clang-async-20130526.2314/auto-complete-clang-async
/Users/ivanandres/.emacs.d/elpa/confluence-20130814.735/confluence-edit hides /Users/ivanandres/.emacs.d/elpa/confluence-edit-20130804.2241/confluence-edit
/Users/ivanandres/vcs/sage-mode/emacs/.dir-locals hides /Users/ivanandres/.emacs.d/elpa/highlight-parentheses-20130523.1752/.dir-locals
/Users/ivanandres/vcs/sage-mode/emacs/.dir-locals hides /Users/ivanandres/.emacs.d/elpa/highlight-symbol-20131103.2233/.dir-locals
~/vcs/nanowrimo/nanowrimo hides /Users/ivanandres/.emacs.d/elpa/nanowrimo-20131116.2150/nanowrimo
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-jira hides /Users/ivanandres/.emacs.d/elpa/org-jira-20130427.2116/org-jira
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-mac-link hides /Users/ivanandres/.emacs.d/elpa/org-mac-link-20131013.2023/org-mac-link
/Users/ivanandres/.emacs.d/elpa/php+-mode-20121129.1452/string-utils hides /Users/ivanandres/.emacs.d/elpa/string-utils-20131106.1006/string-utils
/Users/ivanandres/.emacs.d/elpa/jira-20130824.1158/jira hides ~/.emacs.d/local/jira
/Users/ivanandres/.emacs.d/elpa/fliptext-20131114.218/fliptext hides ~/.emacs.d/local/fliptext
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-texinfo hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-texinfo
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-publish hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-publish
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-org hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-org
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-odt hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-odt
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-md hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-md
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-man hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-man
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-latex hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-latex
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-icalendar hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-icalendar
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-html hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-html
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-beamer hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-beamer
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-ascii hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-ascii
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-w3m hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-w3m
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-version hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-version
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-timer hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-timer
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-table hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-table
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-src hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-src
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-rmail hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-rmail
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-protocol hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-protocol
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-plot hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-plot
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-pcomplete hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-pcomplete
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-mouse hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-mouse
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-mobile hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-mobile
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-mhe hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-mhe
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-macs hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-macs
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-macro hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-macro
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-loaddefs hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-loaddefs
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-list hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-list
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-irc hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-irc
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-install hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-install
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-inlinetask hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-inlinetask
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-info hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-info
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-indent hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-indent
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-id hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-id
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-habit hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-habit
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-gnus hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-gnus
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-footnote hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-footnote
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-feed hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-feed
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-faces hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-faces
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-eshell hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-eshell
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-entities hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-entities
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-element hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-element
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-docview hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-docview
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-datetree hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-datetree
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-ctags hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-ctags
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-crypt hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-crypt
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-compat hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-compat
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-colview hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-colview
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-clock hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-clock
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-capture hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-capture
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-bibtex hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-bibtex
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-bbdb hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-bbdb
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-attach hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-attach
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-archive hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-archive
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-agenda hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/org-agenda
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-tangle hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-tangle
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-table hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-table
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-sqlite hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sqlite
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-sql hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sql
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-shen hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-shen
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-sh hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sh
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-screen hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-screen
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-scheme hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-scheme
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-scala hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-scala
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-sass hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sass
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-ruby hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ruby
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-ref hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ref
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-R hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-R
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-python hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-python
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-plantuml hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-plantuml
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-picolisp hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-picolisp
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-perl hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-perl
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-org hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-org
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-octave hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-octave
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-ocaml hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ocaml
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-mscgen hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-mscgen
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-maxima hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-maxima
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-matlab hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-matlab
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-makefile hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-makefile
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-lob hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-lob
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-lisp hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-lisp
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-lilypond hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-lilypond
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-ledger hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ledger
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-latex hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-latex
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-keys hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-keys
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-js hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-js
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-java hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-java
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-io hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-io
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-haskell hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-haskell
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-gnuplot hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-gnuplot
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-fortran hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-fortran
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-exp hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-exp
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-eval hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-eval
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-emacs-lisp hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-emacs-lisp
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-dot hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-dot
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-ditaa hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ditaa
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-css hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-css
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-core hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-core
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-comint hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-comint
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-clojure hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-clojure
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-calc hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-calc
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-C hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-C
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-awk hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-awk
/Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-asymptote hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-asymptote
/Users/ivanandres/vcs/sage-mode/emacs/.dir-locals hides /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/lisp/gnus/.dir-locals

Features:
(shadow sort emacsbug sendmail tramp-sh ace-jump-mode etags-select etags
expand-region text-mode-expansions cc-mode-expansions
the-org-mode-expansions ruby-mode-expansions
python-el-fgallina-expansions nxml-mode-expansions html-mode-expansions
latex-mode-expansions er-basic-expansions expand-region-custom
expand-region-core gnutls tex-fold reftex-dcr reftex-auc reftex
reftex-vars tex-bar toolbar-x font-latex latex tex-style sage-latex
tex-buf tex crm latexenc find-file wgrep-ack wgrep ack-and-a-half
dash-at-point mail-extr view magit-key-mode magit grep git-commit-mode
git-rebase-mode browse-url table url-handlers term ehelp jira xml-rpc
timezone esh-var esh-io esh-cmd esh-opt esh-ext esh-proc esh-arg
esh-groups eshell esh-module esh-mode esh-util hi-lock org-capture
gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum nnoo
gnus-group gnus-undo nnmail mail-source gnus-start gnus-spec gnus-int
gnus-range message rfc822 mml mml-sec mm-decode mm-bodies mm-encode
mailabbrev gmm-utils mailheader gnus-win gnus gnus-ems nnheader bookmark
ob-octave auto-complete popup dash s mc-separate-operations
rectangular-region-mode mc-mark-pop mc-mark-more mc-cycle-cursors
mc-edit-lines multiple-cursors-core rect autoload tar-mode mule-util
mail-utils network-stream starttls url-http tls mail-parse rfc2231
rfc2047 rfc2045 ietf-drums url-gw url-cache url-auth finder-inf ibuf-ext
ibuffer restclient json-reformat json calc-misc calc-math calc-aent
calc-arith parse-time calc-yank calc-alg calc-menu calc-ext calc
calc-loaddefs calc-macs org-table repeat warnings cus-edit gap-smie
vc-svn vc-cvs vc-dir ewoc ruby-mode lisp-mnt checkdoc goto-last-change
dabbrev semantic/wisent/python semantic/dep semantic/wisent/python-wy
semantic/wisent semantic/wisent/wisent hideshow python debug edebug
vc-bzr smerge-mode diff-mode gap-mode gap-process pcase misearch
multi-isearch superword subword ffap epa-file epa derived epg epg-config
disp-table whitespace make-mode nxml-uchnm rng-xsd xsd-regexp rng-cmpct
rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt
rng-util rng-pttrn nxml-ns nxml-mode nxml-outln nxml-rap nxml-util
nxml-glyph nxml-enc xmltok sh-script smie executable hungry-delete
gvol-light-theme tabify cal-iso org-mobile org-archive vc-hg reveal
elide-head ede/cpp-root ede/generic ede/shell eieio-opt ede/speedbar
ede/files ede ede/base ede/auto ede/source eieio-speedbar speedbar
sb-image dframe eieio-custom semantic/db eieio-base vc-git c-eldoc eldoc
highlight-parentheses tempo url url-proxy url-privacy url-expand
url-methods url-history url-cookie url-domsuf url-util url-parse
url-vars mailcap xml-parse doxymacs hl-sexp highlight-symbol cc-langs
info-look cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
cc-engine cc-vars cc-defs time saveplace semantic/idle semantic/format
ezimage semantic/tag-ls semantic/find semantic/ctxt org-drill org-learn
org-id org-mouse org-irc org-habit org-agenda org-info org-gnus
org-docview doc-view image-mode dired+ dired-x dired-aux dired org-ctags
org-bibtex bibtex org-bbdb which-func imenu paren semantic/util-modes
semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local
cedet msb mb-depth icomplete hl-line autorevert filenotify delsel
image-file cus-start cus-load diary-lib diary-loaddefs autoinsert
yasnippet help-mode tramp tramp-compat auth-source eieio eieio-core
gnus-util mm-util mail-prsvr password-cache tramp-loaddefs trampver smex
ido visible-mark parenface fold commit-patch-buffer log-edit pcvs-util
add-log vc vc-dispatcher nanowrimo ox-latex ox-icalendar ox-html
ox-ascii ox-publish ox org-element org-crypt ob-sh shell ob-python
org-clock org byte-opt bytecomp byte-compile cconv org-macro
org-footnote org-pcomplete pcomplete org-list org-faces org-entities
noutline outline org-version ob-emacs-lisp ob ob-tangle org-src ob-ref
ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat
org-macs org-loaddefs format-spec find-func cal-menu calendar
cal-loaddefs org-writers-room edmacro kmacro org-wc sage sage-load
jka-compr recentf tree-widget wid-edit rx morlock xml flymake compile
comint ansi-color ring tex-site desktop frameset drag-stuff
browse-kill-ring backtr anzu thingatpt keyfreq uptimes pp server
easy-mmode assoc advice windmove auto-complete-clang-autoloads
command-frequency-autoloads etags-select-autoloads
goto-last-change-autoloads hl-sexp-autoloads mainline-autoloads
mark-multiple-autoloads php+-mode-autoloads php-eldoc-autoloads info
easymenu help-fns cl-macs gv visible-mark-autoloads yaml-mode-autoloads
cl cl-loaddefs cl-lib package time-date tooltip electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel ns-win tool-bar dnd fontset
image regexp-opt fringe tabulated-list newcomment lisp-mode prog-mode
register page menu-bar rfn-eshadow timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
cocoa ns multi-tty emacs)