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: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
[00:00:00.780] Draw and scribble in GNU Emacs
Hello. In this video, we will look at
drawing and scribbling in Emacs using SVG.
Let's start with 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!
[00:03:46.400] SVG Symbols library
Hello. In this video, we will draw schematics using symbols from SVG library in Emacs. Press capital L to activate the symbol library that you can see on the right hand side, and place the symbol on the canvas. Let's add another register to this diagram. You can press capital R to rotate the symbol. Let's place it on the canvas. Now we will add a voltage source to the circuit. To connect the symbols, we will have to use some connecting wires. For that, press capital W to activate the connection mode. Click anywhere on the canvas to draw intermediate points, and press Esc to exit that particular connection. Let's connect other symbols too. That's all for this video. Thanks.
[00:05:20.140] GNU Emacs: A multimedia editor
Hello. In this video, we will look at
some basic multimedia editing using Emacs.
Let's start a media-edit session.
Let's open a video file.
The left-hand side is your viewer area,
and the right-hand side is your track area.
In the track area, you can use normal Emacs
text editing movements.
Now press 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.
[00:08:03.367] Fill PDF form using GNU Emacs
Hello. In this video, we will look at
editing a PDF form using GNU Emacs.
To start, we have to enable the annotation.
Then we can use Tab to move forward and Shift+Tab
to move backwards through the fields.
To edit a field, we press e.
So let's edit a text box. We'll call it 'city'.
Next, we will edit a drop-down.
Again, press e, and you get a select.
Use the Minibuffer to select one of the values.
Let's select 'France'.
Now let's edit a radio box.
A checkbox or a radio box can be toggled using t.
You can disable…
Now let's save the file, 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.
[00:09:34.900] Desktop and window management in GNU Emacs
Hello. In this video, we will look at
desktop and window management in GNU Emacs.
We'll start with 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.
[00:11:10.440] Screen mirroring in GNU Emacs
Hello. In this video, we will look at
screen mirroring using GNU Emacs.
Run 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.
[00:11:53.033] Swipe for Text Input in GNU Emacs
[Using Sweep to swipe and type "as you like it."]
[00:12:25.533] Formula Editor in GNU Emacs
[Formula Editor] [Typing fractions in the formula] [Adding brackets and an exponent]
[00:12:59.433] Transliteration in Emacs
[Hindi (Devanagari script) Phonetic typing] [Phonetic typing Gujarati, Bangla, Kannada, and Tamil]
[00:13:09.433] Social Media client - Tumblr, Reddit
[Browsing Reddit in Emacs] [Browsing Tumblr in Emacs] [Browsing X (Twitter) in Emacs]
[00:13:40.000] Comics Builder
[Generating comic from a text script]
[00:13:49.567] Matching game
[Matching color names with color boxes]
[00:13:59.567] Interactive XPath Builder in GNU Emacs
[Running xpath-builder
on an XML file]
[Filtering title
, para
, and author
from the XML]
[00:14:10.767] Interactive JSON Builder in GNU Emacs
[Filtering father
, father.name
, children
children[1]
from a JSON using JSON Builder]
[00:14:35.233] GNU Emacs as a lightweight IDE (CEDET Semantic): Java - Generate getter/setter
Hello. In this video, we will look at
generating getters and setters in Java using Emacs.
We will run 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.
[00:15:26.133] Generate C header
[Generating C headers using srecode-gen-header
]
[00:16:11.640] C Rename symbols
Hello. In this video, we will look at
renaming method across multiple files in a project.
Let's start with 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.
[00:17:07.640] SQL (offline)
Hello. In this video, we will look at
SQL editing with Semantic.
We will define a schema in this SQL document.
Let's create a table.
We get already existing tables
in the current document.
It also supports auto-completion of some keywords.
Now we can do some queries on the tables.
We have 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
Q&A transcript (unedited)
for the great talk. So here is the live Q&A. Hi. Hello. I see questions being posted on the pad. Would you like me to read them out or would you prefer to read them yourself? If there are audio issues, was the type of stuff Emacs didn't do very well. This stuff looks like it could be useful for using Emacs with a touch screen and a tablet. Have you used it for purposes like this? No right now it's more proof of concept stage so I don't use it more than you know just making some demo software. The next question is, is there a mode for using FFmpeg through Emacs or did you make it yourself? Okay so this is something that I built. So the base of it is XWidget in Emacs, which is already there. But then I had to add a few control code for controlling VLC. So ffmpeg is like a shell command that finally stitches those bits of video clips. But what actually plays is VLC, and it's not FFmpeg. Hope that's clear. The next question is these demos are always so impressive. Do you plan to upstream any of these projects into Emacs? Right now, okay, let me read the complete questions. These demos are always so impressive. Do you plan to upstream any of these projects into Emacs or to publish them as, for example, helper packages? So right now, as it stands, I personally don't intend to do that because I don't have that time but I have signed my signed assignment copyright assignment so anybody has time and motivation to do it they can pick up the code and help me with that. The next is, how did you make that electronic circuit diagram? Is there a mode with the symbols already available. Okay so electronic circuit diagram is you know the canvas mode but and what you see is the is an extension of that canvas mode which uses a symbol library. And so The only difference is you press capital L to open up that symbol library. In this case, this symbol library happens to be just a library of electronic symbols. It can be any category of symbols and then you and use it to draw on your, in the canvas major mode. Next question is, I have seen your blog post with some of these features But can you link to the repo where you are doing the development for these packages? Sure, I can do that Most of these are available on my blogs. Typically the Reddit post always has a link to my blog. But I'll post it in this 1 as well. minutes of live Q&A, but if folks have more questions, they're welcome to either continue asking on the pad or come join us here on Big Blue Button and continue chatting once the stream moves on to the next talk. Thank you. And so right now, all of my development goes into a single development branch in this repository. But depending on the feature that you're looking at, you can look at that particular post and that post will have a link to the specific files that include the changes. Okay, there's a feedback. Thank you for showing so many new possibilities with Emacs. I'm glad you like those possibilities. And hopefully, you know, with Emacs, the possibilities are really endless. So I really encourage more people to explore it and, you know, try things that people have so far only been using other applications for. The next question is coming up. Okay, the PDF form filling is especially interesting. I would love to do my taxes in Emacs. Yes, In most cases you should be able to do it unless there are a lot of JavaScript involved with the PDF. For a simple form, you should be able to do it. live stream. If folks have any other questions, please do continue posting on the pad or come and join BigBlueButton with an ad. And thanks again, Adam, for a great talk and for the discussions and questions and answers.
Questions or comments? Please e-mail emacsconf-org-private@gnu.org
CATEGORY: