Emacsy Shane Celis GNU Hackers Meeting Paris, France August 24th, - - PowerPoint PPT Presentation

emacsy
SMART_READER_LITE
LIVE PREVIEW

Emacsy Shane Celis GNU Hackers Meeting Paris, France August 24th, - - PowerPoint PPT Presentation

Emacsy Shane Celis GNU Hackers Meeting Paris, France August 24th, 2013 Agenda Intended Audience What is Emacsy? What is Emacs? Demos Whats next? Where to get it Audience Audience Interactive application


slide-1
SLIDE 1

Emacsy

Shane Celis

GNU Hackers Meeting Paris, France August 24th, 2013

slide-2
SLIDE 2

Agenda

  • Intended Audience
  • What is Emacsy?
  • What is Emacs?
  • Demos
  • What’s next?
  • Where to get it
slide-3
SLIDE 3

Audience

slide-4
SLIDE 4

Audience

  • Interactive application developers
slide-5
SLIDE 5

Audience

  • Interactive application developers
  • Emacs users
slide-6
SLIDE 6

Audience

  • Interactive application developers
  • Emacs users
  • Why base it off Emacs?
slide-7
SLIDE 7

Emacsy: Google Summer of Code

  • Officially started this Summer
  • Working with Ludovic Courtès from GNU

Project

  • Received lots of help from #guile on

freenode.net

  • Special thanks to Andy Wingo and Mark

Weaver

slide-8
SLIDE 8

What is Emacsy?

slide-9
SLIDE 9

What is Emacsy?

  • It’s an embeddable Emacs-like library.
slide-10
SLIDE 10

What is Emacsy?

  • It’s an embeddable Emacs-like library.
  • How Emacs-like exactly?
slide-11
SLIDE 11

A Joke That Explains

Emacs is a great operating system–lacking

  • nly a decent editor.

Emacs Mail Reader

Emacs Extensions

slide-12
SLIDE 12

A Joke That Explains

Emacs is a great operating system–lacking

  • nly a decent editor.

Emacs Mail Reader

Emacs Extensions

slide-13
SLIDE 13

A Joke That Explains

Emacs is a great operating system–lacking

  • nly a decent editor.

Emacs Mail Reader

Emacs Extensions

"Emacs OS" Text Editor Mail Reader

Emacs Extensions

slide-14
SLIDE 14

Emacsy Features

slide-15
SLIDE 15

Emacsy Features

  • lisp interpreter
slide-16
SLIDE 16

Emacsy Features

  • lisp interpreter
  • keymaps
slide-17
SLIDE 17

Emacsy Features

  • lisp interpreter
  • keymaps
  • minibuffer
  • history
  • completion
slide-18
SLIDE 18

Emacsy Features

  • lisp interpreter
  • keymaps
  • minibuffer
  • history
  • completion
slide-19
SLIDE 19

Emacsy Features

  • lisp interpreter
  • keymaps
  • minibuffer
  • history
  • completion
  • recordable

macros

slide-20
SLIDE 20

Emacsy Features

  • lisp interpreter
  • keymaps
  • minibuffer
  • history
  • completion
  • recordable

macros

  • comprehensive
  • nline help
slide-21
SLIDE 21

Emacsy Features

  • lisp interpreter
  • keymaps
  • minibuffer
  • history
  • completion
  • recordable

macros

  • comprehensive
  • nline help
  • major and minor

modes

slide-22
SLIDE 22

Emacsy Anti-goals

slide-23
SLIDE 23

Emacsy Anti-goals

  • Emacsy is not an Emacs replacement
slide-24
SLIDE 24

Emacsy Anti-goals

  • Emacsy is not an Emacs replacement
  • not a text editor
slide-25
SLIDE 25

Emacsy Anti-goals

  • Emacsy is not an Emacs replacement
  • not a text editor
  • not elisp compatible
slide-26
SLIDE 26

Different Integration Strategy

slide-27
SLIDE 27

What is Emacs?

slide-28
SLIDE 28

What is Emacs?

slide-29
SLIDE 29

What is Emacs?

  • It’s a text editor,
slide-30
SLIDE 30

What is Emacs?

  • It’s a text editor,
  • a mail reader,
slide-31
SLIDE 31

What is Emacs?

  • It’s a text editor,
  • a mail reader,
  • a shell,
slide-32
SLIDE 32

What is Emacs?

  • It’s a text editor,
  • a mail reader,
  • a shell,
  • a lisp interpreter,
slide-33
SLIDE 33

What is Emacs?

  • It’s a text editor,
  • a mail reader,
  • a shell,
  • a lisp interpreter,
  • a web browser.
slide-34
SLIDE 34

What is Emacs?

Beautiful Architecture. Ch. 11. “GNU Emacs: Creeping Featurism is a Strength” by Jim Blandy

slide-35
SLIDE 35

Model View Controller

slide-36
SLIDE 36

Model View Controller

  • The buffer is a model.
slide-37
SLIDE 37

Model View Controller

  • The buffer is a model.
  • The window is a view.
slide-38
SLIDE 38

Model View Controller

  • The buffer is a model.
  • The window is a view.
  • The controller is all the elisp code.
slide-39
SLIDE 39

Praising the Model

  • A buffer is plaintext.
  • Emacs is not a word processor; no bold,

italics, nor attributes are embedded into the model.

  • It’s simple.
  • It’s all just text.
slide-40
SLIDE 40

Other Simple Models

  • It’s all just blocks.
slide-41
SLIDE 41

Simple Model

  • Users can make very complicated things
  • ut of simple building blocks.
slide-42
SLIDE 42

Emacs is Extensible

  • It’s a text editor,
  • a mail reader,
  • a shell,
  • a lisp interpreter,
  • a web browser.
slide-43
SLIDE 43

The Fix is In

  • The view is fixed.
  • The model is fixed.
  • Only the controller is extensible with elisp.
slide-44
SLIDE 44

Emacsy

slide-45
SLIDE 45

Emacsy

  • The view is not fixed.
slide-46
SLIDE 46

Emacsy

  • The view is not fixed.
  • The model is not fixed.
slide-47
SLIDE 47

Emacsy

  • The view is not fixed.
  • The model is not fixed.
  • The controller is extensible with GNU

Guile Scheme.

slide-48
SLIDE 48

Vision

Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU

  • Emacs. O'Reilly Media.
slide-49
SLIDE 49

Vision

Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU

  • Emacs. O'Reilly Media.
slide-50
SLIDE 50

Vision

Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU

  • Emacs. O'Reilly Media.

Emacsy

slide-51
SLIDE 51

Vision

Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU

  • Emacs. O'Reilly Media.

Emacsy

slide-52
SLIDE 52

Vision

Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU

  • Emacs. O'Reilly Media.

Emacsy

slide-53
SLIDE 53

Vision

Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU

  • Emacs. O'Reilly Media.

Emacsy

slide-54
SLIDE 54

Vision

Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU

  • Emacs. O'Reilly Media.

Emacsy

slide-55
SLIDE 55

Emacs(y) Architecture

C Core Elisp Interpreter Emacs Core Emacs Extensions

slide-56
SLIDE 56

Emacs(y) Architecture

C Core Elisp Interpreter Emacs Core Emacs Extensions C/C++ App Lisp Interpreter Emacsy Core Emacsy Extensions

slide-57
SLIDE 57

Emacs(y) Architecture

C Core Elisp Interpreter Emacs Core Emacs Extensions C/C++ App Lisp Interpreter Emacsy Core Emacsy Extensions

}

Emacsy

slide-58
SLIDE 58

Emacs(y) Architecture

C Core Elisp Interpreter Emacs Core Emacs Extensions C/C++ App Lisp Interpreter Emacsy Core Emacsy Extensions

}

Emacsy

} Your App

slide-59
SLIDE 59

Demo!

slide-60
SLIDE 60

Levels of Integration

  • 1. No buffer support
  • 2. Multiple buffers
  • 3. Multiple windows
slide-61
SLIDE 61

What Guile Provides that Elisp Doesn’t

slide-62
SLIDE 62

What Guile Provides that Elisp Doesn’t

  • Continuations
slide-63
SLIDE 63

What Guile Provides that Elisp Doesn’t

  • Continuations
  • Modules
slide-64
SLIDE 64

What Guile Provides that Elisp Doesn’t

  • Continuations
  • Modules
  • Foreign Function Interface (FFI)
slide-65
SLIDE 65

What Guile Provides that Elisp Doesn’t

  • Continuations
  • Modules
  • Foreign Function Interface (FFI)
  • Threads
slide-66
SLIDE 66

Taking Advantage of Guile

  • Continuations can be used to build

“system-calls” but in userland

  • Blocking in Scheme without blocking in C
  • Non-blocking events
slide-67
SLIDE 67

Modules

  • In my Emacs environment, I have 6,029

commands available at all times.

  • Many aren’t useful in my current context.
  • Can we be more careful in what commands

we expose?

slide-68
SLIDE 68

Context Sensitive Commands

  • Idea: Export commands to a module
  • Each buffer could have a “MODULE_PATH”

that works like PATH in bash

  • M-x only looks up commands in the

MODULE_PATH

  • C-u M-x looks up all commands
slide-69
SLIDE 69

Comprehensive Help

  • Emacs has a great help system!
  • What will Emacsy do?
  • Options:
  • 1. Do it all in minibuffer.
  • 2. Use a text buffer like Emacs.
  • 3. Use a local web server.
slide-70
SLIDE 70

Beyond Emacs

  • Job control
  • Continuations → Coroutines →

Cooperative Multitasking

  • Major modes
  • Are major modes worth it?
slide-71
SLIDE 71

Available Now

  • Alpha quality
  • Recommend release v 0.1.1
  • Available under the GNU GPLv3

https://github.com/shanecelis/emacsy

slide-72
SLIDE 72

Thanks for watching!

contact: shane.celis@gmail.com twitter: @shanecelis repo: https://github.com/shanecelis/emacsy

slide-73
SLIDE 73

Acknowledgments

  • GNU Emacs project (Thank you, RMS!)
  • GNU Guile project
  • The guys at #guile@irc.freenode.net
  • Nykia Hunter for the elephant and narwhal

graphics

slide-74
SLIDE 74

Questions?