Permalink
Browse files

Add my LCA2016 presentation.

- run edlib as "./edlib -g"
- open lca2016/edlib.md (C-x C-f)
- go to the buffer list (C-x b)
- nagivate to the edlib.md entry
- type 'p' to view in presentation mode

Alternate to last step:

- type C-x 5 2 to get new window (will be blank)
- type C-x b in that window to get buffer list
- move it to other monitor
- type M-f to go full screen
- in original window us C-v or page-down to page down both displays
- use C-l anywhere to re-centre the other display

Signed-off-by: NeilBrown <neil@brown.name>
  • Loading branch information...
neilbrown committed Feb 4, 2016
1 parent d4e67fc commit 956605b0969a43c0ca8461cb6f9213b13039896b
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
@@ -0,0 +1,213 @@
:H1:center,20,fg:blue,space-above:15,family:sans
:H2:center,15,fg:darkblue
:background:image-stretch:back.jpg,page-local
:scale:x:533,y:300
:P:left:30,12,family:sans
:bullet:fg:red,13
:L1:,left:30,12,bullet:•,tab:30,family:sans
:L1c:,left:30,12,tab:30,family:sans
:L2:,left:50,10,bullet:*,tab:30
:L2c:,left:50,10,tab:30
# Edlib
## because one more editor is never enough
:P:center,14
Neil Brown
LCA 2016 - Geelong
# Edlib
## because one more editor is never enough
!400:200:standards.png
:P:center,16,fg:purple
xkcd.com/927
:background:overlay:B-nun.JPG
# I Love EMACS
- have been using it for nearly 30 years
- *vim* is quite good too!
- good for code
- good for email
- lots of packages and add-ons.
- not quite perfect
- wikipedia lists over 100 others
:background:overlay:B-bather2.JPG
# Consider the MVC pattern
## Model-View-Controller
!350:190:mvc1.png
:background:overlay:B-blue.JPG
# Consider the MVC pattern
## Model-View-Controller
!380:160:mvc2.png
Model is text buffer
- characters with attributes.
- indefinite undo.
:background:overlay:B-boy.JPG
# **Buffer List** buffer
!400:160:bufferlist.png
- That **GNU Emacs** buffer doesn't exist any more
- Model requires indirection for non-text sources
- "style" formatting must be stored in the buffer
:background:overlay:B-fisher.JPG
# `hexl-mode`
!400:160:hexl.png
- binary file must be converted to text (external program)
- not effective for `/dev/sda`
:background:overlay:B-flag.JPG
# Back to Model-View-Controller
!480:140:mvc3.png
View is a window that interprets attributes
- can hide, highlight, insert chars etc.
- text can be "intangible" and "read-only"
- attribute with hooks to call on change
- no hooks to call on display
:background:overlay:B-glamor.JPG
# An attempt at a spreadsheet
!400:200:xlnt-tex.png
Uses a LaTeX table with expressions in comments
:background:overlay:B-sailor.JPG
# An attempt at a spreadsheet
!450:150:xlnt-ss.png
- code: hides and highlights and calculates.
- felt like programming in assembly-language.
- rendering isn't programmable.
:background:overlay:B-bather.JPG
# Model-View-Controller again
!480:180:mvc4.png
- Controller is elisp. Awesome.... or not.
- steep learning curve for single use-case
:background:overlay:B-camera.JPG
# `edlib` - scratching an itch
Everything is plugable
- multiple "document" backends
- multiple "language" bindings
- multiple multi-stage "renderers"
- multiple "display" managers
- configurable key/event bindings (of course)
- core provides essential abstractions
- loadable libraries for everything else
:background:overlay:B-nurse.JPG
# edlib core - panes
!400:170:panes.png
- a pane represents an area of interaction
- may have children with depth
- sends and receives all messages
:background:overlay:B-girl.JPG
# edlib core - documents and marks
- a document is a set of interfaces provided by a pane
- document can be accessed as bytes, characters, lines, ...
- multiple panes can access the one document
- a mark is a location in a document - with state
- marks can be grouped
- easy to find "next" or "previous" in given group.
:background:overlay:B-minister.JPG
# edlib core - commands
- commands pass control between panes
- can pass control between languages
- args are:
- two panes - source and destination
- two integers
- two strings
- two marks
- two co-ordinates (x,y or w,h)
- another command
- return an integer ... or call-back the command
:background:overlay:B-police.JPG
# edlib core - attributes
- attributes are named strings
- elements (characters) in a document have attributes
- panes, marks, and documents have attributes
- can be used to pass extra information between
commands
:background:overlay:B-clown.JPG
# edlib plugins
- documents: text buffer and directory
- displays: ncurses and pygtk
- render: lines, hex, format, complete, presentation
- key bindings: emacs-like, per-pane
- tile manager
- status line/scroll bar
- popups: search and find-file
:background:overlay:B-scots.JPG
# future work
Currently have a working prototype. Want more...
- re-evaluate all interfaces
- unit tests!
- lots more edit functionality
- understand copy/paste for non-text documents
- Bindings for Lua, and Rust? and ...
- vi-like bindings
- hexmode overlays for known structures
e.g. filesystem superblocks
- Email client (based on notmuch)
- spreadsheet?
- wiggle plugin ... or plug in to wiggle
:background:overlay:B-naked.JPG
# Edlib - a naked bollard
:P:center,samily:sans,15
Ready for decorating
github.com/neilbrown/edlib
:P:center,family:sans,20
Questions?
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Diff not rendered.
View
Diff not rendered.
View
Diff not rendered.

0 comments on commit 956605b

Please sign in to comment.