Documentation about the Emacs Easy Draw Graphics Editor
Emacs Easy Draw is a drawing tool that runs inside Emacs. It is developed by AKIYAMA Kouhei (misohena) plus some more developers. Its main characteristics:
- GUI tool that runs inside Emacs with both mouse and keyboard support
- Generates standards compliant scalable vector graphics (SVG) content
- Allows to generates both SVG files or embedded SVG content
- Various usage options:
- Run from within Emacs org-mode
- Run from any Emacs mode
- Invoke from specific file type/extension
- Embed Easy Draw editor in any Emacs buffer
The purpose of below text is to document Easy Draw specificities that I learned when testing it.
References
Simple Usage Example
The following simple graphics example has been drawn quickly using Easy Draw. It shows a few text boxes and angular brackets that have been drawn as path elements
Easy Draw Specificities
Supported SVG Elements
- ED supports just five SVG elements:
- Rectangle
- Ellipse
- Path
- Text
- Image
- Hence other SVG elements need to be converted e.g. lines, polygons and polylines need to become straight paths
Difference between the Path Tool and the Free Hand Tool
Both tools create a path, but
- Path Tool: you click once per anchor point
- Free Hand Tool: you drag the left mouse
- If the grid is off, you will get many (?) "smooth" anchor points
- If the grid is on, you will get "corner" anchor points at grid
points locations
Working with Easy Draw Paths
Anchor Points
- The two ends of a path are not equal
- You can add an anchor point to a path only at one specific end, not at the other end!
Handle Points
- To go from a "smooth" handle point to a "sharp" one, select one of the two handle points, right click and delete. Then only one handle point remains. This results in a corner, with a straight line on one side. To get back a second one, select the anchor point and right click "smooth"
- There seems to be no way, to get a smooth point with two balanced handles, i.e. where the two handle points are kept equally far away from the anchor point. You can use the grid to force the same distance
- When you select a handle point, before moving it, it can move independently of its "counter part". This results in a corner, with curves on either side
Issues
width
and height
attributes in the svg
element must be present
- Otherwise cursor gets stuck in link (could release with the mouse)
- Elements can only by accessed by ED, when in a
<g id="edraw-body">
element. If outside, they are considered background
- When using Emacs v27.2 the function
dom-remove-attributes
in edraw-org.el
needs to be replaced by edraw-dom-remove-attr
, because dom-remove-attributes
was only introduced in Emacs v28.1
- Depending on the colour theme, Easy Draw path handles might be difficult to see
Key bindings
Most of the key bindings are displayed in menus and help echoes. The key bindings that are not displayed are as follows:
Key or Mouse Action |
Action |
left, up, right, down |
Move selected objects (S-<dir>:10px, C-u <dir>:Numerical input) |
M-left, M-up, M-right, M-down |
Duplicate selected objects and move (M-S-<dir>:10px, C-u M-<dir>:Numerical input) |
Right-click on shapes, anchors, backg., shp. picker or edraw links |
Show context menu |
(Select Tool) C-down-mouse-1 |
Add/Remove clicked shape to selection list |
(Select Tool) M-drag-mouse-1 |
Duplicate dragged shape |
(Path Tool) C-u down-mouse-1 |
Ignore existing points (Avoid connecting or moving existing points) |
S-drag-mouse-1 |
45 degree unit movement or square specification |
Middle-drag |
Scroll |
C-wheel-up, C-wheel-down |
Zoom |
(In Property Editor) Middle-click |
Close window |
(In Shape Picker) Middle-click |
Close window |
Multi Line Text
When you are in the property dialog of a text element, you can create another line by typing C-q C-j
.