An open API service indexing awesome lists of open source software.

https://github.com/aygp-dr/verbiste.el

Emacs interface to the Verbiste French/Italian verb conjugation library
https://github.com/aygp-dr/verbiste.el

conjugation elisp emacs french italian language

Last synced: 3 months ago
JSON representation

Emacs interface to the Verbiste French/Italian verb conjugation library

Awesome Lists containing this project

README

          

#+TITLE: verbiste.el
#+AUTHOR: Aidan Pace
#+EMAIL: apace@defrecord.com

Emacs interface to the Verbiste French verb conjugation library.

** Overview

This package provides a convenient interface to the Verbiste library for French verb conjugation directly within Emacs. It allows users to conjugate verbs in all tenses and moods, right from their editor. Italian support is planned for future releases.

** Features

- Conjugate French verbs in all tenses and moods
- Find infinitive forms of conjugated French verbs
- Check installation status to ensure proper setup
- Navigate verb relationships in a graph-like interface
- Browse random verbs and explore similar verbs interactively
- Click through related verbs to discover connections and patterns
- Convenient minor mode with keybindings
- Support for direct XML parsing (optional, for better performance)

** Screenshots

*** Browse Random Verbs
[[file:screenshots/sh-verbiste-random.png]]

*** Verb Conjugation
[[file:screenshots/sh-verbiste-parler.png]]

** Installation

*** Prerequisites

**** FreeBSD
#+begin_src bash
sudo pkg install verbiste
#+end_src

**** Debian/Ubuntu
#+begin_src bash
sudo apt-get install elpa-verbiste verbiste
#+end_src

**** Manual Installation
1. Clone this repository:
#+begin_src bash
git clone https://github.com/aygp-dr/verbiste.el.git
#+end_src

2. Add the following to your Emacs init file:
#+begin_src emacs-lisp
(add-to-list 'load-path "/path/to/verbiste.el")
(require 'verbiste)
#+end_src

** Usage

*** Basic Commands

- ~M-x verbiste-french-conjugation~: Conjugate a French verb
- ~M-x verbiste-french-deconjugation~: Find the infinitive form of a conjugated French verb
- ~M-x verbiste-check-installation~: Check if Verbiste is properly installed
- ~M-x verbiste-mode~: Toggle Verbiste minor mode for verb conjugation
- ~M-x verbiste-display-similar-verbs~: Display verbs similar to the given verb
- ~M-x verbiste-browse-random-verbs~: Show a list of random verbs with interactive buttons

*** Keybindings

When ~verbiste-mode~ is enabled:

| Key | Function |
|-----------+-------------------------------|
| C-c v f c | verbiste-french-conjugation |
| C-c v f d | verbiste-french-deconjugation |
| C-c v s | verbiste-display-similar-verbs |
| C-c v r | verbiste-browse-random-verbs |

*** Planned Features

Italian verb conjugation support is currently in development. The following commands will be available in future releases:

- ~M-x verbiste-italian-conjugation~: Conjugate an Italian verb
- ~M-x verbiste-italian-deconjugation~: Find the infinitive form of a conjugated Italian verb

** Implementation Notes

This package works with the verbiste XML files located at:

- ~/usr/local/share/verbiste-0.1/conjugation-fr.xml~
- ~/usr/local/share/verbiste-0.1/verbs-fr.xml~
- ~/usr/local/share/verbiste-0.1/conjugation-it.xml~
- ~/usr/local/share/verbiste-0.1/verbs-it.xml~

The implementation can work in two modes:
1. Using the verbiste command-line tools via shell commands
2. Direct XML parsing using Emacs Lisp (more efficient but more complex)

** French Verb Examples

Common French verbs for testing:
- être (to be)
- avoir (to have)
- aller (to go)
- faire (to do/make)
- voir (to see)
- pouvoir (to be able to)
- vouloir (to want)
- parler (to speak)
- manger (to eat)
- finir (to finish)

** Development

*** For Emacs Lisp Code
#+begin_src bash
# Compile elisp files
gmake compile

# Run tests
gmake test

# Lint code
gmake lint

# Create distribution package
gmake dist

# Generate text-based UI screenshots
gmake screenshot

# Launch a demo with verbiste loaded
gmake demo
#+end_src

*** For Supporting Python Tools
#+begin_src bash
# Install with Poetry
poetry install

# Format Python code
poetry run black verbiste_tools
#+end_src

*** Future Plans
1. Implement completion for verb input
2. Add support for theme-aware display
3. Implement mode-line indicators for verbs under point
4. Add Italian verb support

** Resources

- [[http://sarrazip.com/dev/verbiste.html][Verbiste Official Website]]
- [[https://web.archive.org/web/20080418121944/http://perso.b2b2c.ca/sarrazip/dev/verbiste.html][Verbiste Archive (Historical)]]
- [[https://github.com/euoia/node-reverb/blob/master/lib/conjugation-tables/conjugation-fr.xml][Verbiste French Conjugation Tables (GitHub)]]
- [[https://sourceforge.net/projects/verbes/][Verbes Project on SourceForge]]
- [[/usr/local/share/verbiste-0.1/][Local Verbiste Data Files]]

** License

GPL v2 or later, consistent with Verbiste itself.