![]() |
KnowBrainer Speech Recognition | ![]() |
Topic Title: Speech friendly command completion for emacs? Topic Summary: eg user says "unread next", suggests gnus-summary-next-unread-article Created On: 12/23/2021 02:26 PM Status: Post and Reply |
|
![]() |
![]() |
- Ag | - 12/23/2021 02:26 PM |
![]() |
|
BRIEF: can anyone point me to "speech friendly command completion" packages in emacs. or, if not really speech friendly at the moment, command completion packages that can do things like reorder the words that the user has typed. Completion packages that I can use in combination with code that I have already written.
---+ DETAIL
I use EMACS. emacs has a full elisp command language. Therefore instead of emitting control key shortcuts like ^x^s, I find it more reliable to emit
Where save-buffer is the emacs command that is usually bound to the keys ^X^S
This is more reliable in the sense that you get to control exactly what command gets invoked. since emacs key-bindings often change, in buffer and mode specific manners, this can avoid accidents.
---
when you are typing an emacs command via {Esc}{x} (which itself maps to execute-extended-command)
you get the benefit of command completion
e.g. you type {Esc}{x}save
but you cannot remember if it's just save or save file or save buffer
so you type {Esc}{x}save[tab]
And emacs shows you the list of matching commands.
Yes, this is like Microsoft IntelliSense, which I believe was actually written in imitation or emulation of early versions of Emacs completion. There are many many many different emacs completion packages, many of which are much much much better than IntelliSense.
these packages provide completion for many different types of data, including emacs commands, filenames, font names (Lucid...). it's easy to write your own for a static list, e.g. I have done that repeatedly for signal names in RTL.
these packages provide many different styles of command completion. Strict prefix completion was I believe the first, but it can also interpolate words
{Esc}{x}gnus--next--[tab] ==> A list of several possibilities including gnus-summary-next-unread-article, etc.
I am not aware of anything that can interpolate words out of order, but I hope that something like this already exists.
---
What I am looking for is(are) emacs completion packages that are more speech friendly.
In particular for emacs interactive commands, but I'm sure that I will also wanted for other datatypes.
I think that "speech friendly" starts off by eliminating blanks and/or converting to hyphens, upper case/lowercase, but also allows words to be searched for out of order. Speech friendly completion probably is more word oriented than a single character typing oriented completion packages that are most common. speech friendly completion will also undoubtedly involve making it easier to select the chosen item by voice, rather than by choosing with mouse.
---
I have written an emacs interactive function that takes a user utterance like "go to line", and searches for emacs commands of similar but not exactly the same name, like "goto-line" so that you don't need to have to say something like "go nospace to hyphen line" to specify an emacs command name.
It also searches a 'path' of namespace prefixes and suffixes, eg to get or "my-special-goto-line". my current examples are, in a Gnus email Summary buffer, "next unread" --> gnus-summary-next-unread, and so on.
All emacs functionality is associated with function names that often are quite meaningful. But they nearly always have these namespace prefixes. My search tool avoids the need for me have to pronounce those prefixes.
This greatly reduces the number of emacs specific speech commands that I need to write. Often I can look them up in online documentation, and directly invoke them. I may create aliases, like "next" -> gnus-summary-next-unread, but that's just for shortening. It is very refreshing to be able to invoke commands by name straight out of the manual.
My code is essentially a step towards a speech oriented command completion mode for emacs. I will share eventually, when I'm not embarrassed by it.
But I also hope that people can tell me about existing emacs command completion functions that this might work well in conjunction with. There are so many different Packages to do command completion in emacs.... in particular, I am looking for something that can do efficient searches for words in any order, e.g. have both utterrances "next unread" and "unread next" find gnus-summary-unread-next.
---
This started out as a supposedly brief reply to https://www.knowbrainer.com/forums/forum/messageview.cfm?catid=4&threadid=16413#90974
------------------------- DPG15.6 (also DPI 15.3) + KB, Sennheiser MB Pro 1 UC ML, BTD 800 dongle, Windows 10 Pro, MS Surface Book 3, Intel Core i7-1065G7 CPU @ 1.3/1.5GHz (4 cores, 8 logical, GPU=NVIDIA Quadro RTX 3000 with Max-Q Design. |
|
|
FuseTalk Standard Edition v4.0 - © 1999-2022 FuseTalk™ Inc. All rights reserved.