From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ivan Andrus Newsgroups: gmane.emacs.bugs Subject: bug#16041: 24.3.50; Comment causes different indentation with SMIE Date: Tue, 3 Dec 2013 09:11:52 -0700 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1386087191 22683 80.91.229.3 (3 Dec 2013 16:13:11 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 3 Dec 2013 16:13:11 +0000 (UTC) To: 16041@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Dec 03 17:13:17 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Vnsb6-0007Na-4f for geb-bug-gnu-emacs@m.gmane.org; Tue, 03 Dec 2013 17:13:16 +0100 Original-Received: from localhost ([::1]:43253 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vnsb5-00089R-C2 for geb-bug-gnu-emacs@m.gmane.org; Tue, 03 Dec 2013 11:13:15 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:38510) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vnsax-00088L-47 for bug-gnu-emacs@gnu.org; Tue, 03 Dec 2013 11:13:11 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vnsas-0002Pn-Q0 for bug-gnu-emacs@gnu.org; Tue, 03 Dec 2013 11:13:07 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:42569) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vnsas-0002Pb-Lr for bug-gnu-emacs@gnu.org; Tue, 03 Dec 2013 11:13:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Vnsas-0003Je-Bm for bug-gnu-emacs@gnu.org; Tue, 03 Dec 2013 11:13:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Ivan Andrus Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 03 Dec 2013 16:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 16041 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.138608715012691 (code B ref -1); Tue, 03 Dec 2013 16:13:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 3 Dec 2013 16:12:30 +0000 Original-Received: from localhost ([127.0.0.1]:56588 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VnsaJ-0003Ia-Aw for submit@debbugs.gnu.org; Tue, 03 Dec 2013 11:12:29 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:36660) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VnsaE-0003IK-Dj for submit@debbugs.gnu.org; Tue, 03 Dec 2013 11:12:24 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vnsa1-0002Jg-BD for submit@debbugs.gnu.org; Tue, 03 Dec 2013 11:12:16 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:40829) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vnsa1-0002Ja-7k for submit@debbugs.gnu.org; Tue, 03 Dec 2013 11:12:09 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:38315) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VnsZx-00077K-50 for bug-gnu-emacs@gnu.org; Tue, 03 Dec 2013 11:12:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VnsZs-0002EA-4n for bug-gnu-emacs@gnu.org; Tue, 03 Dec 2013 11:12:05 -0500 Original-Received: from mail-ie0-x229.google.com ([2607:f8b0:4001:c03::229]:48235) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VnsZr-0002DY-R3 for bug-gnu-emacs@gnu.org; Tue, 03 Dec 2013 11:12:00 -0500 Original-Received: by mail-ie0-f169.google.com with SMTP id e14so24756217iej.28 for ; Tue, 03 Dec 2013 08:11:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:content-type:content-transfer-encoding:subject:message-id:date :to:mime-version; bh=ukT3Scf6n5Nojot7xRSh2X43rEKtVfl+1P8/CvSK91Q=; b=zO827E68ZkHJ2W88NXI0+/HCBno2vqUv4Op2DoVZrDz6DQSnPAFDGNGTHUQAY9MTdZ b60IJ89w3h0oB4focYQ57kc49iKfpVKnV57vWOlOulWmOVsXPmIeaeCperWZVUjksiPK /YhP1H0hmYFhNTrCYVy3+My17uizLedl3Q3KryuFl8/efAlGoA7vhJAv1+HOoqw0lXL5 4zlRE+0ioLtJoObeeUprtlOkXmaYjF6zDUmX2iqvy23WVk9pJQEhuxwCMQmqVx0jnWf/ NOiKmhSVhLkODb+x3XCz+acB7FZculFI5rWLQRjTBmu1jXoh5VWQ9ZR+MjIn0Cm0Qwwh Y/rw== X-Received: by 10.42.118.14 with SMTP id v14mr1329275icq.73.1386087119188; Tue, 03 Dec 2013 08:11:59 -0800 (PST) Original-Received: from [192.168.0.5] (174-29-174-200.hlrn.qwest.net. [174.29.174.200]) by mx.google.com with ESMTPSA id p5sm3734739igj.10.2013.12.03.08.11.58 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 03 Dec 2013 08:11:58 -0800 (PST) X-Mailer: Apple Mail (2.1510) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:81319 Archived-At: 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 ":=3D" 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 "<=3D" exp) (exp "=3D" exp) (exp ">=3D" 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 "<" "<=3D" "=3D" ">=3D" ">" "<>") ;; "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 :=3D 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 "=3D" ":=3D" "+" "-" "*" "/" "^" ">" "<" ">=3D" "<=3D" "<>" "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 ?=3D "." 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)) =20 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 = monnier@iro.umontreal.ca-20131130040418-ismpp03lapzso4tx 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 M-x p a c k C-x b g a p C-s g a p - m o C-s C-s C-s C-s C-s C-s C-a u p d x y e s M-x C-s C-s i x y e s y y C-s C-y TAB TAB TAB C-/ C-k C-k C-k C-M-SPC C-w C-h v c o m m e s t a 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 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 g e t SPC a SPC w i l l b u y SPC a SPC h o u s e g i v e 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 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 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 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 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-achievemen= ts ~/vcs/emacs-achievements/basic-achievements hides = /Users/ivanandres/.emacs.d/elpa/achievements-20131112.151/basic-achievemen= ts ~/vcs/emacs-achievements/advanced-achievements hides = /Users/ivanandres/.emacs.d/elpa/achievements-20131112.151/advanced-achieve= ments ~/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-fun= ctions ~/vcs/emacs-clang-complete-async/auto-complete-clang-async hides = /Users/ivanandres/.emacs.d/elpa/auto-complete-clang-async-20130526.2314/au= to-complete-clang-async /Users/ivanandres/.emacs.d/elpa/confluence-20130814.735/confluence-edit = hides = /Users/ivanandres/.emacs.d/elpa/confluence-edit-20130804.2241/confluence-e= dit /Users/ivanandres/vcs/sage-mode/emacs/.dir-locals hides = /Users/ivanandres/.emacs.d/elpa/highlight-parentheses-20130523.1752/.dir-l= ocals /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/li= sp/org/ox /Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ox-texinfo = hides = /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/org/ox-ascii /Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org hides = /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/li= sp/org/org /Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/org-w3m hides = /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/org/org-agenda /Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob hides = /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/li= sp/org/ob /Users/ivanandres/.emacs.d/elpa/org-plus-contrib-20131202/ob-tangle = hides = /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/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/li= sp/org/ob-asymptote /Users/ivanandres/vcs/sage-mode/emacs/.dir-locals hides = /Users/ivanandres/vcs/emacs/local/nextstep/Emacs.app/Contents/Resources/li= sp/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)