Subject: bug#19730: python.el: Backspace may behave unexpectedly with tab indents

From: Dale <[email-masked]>
Date: Thu, 29 Jan 2015 18:32:43 -0600

Steps to reproduce:

1. Make a new python-mode buffer containing the following code, which 
uses a single tab character for one level of indentation on the second line:

~~~~~~
if x:
	abcdefg
~~~~~~

2. Ensure tab-width is set to 8.

3. Move the cursor to just after the "g".

4. Press backspace, which should be bound to 
python-indent-dedent-line-backspace.

Expected results: the "g" is deleted and the cursor is now just after 
the "f" in "abcdef".

Observed results: "g" is not deleted and the cursor is moved to the 
beginning of the indentation on the "abcdefg" line, i.e. just before the 
"a".

Versions:

OS X 10.9.5
Emacs Mac port built from emacs-24 branch a while back
python.el from emacs-24 HEAD, currently 868df45153

My amateur analysis:

python-indent-dedent-line is defined as:

~~~~~~
(defun python-indent-dedent-line ()
   "De-indent current line."
   (interactive "*")
   (when (and (not (bolp))
            (not (python-syntax-comment-or-string-p))
            (= (+ (line-beginning-position)
                  (current-indentation))
               (point)))
       (python-indent-line t)
       t))
~~~~~~

I think (line-beginning-position) and (point) both return character 
position within the buffer.  However, (current-indentation) returns 
"horizontal position" rather than character position.  With the cursor 
at the specified position:

(line-beginning-position) -> 7
(current-indentation) -> 8 (not, say, 1 for the single tab character)
(point) -> 15

(= (+ 7 8) 15) -> t

Thus this function chooses to attempt to indent the line.

I think adding (line-beginning-position) and (current-indentation) is 
"mixing units of measure," those units being character position and 
horizontal position, respectively.

One possible redefinition of python-indent-dedent-line is, perhaps:

~~~~~~
(defun python-indent-dedent-line ()
   "De-indent current line."
   (interactive "*")
   (when (and (not (bolp))
            (not (python-syntax-comment-or-string-p))
            (= (current-indentation) (current-column)))
       (python-indent-line t)
       t))
~~~~~~

That compares a horizontal position to a horizontal position.

Thank you for writing python.el!

Output from M-x report-emacs-bug:

In GNU Emacs 24.4.1 (x86_64-apple-darwin13.4.0, Carbon Version 157 
AppKit 1265.21)
  of 2014-10-25 on dale
Windowing system distributor `Apple Inc.', version 10.9.5
Configured using:
  `configure --with-mac --enable-mac-app=/Users/dale/toolbox/emacs/build
  --prefix=/Users/dale/toolbox/emacs/build'

Important settings:
   value of $LC_COLLATE: C
   locale-coding-system: utf-8-unix

Major mode: Emacs-Lisp

Minor modes in effect:
   magit-auto-revert-mode: t
   company-mode: t
   paredit-mode: t
   elisp-slime-nav-mode: t
   desktop-save-mode: t
   eldoc-mode: t
   global-edit-server-edit-mode: t
   global-flycheck-mode: t
   flycheck-mode: t
   whitespace-mode: t
   global-hi-lock-mode: t
   hi-lock-mode: t
   which-function-mode: t
   ido-ubiquitous-mode: t
   projectile-global-mode: t
   projectile-mode: t
   shell-dirtrack-mode: t
   recentf-mode: t
   winner-mode: t
   delete-selection-mode: t
   yas-global-mode: t
   yas-minor-mode: t
   ido-everywhere: t
   global-undo-tree-mode: t
   undo-tree-mode: t
   show-paren-mode: t
   tooltip-mode: t
   electric-indent-mode: t
   mac-mouse-wheel-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
   transient-mark-mode: (only only only only only only only only only 
only only only only only only only only only only only only only only 
only only only only only only only only only only only only only only 
only only only only only only only only only only only only)

Recent input:
C-u C-M-x <S-up> <backspace> SPC SPC SPC SPC SPC SPC
SPC SPC SPC SPC SPC SPC SPC SPC SPC SPC SPC SPC q x
x x x <backspace> c x x <backspace> c <backspace> c
<backspace> c <backspace> c <backspace> c x x x x x
x x x x <backspace> c <backspace> c <backspace> c <backspace>
c C-/ C-e <left> <left> <left> <left> <left> <left>
<left> C-k a b c d e f g <backspace> c <tab> <up> C-a
C-SPC C-SPC <C-down> <down> <up> M-w <S-down> C-x C-g
M-< M-> C-x C-g C-u C-SPC C-SPC <S-up> <up> <right>
<right> <right> C-e M-: M-( c u r r e n t - i n d e
n t a t i o n <return> C-a M-: <up> <return> C-e M-:
M-( p o i n t <return> M-: M-( l i n e - b e g i n
<tab> <return> C-a <up> <right> <right> <right> <right>
<right> <down> <S-down> M-x w h i t e <M-backspace>
f u l l - w h <return> <up> <up> <up> <up> <up> C-SPC
C-SPC <C-down> M-w <up> <up> <up> <up> <up> <up> <up>
<down> <down> M-f M-f M-b M-b <down> <up> <left> <down>
M-r C-e C-M-k SPC ( c u r <company-dummy-event> r e
n t - c o l <tab> <right> C-M-x <S-up> C-e <backspace>
g <left> <backspace> d <backspace> f C-a C-e M-m <tab>
<tab> <tab> <tab> <tab> <up> <backspace> : <down> C-e
M-: c u r r e n t - c o <M-backspace> <M-backspace>
C-g <down> <down> <up> <up> <up> <help-echo> <up> <down-mouse-1>
<mouse-1> M-@ M-@ M-@ M-@ M-@ M-@ M-@ M-@ M-@ M-@ M-@
M-w M-x e m a c s - <return> M-x e m a c s - b u f
<backspace> g <right> <return>

Recent messages:

  Statement seems to have no effect [W0104]
  Undefined variable 'abcdefg' [E0602]

  Statement seems to have no effect [W0104]
Quit
Beginning of buffer
Type @ to expand again, - to contract, 0 to reset
Auto-saving...done
GNU Emacs 24.4.1 (x86_64-apple-darwin13.4.0, Carbon Version 157 AppKit 
1265.21) of 2014-10-25 on dale

Load-path shadows:
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-loaddefs hides 
/Users/dale/.emacs.d/el-get/org-mode/contrib/lisp/org-loaddefs
/Users/dale/.emacs.d/el-get/auctex/preview/prv-emacs hides 
/Users/dale/.emacs.d/el-get/auctex/prv-emacs
/Users/dale/.emacs.d/el-get/auctex/preview/preview hides 
/Users/dale/.emacs.d/el-get/auctex/preview
/Users/dale/.emacs.d/el-get/auctex/preview/preview-latex hides 
/Users/dale/.emacs.d/el-get/auctex/preview-latex
/Users/dale/.emacs.d/el-get/auctex/preview/auto hides 
/Users/dale/.emacs.d/el-get/auctex/auto
/Users/dale/.emacs.d/el-get/ruby-mode/ruby-mode hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/progmodes/ruby-mode
/Users/dale/.emacs.d/el-get/python/python hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/progmodes/python
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox-texinfo hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox-texinfo
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox-publish hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox-publish
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox-org hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox-org
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox-odt hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox-odt
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox-md hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox-md
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox-man hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox-man
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox-latex hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox-latex
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox-icalendar hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox-icalendar
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox-html hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox-html
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox-beamer hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox-beamer
/Users/dale/.emacs.d/el-get/org-mode/lisp/ox-ascii hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ox-ascii
/Users/dale/.emacs.d/el-get/org-mode/lisp/org hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-w3m hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-w3m
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-version hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-version
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-timer hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-timer
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-table hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-table
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-src hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-src
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-rmail hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-rmail
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-protocol hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-protocol
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-plot hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-plot
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-pcomplete hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-pcomplete
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-mouse hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-mouse
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-mobile hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-mobile
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-mhe hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-mhe
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-macs hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-macs
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-macro hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-macro
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-loaddefs hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-loaddefs
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-list hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-list
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-irc hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-irc
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-install hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-install
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-inlinetask hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-inlinetask
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-info hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-info
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-indent hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-indent
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-id hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-id
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-habit hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-habit
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-gnus hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-gnus
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-footnote hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-footnote
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-feed hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-feed
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-faces hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-faces
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-eshell hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-eshell
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-entities hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-entities
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-element hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-element
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-docview hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-docview
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-datetree hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-datetree
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-ctags hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-ctags
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-crypt hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-crypt
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-compat hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-compat
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-colview hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-colview
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-clock hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-clock
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-capture hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-capture
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-bibtex hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-bibtex
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-bbdb hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-bbdb
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-attach hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-attach
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-archive hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-archive
/Users/dale/.emacs.d/el-get/org-mode/lisp/org-agenda hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/org-agenda
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-tangle hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-tangle
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-table hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-table
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-sqlite hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-sqlite
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-sql hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-sql
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-shen hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-shen
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-sh hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-sh
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-screen hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-screen
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-scheme hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-scheme
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-scala hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-scala
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-sass hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-sass
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-ruby hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ruby
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-ref hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ref
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-R hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-R
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-python hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-python
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-plantuml hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-plantuml
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-picolisp hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-picolisp
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-perl hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-perl
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-org hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-org
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-octave hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-octave
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-ocaml hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ocaml
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-mscgen hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-mscgen
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-maxima hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-maxima
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-matlab hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-matlab
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-makefile hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-makefile
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-lob hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-lob
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-lisp hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-lisp
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-lilypond hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-lilypond
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-ledger hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ledger
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-latex hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-latex
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-keys hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-keys
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-js hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-js
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-java hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-java
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-io hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-io
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-haskell hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-haskell
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-gnuplot hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-gnuplot
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-fortran hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-fortran
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-exp hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-exp
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-eval hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-eval
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-emacs-lisp hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-emacs-lisp
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-dot hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-dot
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-ditaa hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ditaa
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-css hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-css
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-core hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-core
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-comint hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-comint
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-clojure hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-clojure
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-calc hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-calc
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-C hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-C
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-awk hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-awk
/Users/dale/.emacs.d/el-get/org-mode/lisp/ob-asymptote hides 
/Users/dale/Applications/Emacs.app/Contents/Resources/lisp/org/ob-asymptote

Features:
(shadow sort mail-extr emacsbug sendmail disp-table adaptive-wrap
files-x magit-key-mode magit epa epg diff-mode git-rebase-mode
git-commit-mode log-edit message rfc822 mml mml-sec mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev
mail-utils gmm-utils mailheader pcvs-util edebug eieio-opt speedbar
sb-image ezimage dframe virtualenvwrapper wgrep-ag wgrep ag vc-svn
calccomp calc-bin calc-alg calc-menu calc-ext calc-aent calc
calc-loaddefs calc-macs deft find-lisp org-colview sql view mule-util
cal-move parse-time add-log org-capture misearch multi-isearch bookmark
tabify org-table org-archive org-clock company-files company-oddmuse
company-keywords company-etags company-gtags company-dabbrev-code
company-dabbrev company-capf company-cmake company-ropemacs
company-xcode company-clang company-semantic company-eclim
company-template company-css company-nxml company-bbdb company-anaconda
anaconda-mode json-rpc python json company paredit elisp-slime-nav
autorevert filenotify vc-git flyspell org-element org-indent org-rmail
org-mhe org-irc org-info org-gnus org-docview doc-view image-mode
org-bibtex bibtex org-bbdb org-w3m org org-macro org-footnote
org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp
ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys ob-comint
ob-core ob-eval org-compat org-macs cal-menu calendar cal-loaddefs
flx-ido-autoloads flx-autoloads server my/desktop desktop frameset
my/yaml my/xml my/text my/term my/sql my/sh my/ruby my/rst
python-el-fgallina-expansions my/python my/perl the-org-mode-expansions
my/org octave-expansions my/octave my/markdown my/lua my/lisp slime-asdf
slime-fancy slime-trace-dialog slime-fontifying-fu slime-package-fu
slime-references slime-compiler-notes-tree slime-scratch
slime-presentations bridge slime-fuzzy slime-fancy-trace
slime-fancy-inspector slime-c-p-c slime-editing-commands slime-autodoc
eldoc slime-repl elp slime-parse cl-indent latex-mode-expansions
my/latex my/javascript my/html my/cc cc-styles cc-align cc-engine
cc-vars cc-defs smart-tabs my/yasnippet my/mac ispell my/general-config
font-utils persistent-soft list-utils pcache eieio-base unicode-fonts
delight edit-server ctags-update etags-select bm info flycheck pcase
subr-x jka-compr sh-script smie executable whitespace filladapt
expand-region text-mode-expansions er-basic-expansions
expand-region-core expand-region-custom iy-go-to-char ace-jump-mode
hi-lock which-func imenu ido-ubiquitous warnings bs projectile ibuf-ext
ibuffer pkg-info find-func epl grep f dash s ucs-normalize tramp-cache
tramp-sh tramp tramp-compat tramp-loaddefs trampver shell pcomplete
recentf tree-widget wid-edit transpose-frame winner delsel my/utils
my/el-get vline buffer-move yasnippet switch-window quail smex ido
scss-mode flymake rvm org-loaddefs magit-autoloads slime gud apropos
compile etags arc-mode archive-mode noutline outline hyperspec
browse-url slime-autoloads evil evil-integration undo-tree diff
evil-maps evil-commands ffap url-parse auth-source eieio eieio-core
gnus-util mm-util mail-prsvr password-cache url-vars evil-command-window
derived evil-types evil-search evil-ex evil-macros evil-repeat
evil-states evil-core evil-common windmove thingatpt rect evil-digraphs
evil-vars edmacro kmacro goto-chg easy-mmode dired+ image-dired
format-spec image-file dired-x dired-aux coffee-mode rx comint
ansi-color ring autopair byte-opt cl-macs advice paren preview-latex
tex-site auto-loads .loaddefs el-get el-get-autoloading
el-get-list-packages el-get-dependencies el-get-build el-get-status pp
el-get-methods el-get-fossil el-get-svn el-get-pacman el-get-github-zip
el-get-github-tar el-get-http-zip el-get-http-tar el-get-hg el-get-go
el-get-git-svn el-get-fink el-get-emacswiki el-get-http el-get-notify
help-mode easymenu el-get-emacsmirror el-get-github el-get-git
el-get-elpa package epg-config el-get-darcs el-get-cvs el-get-bzr
el-get-brew el-get-builtin el-get-apt-get el-get-recipes
el-get-byte-compile el-get-custom el-get-core autoload help-fns lisp-mnt
bytecomp byte-compile cconv cl gv cl-loaddefs cl-lib dired autoloads
time-date tooltip electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel mac-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 gfilenotify mac multi-tty make-network-process emacs)

Memory information:
((conses 16 1084229 133921)
  (symbols 48 61796 0)
  (miscs 40 8337 14212)
  (strings 32 175105 26953)
  (string-bytes 1 5808252)
  (vectors 16 86017)
  (vector-slots 8 2174062 77341)
  (floats 8 871 1583)
  (intervals 56 39590 129)
  (buffers 960 61))