This slides were displayed as one org file per top-level heading.
For convenience, I made a single-file version of it.

This HTML version was done using the =htmlize-buffer= command.

* Welcome to the first *Emacs Meetup* in Sthlm!

** Some words about me

   Nicolas Petton

   - I'm french and don't speak Swedish :)
   - Sotfware engineer
   - Emacs user since ~2009
   
   Web:      nicolas-petton.fr
   Email:    nicolas@petton.fr
   Twitter:  @NicolasPetton

** Many thanks to Företagsplatsen for sponsoring this Meetup

* Agenda

  - Discover the basics

  - Interesting modes 
    (share what you like!)

  - Break?

  - Customizing & Extending Emacs

  - Improvisation


#+BEGIN_SRC emacs-lisp
(animate-string "*Discovering Emacs*"
                (/ (window-height) 2)
                (- (/ (window-width) 2) 10))
#+END_SRC

* Emacs is not a text editor

  It is a system, but it does contain (very efficient) a text editor

* Emacs is also...

  - Lisp/Clojure/JS/etc. IDE

  - Terminal emulator

  - Email client

  - IRC client

  - Psychotherapist

  - Many other things


* Emacs is extremely extensible

  "People talk about getting used to a new editor, but over time, it
  is precisely the opposite that should happen - the editor should get
  used to us." - Vivek Haldar


  For this slides I wrote a few lines of Elisp

* Emacs is *old*
  1976 by Richard Stallman and Guy L. Steele, Jr

  Latest release: Emacs 24.4

* It doesn't look very modern by default

  #+BEGIN_SRC sh
  emacs -q
  #+END_SRC

  #+RESULTS:

* It has a different terminology from other editors

  - Buffer
  - Frame
  - Window
  - Point
  - Mark
  - Mode-line

* Emacs & modes

** Each buffer has one major-mode active

   A major mode defines the core editing behavior for a buffer.

** Each buffer can have many minor-modes active

   A minor mode defines additional behavior that is 
   orthogonal to major modes.

* Emacs UI is vastly based on key bindings

  - All default key bindings are different 
    from what you are used to

  - Do not try to learn them all at once

  - Instead, *learn how to learn* Emacs

  - Their terminology is also different

    C-x C-s
    
    M-x

    C-x b

* Emacs basic help

  - C-h t: Built-in tutorial

  - C-h i: Info manual

  - C-h k: Describe key

  - C-x C-s: Save buffer

  - C-x C-c: Exit Emacs

  - M-x: Evaluate interactive command


* Basic movements

                          Previous line, C-p
                                  :
                                  :
   Backward, C-b .... Current cursor position .... Forward, C-f
                                  :
                                  :
                            Next line, C-n




        C-f     Move forward a character
        C-b     Move backward a character

        M-f     Move forward a word
        M-b     Move backward a word

        C-n     Move to next line
        C-p     Move to previous line

        C-a     Move to beginning of line
        C-e     Move to end of line

        M-a     Move back to beginning of sentence
        M-e     Move forward to end of sentence

        C-v     Move forward one screenful
        M-v     Move backward one screenful
        C-l     Center the cursor on the screen


* The .emacs customization file

  It can be placed in

  - ~/.emacs
  - ~/.emacs.el
  - ~/.emacs.d/init.el

  - _emacs (Windows)

* Exploring some Emacs modes

  - [X] dired (w/ tramp & read-write)
  - [X] eshell
    - tramp
    - pseudo-devices (/dev/kill)
    - calling lisp
    - redirecting to buffers
  - [ ] undo-tree
  - [ ] ace-jump-mode
  - [ ] js2-refactor
  - [ ] paredit
  - [ ] multiple-cursors
  - [ ] magit
  - [ ] org
  - [ ] mu