Slide 1

Slide 1 text

Emacs for Python Programming Vinod Kurup @vkurup October 20th, 2012

Slide 2

Slide 2 text

Hi Vinod!

Slide 3

Slide 3 text

Emacs users

Slide 4

Slide 4 text

Non-addicts (yet!)

Slide 5

Slide 5 text

Let's talk about... 1. Python-specific features 2. General programming features 3. Why I'm an addict for life

Slide 6

Slide 6 text

But first ...

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

How to safely play with Emacs ● Control-x Control-c quits (C-x C-c) ● C-g is your friend ● Plan to mess up vinod:~$ rm -r .emacs.d .emacs vinod:~$ emacs You're good to go again!

Slide 9

Slide 9 text

Emacs Sucks! but only if you use the default settings

Slide 10

Slide 10 text

Emacs Starter Kit M-x package-install RET starter-kit RET

Slide 11

Slide 11 text

Other nice starting points ● Emacs Prelude ○ http://batsov.com/prelude/ ● Emacs Live ○ https://github.com/overtone/emacs-live

Slide 12

Slide 12 text

Emacs Python IDE

Slide 13

Slide 13 text

Features ● Syntax highlighting ● Auto-Indentation ● Code completion ● Documentation lookup ● Code lookup / navigation ● Error highlighting (on-the-fly) ● Code runner ● Test runner ● Debugging

Slide 14

Slide 14 text

Major mode Python's is a bit of a mess

Slide 15

Slide 15 text

Use python-mode.el https://launchpad.net/python-mode M-x package-install RET python-mode RET

Slide 16

Slide 16 text

Syntax highlighting

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Automatic indentation

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

Code completion

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Documentation lookup

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Code lookup

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

Error highlighting

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

Code runner ● Send the current buffer to Python C-c C-c ● Choose your interpreter (setq python-python-command "ipython") ● Choose your virtualenv (virtualenv-workon "myproject") or M-x virtualenv-workon RET myproject RET

Slide 41

Slide 41 text

Test runner

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

Debugging

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

Brief HOWTO

Slide 51

Slide 51 text

Brief Howto (emacs)vinod:~ $ pip freeze Pymacs==0.25 pep8==1.3.3 pyflakes==0.5.0 pylint==0.25.2 rope==0.9.4 ropemacs==0.7 ropemode==0.2 wsgiref==0.1.2 Python Emacs (defvar my-packages '(starter-kit starter-kit-bindings yasnippet pony-mode markdown-mode auto-complete python-mode autopair) "A list of packages installed at launch.")

Slide 52

Slide 52 text

Brief Howto (setq py-load-pymacs-p t) (require 'python-mode) (require 'auto-complete-config) (ac-config-default) (require 'autopair) (autopair-global-mode) (shell) (add-to-list 'load-path "~/.emacs.d/vendor/") (virtualenv-workon "emacs/") (require 'pymacs) (pymacs-load "ropemacs" "rope-") (setq ropemacs-enable-autoimport t) ;; pyflakes flymake integration ;; http://stackoverflow.com/a/1257306/347942 (when (load "flymake" t) (defun flymake-pyflakes-init () (let* ((temp-file (flymake-init-create-temp- buffer-copy 'flymake-create-temp-inplace)) (local-file (file-relative-name temp-file (file-name-directory buffer- file-name)))) (list "pycheckers" (list local-file)))) (add-to-list 'flymake-allowed-file-name-masks '("\\.py\\'" flymake-pyflakes-init))) (add-hook 'python-mode-hook 'flymake-mode)

Slide 53

Slide 53 text

Non-python stuff

Slide 54

Slide 54 text

Magit mode

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

Help in emacs ● C-h t => tutorial ● C-h f => function docs ● C-h v => variable docs ● C-h k => keybindings Emacs can teach you emacs

Slide 63

Slide 63 text

Dired mode

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

Keyboard Macros

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

Pretty Themes

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

No content

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

Shell modes

Slide 74

Slide 74 text

No content

Slide 75

Slide 75 text

No content

Slide 76

Slide 76 text

And more!! ● Kill ring ● yasnippet ● org-mode ● ace-jump

Slide 77

Slide 77 text

Emacs for life!

Slide 78

Slide 78 text

One interface to rule them all

Slide 79

Slide 79 text

Infinitely customizable

Slide 80

Slide 80 text

Stands the test of time

Slide 81

Slide 81 text

Eight Megs And Constantly Swapping (Mine takes 41M now, though)

Slide 82

Slide 82 text

Thank you!!!