GNU Emacs: A World of Possibilities
Anand Tamariya
Format: 21-min talk ; Q&A: BigBlueButton conference room
Status: Q&A to be extracted from the room recordings
Duration: 20:31 minutes00:00.780 Draw and scribble in GNU Emacs 03:46.400 SVG Symbols library 05:20.140 GNU Emacs: A multimedia editor 08:03.367 Fill PDF form using GNU Emacs 09:34.900 Desktop and window management in GNU Emacs 11:10.440 Screen mirroring in GNU Emacs 11:53.033 Swipe for Text Input in GNU Emacs 12:25.533 Formula Editor in GNU Emacs 12:59.433 Transliteration in Emacs 13:09.433 Social Media client - Tumblr, Reddit 13:40.000 Comics Builder 13:49.567 Matching game 13:59.567 Interactive XPath Builder in GNU Emacs 14:10.767 Interactive JSON Builder in GNU Emacs 14:35.233 GNU Emacs as a lightweight IDE (CEDET Semantic): Java - Generate getter/setter 15:26.133 Generate C header 16:11.640 C Rename symbols 17:07.640 SQL (offline)
Description
- Draw and scribble in GNU Emacs 3:46
- SVG Symbols library 1:34
- GNU Emacs: A multimedia editor 2:45
- Fill PDF form using GNU Emacs 1:32
- Desktop and window management in GNU Emacs 1:36
- Screen mirroring in GNU Emacs 0:43
- Swipe for Text Input in GNU Emacs 0:33
- Formula Editor in GNU Emacs 0:35
- Transliteration in Emacs
- Social Media client - Tumblr, reddit (slide)
- Comics Builder (slide)
- Matching game (slide)
GNU Emacs as a lightweight IDE (CEDET Semantic)
- Interactive XPath Builder in GNU Emacs 0:12
- Interactive JSON Builder in GNU Emacs (slide)
- Java - Generate getter/setter 0:52
- Generate C header 0:45
- C Rename symbols 0:56
- SQL (offline) 3:15
19:04
GNU Emacs for Electronics https://www.youtube.com/playlist?list=PLW9poAEUvGDC7ZWO69qrwRMqdW2xYLsGt
GNU Emacs for Note taking https://www.youtube.com/playlist?list=PLW9poAEUvGDDxCZX-3xIQ3Wb1HOVcg7N_
GNU Emacs as a lightweight IDE https://www.youtube.com/watch?v=d14tLD5XiCU&list=PLW9poAEUvGDAMYvvznljaNtvooaJZxsFQ&pp=gAQBiAQB
Discussion
Questions and answers
- Q: A lot of what you showd was the type of stuff Emacs didn't do
very well. This stuff looks like it could be useful for using Emacs
with a touchscreen and in a tablet. Have you used it for purposes
like these
- A:
- Q: Is there a mode for using ffmpeg through Emacs or did you make it
yourself? Really cool stuff!
- A:
- Q: These demos are always so impressive. Do you plan to upstream
any of these projects into Emacs, or to publish them as e.g. ELPA
packages?
- A:
- Q: How did you make that electronic circuit diagram? Is there a mode
with the symbols already available? (Thank you for your very clear
answer!)
- A:
- Q:I've seen your blog posts with some of these features, but can
you link to the repo(s) where you are doing the development for
this/these package(s)?
- A: https://lifeofpenguin.blogspot.com (blog), https://gitlab.com/atamariya/emacs (dev branch)
- Q:The pdf form-filling is especially interesting - I would love to
do my taxes in emacs!
- A:
- Q: the author is not using artist-mode?
- Not the speaker:
- I think he said canvas-mode - After some searching, it appears to not be a separate package, but some code in the presenter's repo (https://gitlab.com/atamariya/emacs/-/blob/dev/lisp/svg.el?ref_type=heads) - Author used xwidgets ig, probably emacs has to be compiled with support for xwdigets
Notes
- Thank you for showing so many new possibilities with Emacs!
- which package is required for pdf filling? so that works with (usually adobe authored) "pdf forms"?
A: It's an extension (not a separate package) to doc-view mode. It will work with Adobe authored forms as long as the form doesn't use javascript. Details: https://lifeofpenguin.blogspot.com/2022/10/take-charge-of-pdf-in-gnu-emacs.html
This author's work is always very impressive when he shares it on his blog and on Reddit. But unfortunately he seems to develop it in his own fork of emacs.git so it's impractical for other users to try.
Transcript
canvas-mode
.
We will define the width and the height.
The default is polyline,
which means you can scribble anything that you want.
Very handy for taking quick notes.
Now we will look at
drawing a triangle using some lines.
Okay. Now let's draw a circle.
You can use the mouse to adjust
the radius of the circle.
There is some problem with ellipse,
we will look at it at the end of the video.
Now let's put up some text,
a typical "Hello World".
Size, let's do a 20 font size,
and we will use the default font family.
Next, we will look at undoing what we have drawn.
Just press u for deleting the last drawn object.
And you can continue pressing
u for consecutive deletions.
You can also make a selection of the objects
on the screen using your mouse and then press u.
This will delete all the objects in one go.
Now we are looking at stroke color.
We will use a brown stroke color
for drawing our objects.
Next, let's look at stroke width.
We will use a width of 5.
Next, let's fill up the objects with a fill color.
Now we will look at zoom.
Use the mouse to select a region and zoom.
You can also use +, - for zooming in and out.
Press 0 for resetting the zoom.
Next, let's save the file,
and q or Enter for exiting the canvas-mode.
Now we will open the file in Emacs itself.
You can see the file,
you can do Control-c Control-c (C-c C-c
).
Finally, we look at ellipse.
That's all for this video. Thanks!
C-c r
to refresh the viewer mode
with the exact time frame.
Now press SPC to play or pause the video.
This looks like an interesting point in the video,
let's track it and split it. Press Enter to do that.
We will extract some 10 seconds of this video.
Let's use this.
Now go here and delete all these lines.
Let's review our edited clip.
Looks good! Now press e to export the video.
Provide an output file name.
This will use FFmpeg to convert, and you can
output to any file format supported by FFmpeg.
Okay. Let's open up shell and view this
video file in an external video player.
That's all for this video. Thanks.
doc-view-save-form
.
It will ask for a file name.
Let's call it filled1.pdf
. If the file exists,
it will ask you if you want to overwrite.
Now let's verify this new file.
In Firefox, we'll copy this file name, call it filled1.
Let's verify the values.
You have city, France and Driving License selected.
That's all for this video. Thanks.
task-view
.
Top row shows all the desktops,
and rest of the images are the active windows
in that particular desktop.
You can tap to select
and double tap to activate a particular window.
You can use m to move selected windows
to any of the desktops at the top.
Let's check the third desktop.
Let's bring it back to the second desktop.
The best part,
you can select multiple windows
and form a group by pressing g.
Then you can select any of the windows
in this group to activate the complete group.
That's all for this video. Thanks.
wfd
. Select an interface.
Now it will scan for all the available devices
for screen mirroring.
I'll select my TV, which is an LG WebOS TV.
If you don't decline, it will start streaming.
Let's change some buffer to check the visuals.
To terminate the session, just click on quit.
That's all for this video. Thanks.
xpath-builder
on an XML file]
[Filtering title
, para
, and author
from the XML]
father
, father.name
, children
children[1]
from a JSON using JSON Builder]
srecode-getset-dialog
.
We will get an option to select particular fields,
you can expand and collapse.
You can select all or deselect all,
or you can choose any particular getter.
So let's do protected version of this. Here you go.
If you want to generate for other fields,
you can re-run it.
You can check the one that you have already
generated is not there.
Now select all, and you can see rest of the
getters and setters have been generated.
That's all for this video. Thanks.
srecode-gen-header
]
semantic-symref-symbol
.
Now we have the references.
Let's use the menu to open all these occurrences.
To rename it, we have to use
"Rename Symbol in Open hits."
Let's rename it to underscore 1 (_1
).
We will verify it by compiling the project.
Let's open the *Messages*
buffer to see the results
more clearly. No errors.
That's all for this video. Thanks.
SELECT
as the keyword or the SQL,
so we will select the SQL.
Here we have all the tables existing in this schema.
We can also use an alias for completions.
Now let's look at a more complex example.
We will try to do a join on two tables.
Let's add a WHERE
clause.
Next, let's do insert.
You can just click on Tab to go to the next field.
Let's fill in the columns.
And do a Tab to go to the values
and add the corresponding values.
Finally, an update.
Now we will try to delete this
with a WHERE col11 = 4
.
Lastly, let's try dropping the table.
That's all for this video. Thanks.
Slide with the text "Let's Make Computing Personal."
Captioner: bhavin192
Questions or comments? Please e-mail emacsconf-org-private@gnu.org
CATEGORY: