Skip to main content

Plover plugin to make typing identifier in programming languages easier

Project description

plover-auto-identifier

You don't have to keep typing KPA* or RUPBD while programming.

Example usage:

  • Type THRAEUT R*UPBD STROEBG, translate_stroke is printed.
  • From the next time, typing THRAEUT STROEBG will automatically create translate_stroke.
  • The first step is not necessary with editor integration.

This program is available on GitHub and PyPI. Report bugs on GitHub.

Note that this program uses some internal API of Plover, and thus is not guaranteed to work on any given Plover versions.

Features:

  • Define a dictionary entry mapped to =auto_identifier_mark to mark the most recently typed word as an identifier (only works if the identifier is stroked with no more than 10 translations)
    Note that identifiers are also mapped automatically.

  • Define a dictionary entry mapped to =auto_identifier_remove to unmap and revert the most recently automatically converted identifier (only works if the translation is recent)

  • Send to the named pipe \\.\pipe\plover_auto_identifier (Windows) or socket /<tempdir>/plover_auto_identifier_socket (UNIX) a Python string being the file name to read the list of identifiers from that file (with authkey=None).

    The file must be encoded in UTF-8 encoding.

    The existing identifiers will be removed.

    Note that it's necessary to send only one message for each connection.

For example, you can place this code into .vimrc (UNIX system):

function s:NotifyPloverAutoIdentifier()
pythonx << EOF
from multiprocessing import connection
filepath=vim.eval('expand("%:p")')
if filepath: #if the user edit a new buffer, filepath might be empty
	try:
		c=connection.Client("/tmp/plover_auto_identifier_socket")
		try:
			c.send(("file", filepath))
		finally:
			c.close()
	except FileNotFoundError:
		pass # the plugin is not listening
	except OSError as e: # weird behavior
		print(e)

EOF
endfunction

augroup vimrc_notify_plover_auto_identifier
	auto!
	auto BufEnter,BufWritePost * call s:NotifyPloverAutoIdentifier()
augroup END

Idea:

  • Integrate with some editor to load the word list (done)
  • Also track the output for the word list. (done)
    • But if the word typed is deleted, also remove that word from the word list. (TODO)
    • That is, if there's no editor integration (TODO)
  • Given a word list...
    • If user stroke A/B/C -> "a b c", automatically convert it to "aBC" (assuming camel case)
    • Then if user press * there are two options
      • Revert to "a b c" (note: do not reform the word immediately!)
      • Revert to "a b" (which is the one that makes the most sense with Plover's default meaning of undo)
        • Note: handle the case that the last "formed" word/translation has replaced entries!
      • Delete the whole word
    • In the latter 2 cases there should be a stroke that undo the conversion
    • Do not convert anything if there's any no-op stroke!
      • No-op: for example delete-space TK-LS, camel-case, or underscore.
    • Only change new content...?
      • For example, if the user stroke A/B, then add aB to the word list, then undo to the point with that content "a b" it should not be spontaneously changed to "aB".
      • But what if the user delete the "b" then stroke it back?

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plover_auto_identifier-0.0.2.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

plover_auto_identifier-0.0.2-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

Details for the file plover_auto_identifier-0.0.2.tar.gz.

File metadata

  • Download URL: plover_auto_identifier-0.0.2.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.6.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.3

File hashes

Hashes for plover_auto_identifier-0.0.2.tar.gz
Algorithm Hash digest
SHA256 21a349f6f97b8caffcee6cfe070766e5993320e8bc803420c1827abe4cfbca54
MD5 5298dc0e5ffaa474444bbf3fe4fa974e
BLAKE2b-256 52fc653a7c791228a024b1d7673b19113959faf873aaad5c8a146af3814d0cc2

See more details on using hashes here.

File details

Details for the file plover_auto_identifier-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: plover_auto_identifier-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 21.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.6.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.3

File hashes

Hashes for plover_auto_identifier-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b4e0ff644f768ec4c035da004f9631db2bc02b317ded49e9bea3a1207a4de907
MD5 a6964b7e6079bafdf33f0f0c021bfe38
BLAKE2b-256 0565ba17bbae04b28834e9ee1ea71c7ba6fdeebdd4923e5a4e674b036bcbc6b9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page