emacsy
play

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


  1. Emacsy Shane Celis GNU Hackers Meeting Paris, France August 24th, 2013

  2. Agenda • Intended Audience • What is Emacsy? • What is Emacs? • Demos • What’s next? • Where to get it

  3. Audience

  4. Audience • Interactive application developers

  5. Audience • Interactive application developers • Emacs users

  6. Audience • Interactive application developers • Emacs users • Why base it off Emacs?

  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

  8. What is Emacsy?

  9. What is Emacsy? • It’s an embeddable Emacs-like library.

  10. What is Emacsy? • It’s an embeddable Emacs-like library. • How Emacs-like exactly?

  11. A Joke That Explains Emacs is a great operating system–lacking only a decent editor. Extensions Emacs Mail Reader Emacs

  12. A Joke That Explains Emacs is a great operating system–lacking only a decent editor. Extensions Emacs Mail Reader Emacs

  13. A Joke That Explains Emacs is a great operating system–lacking only a decent editor. Extensions Emacs Emacs Extensions Mail Reader Mail Reader Text Editor Emacs "Emacs OS"

  14. Emacsy Features

  15. Emacsy Features • lisp interpreter

  16. Emacsy Features • lisp interpreter • keymaps

  17. Emacsy Features • lisp interpreter • keymaps • minibuffer • history • completion

  18. Emacsy Features • lisp interpreter • keymaps • minibuffer • history • completion

  19. Emacsy Features • lisp interpreter • recordable • keymaps macros • minibuffer • history • completion

  20. Emacsy Features • lisp interpreter • recordable • keymaps macros • minibuffer • comprehensive • history online help • completion

  21. Emacsy Features • lisp interpreter • recordable • keymaps macros • minibuffer • comprehensive • history online help • major and minor • completion modes

  22. Emacsy Anti-goals

  23. Emacsy Anti-goals • Emacsy is not an Emacs replacement

  24. Emacsy Anti-goals • Emacsy is not an Emacs replacement • not a text editor

  25. Emacsy Anti-goals • Emacsy is not an Emacs replacement • not a text editor • not elisp compatible

  26. Different Integration Strategy

  27. What is Emacs?

  28. What is Emacs?

  29. What is Emacs? • It’s a text editor,

  30. What is Emacs? • It’s a text editor, • a mail reader,

  31. What is Emacs? • It’s a text editor, • a mail reader, • a shell,

  32. What is Emacs? • It’s a text editor, • a mail reader, • a shell, • a lisp interpreter,

  33. What is Emacs? • It’s a text editor, • a mail reader, • a shell, • a lisp interpreter, • a web browser.

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

  35. Model View Controller

  36. Model View Controller • The buffer is a model.

  37. Model View Controller • The buffer is a model. • The window is a view.

  38. Model View Controller • The buffer is a model. • The window is a view. • The controller is all the elisp code.

  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.

  40. Other Simple Models • It’s all just blocks.

  41. Simple Model • Users can make very complicated things out of simple building blocks.

  42. Emacs is Extensible • It’s a text editor, • a mail reader, • a shell, • a lisp interpreter, • a web browser.

  43. The Fix is In • The view is fixed. • The model is fixed. • Only the controller is extensible with elisp.

  44. Emacsy

  45. Emacsy • The view is not fixed.

  46. Emacsy • The view is not fixed. • The model is not fixed.

  47. Emacsy • The view is not fixed. • The model is not fixed. • The controller is extensible with GNU Guile Scheme.

  48. Vision Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU Emacs. O'Reilly Media.

  49. Vision Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU Emacs. O'Reilly Media.

  50. Vision Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU Emacs. O'Reilly Media. Emacsy

  51. Vision Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU Emacs. O'Reilly Media. Emacsy

  52. Vision Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU Emacs. O'Reilly Media. Emacsy

  53. Vision Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU Emacs. O'Reilly Media. Emacsy

  54. Vision Cameron, D., Rosenblatt, B., & Raymond, E. S. (1996). Learning GNU Emacs. O'Reilly Media. Emacsy

  55. Emacs(y) Architecture Emacs Extensions Emacs Core Elisp Interpreter C Core

  56. Emacs(y) Architecture Emacs Emacsy Extensions Extensions Emacs Core Emacsy Core Elisp Lisp Interpreter Interpreter C Core C/C++ App

  57. Emacs(y) Architecture Emacs Emacsy Extensions Extensions } Emacs Core Emacsy Core Emacsy Elisp Lisp Interpreter Interpreter C Core C/C++ App

  58. Emacs(y) Architecture Emacs Emacsy Extensions Extensions } Emacs Core Emacsy Core Emacsy Elisp Lisp Interpreter Interpreter } Your App C Core C/C++ App

  59. Demo!

  60. Levels of Integration 1. No buffer support 2. Multiple buffers 3. Multiple windows

  61. What Guile Provides that Elisp Doesn’t

  62. What Guile Provides that Elisp Doesn’t • Continuations

  63. What Guile Provides that Elisp Doesn’t • Continuations • Modules

  64. What Guile Provides that Elisp Doesn’t • Continuations • Modules • Foreign Function Interface (FFI)

  65. What Guile Provides that Elisp Doesn’t • Continuations • Modules • Foreign Function Interface (FFI) • Threads

  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

  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?

  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

  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.

  70. Beyond Emacs • Job control • Continuations → Coroutines → Cooperative Multitasking • Major modes • Are major modes worth it?

  71. Available Now • Alpha quality • Recommend release v 0.1.1 • Available under the GNU GPLv3 https://github.com/shanecelis/emacsy

  72. Thanks for watching! contact: shane.celis@gmail.com twitter: @shanecelis repo: https://github.com/shanecelis/emacsy

  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

  74. Questions?

Recommend


More recommend