mirror of
https://github.com/tanrax/lirve.el.git
synced 2025-02-05 18:25:50 +01:00
Add code state, update variables to const and renamed some functions
This commit is contained in:
parent
a28ec29d8b
commit
5c3eef6d5a
@ -7,11 +7,11 @@
|
|||||||
;; SPDX-License-Identifier: GPL-3.0-or-later
|
;; SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;; This file contains a list of irregular verbs in English, with their
|
;; This file contains a list of irregular verbs in English
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(defvar lirve-verbs--list '(
|
(defconst lirve-verbs--list '(
|
||||||
(
|
(
|
||||||
(infinitive . "beat")
|
(infinitive . "beat")
|
||||||
(simple-past . "beat")
|
(simple-past . "beat")
|
||||||
|
54
lirve.el
54
lirve.el
@ -23,17 +23,17 @@
|
|||||||
(defvar lirve--count-verbs 0) ;; It's used to know when unresolved verbs are shown
|
(defvar lirve--count-verbs 0) ;; It's used to know when unresolved verbs are shown
|
||||||
(defvar lirve--interval-unresolved 3) ;; Interval to show unresolved verbs
|
(defvar lirve--interval-unresolved 3) ;; Interval to show unresolved verbs
|
||||||
(defvar lirve--verbs-shuffle '())
|
(defvar lirve--verbs-shuffle '())
|
||||||
(defvar lirve--file-name-unresolved ".lirve-unresolved")
|
(defconst lirve--file-name-unresolved ".lirve-unresolved")
|
||||||
(defvar lirve--verbs-unresolved '())
|
(defvar lirve--verbs-unresolved '())
|
||||||
(defvar lirve--buffer-name "*Learning irregular verbs in English*")
|
(defconst lirve--buffer-name "*Learning irregular verbs in English*")
|
||||||
(defvar lirve--state 1) ;; 1: lirve--start, 2: playing (before first check), 3: win (show success layout)
|
(defvar lirve--state :start) ;; :start -> Init, :playing before first check, :win show success layout
|
||||||
(defvar lirve--verb-to-learn-infinitive nil)
|
(defvar lirve--verb-to-learn-infinitive nil)
|
||||||
(defvar lirve--verb-to-learn-simple-past nil)
|
(defvar lirve--verb-to-learn-simple-past nil)
|
||||||
(defvar lirve--verb-to-learn-past-participle nil)
|
(defvar lirve--verb-to-learn-past-participle nil)
|
||||||
(defvar lirve--translation "")
|
(defvar lirve--translation "")
|
||||||
(defvar lirve--set-translation nil) ;; Set the translation language
|
(defvar lirve--set-translation nil) ;; Set the translation language
|
||||||
(defvar lirve--emoji-valid "✅")
|
(defconst lirve--emoji-valid "✅")
|
||||||
(defvar lirve--emoji-error "👎")
|
(defconst lirve--emoji-error "👎")
|
||||||
(defvar lirve--widget-title nil)
|
(defvar lirve--widget-title nil)
|
||||||
(defvar lirve--text-title " 🧑🎓 Learning irregular verbs in English 🇬🇧")
|
(defvar lirve--text-title " 🧑🎓 Learning irregular verbs in English 🇬🇧")
|
||||||
(defvar lirve--widget-item-verb nil)
|
(defvar lirve--widget-item-verb nil)
|
||||||
@ -41,26 +41,26 @@
|
|||||||
(defvar lirve--widget-label-check-simple-past nil)
|
(defvar lirve--widget-label-check-simple-past nil)
|
||||||
(defvar lirve--widget-field-past-participle nil)
|
(defvar lirve--widget-field-past-participle nil)
|
||||||
(defvar lirve--widget-label-check-past-participle nil)
|
(defvar lirve--widget-label-check-past-participle nil)
|
||||||
(defvar lirve--text-button-check "Check")
|
(defconst lirve--text-button-check "Check")
|
||||||
(defvar lirve--widget-button-check nil)
|
(defvar lirve--widget-button-check nil)
|
||||||
(defvar lirve--widget-item-space-before-check nil)
|
(defvar lirve--widget-item-space-before-check nil)
|
||||||
(defvar lirve--text-button-show-solution "Don't know")
|
(defconst lirve--text-button-show-solution "Don't know")
|
||||||
(defvar lirve--widget-button-show-solution nil)
|
(defvar lirve--widget-button-show-solution nil)
|
||||||
(defvar lirve--widget-message-success nil)
|
(defvar lirve--widget-message-success nil)
|
||||||
(defvar lirve--widget-item-space-before-success nil)
|
(defvar lirve--widget-item-space-before-success nil)
|
||||||
(defvar lirve--text-success "Nice!")
|
(defconst lirve--text-success "Nice!")
|
||||||
(defvar lirve--text-fail "Next time you will do better")
|
(defconst lirve--text-fail "Next time you will do better")
|
||||||
(defvar lirve--is-resolve t)
|
(defvar lirve--resolved-p t)
|
||||||
(defvar lirve--widget-item-space-after-success nil)
|
(defvar lirve--widget-item-space-after-success nil)
|
||||||
(defvar lirve--widget-button-quit nil)
|
(defvar lirve--widget-button-quit nil)
|
||||||
(defvar lirve--text-button-quit "Quit")
|
(defconst lirve--text-button-quit "Quit")
|
||||||
(defvar lirve--widget-item-space-between-buttons nil)
|
(defvar lirve--widget-item-space-between-buttons nil)
|
||||||
(defvar lirve--widget-button-lirve--replay nil)
|
(defvar lirve--widget-button-lirve--replay nil)
|
||||||
(defvar lirve--text-button-lirve--replay "New challenge")
|
(defconst lirve--text-button-lirve--replay "New challenge")
|
||||||
|
|
||||||
;; Functions
|
;; Functions
|
||||||
|
|
||||||
(defun lirve--kill-app ()
|
(defun lirve-kill-app ()
|
||||||
"Kill the application."
|
"Kill the application."
|
||||||
(interactive)
|
(interactive)
|
||||||
(kill-buffer lirve--buffer-name))
|
(kill-buffer lirve--buffer-name))
|
||||||
@ -168,7 +168,7 @@ Argument INFINITIVE verb to remove."
|
|||||||
|
|
||||||
(defun lirve--format-check-simple-past ()
|
(defun lirve--format-check-simple-past ()
|
||||||
"Format the value of the simple past."
|
"Format the value of the simple past."
|
||||||
(if (eq lirve--state 1)
|
(if (eq lirve--state :start)
|
||||||
""
|
""
|
||||||
(format " %s" (if
|
(format " %s" (if
|
||||||
(and
|
(and
|
||||||
@ -178,7 +178,7 @@ Argument INFINITIVE verb to remove."
|
|||||||
|
|
||||||
(defun lirve--format-check-past-participle ()
|
(defun lirve--format-check-past-participle ()
|
||||||
"Format the value of the past participle."
|
"Format the value of the past participle."
|
||||||
(if (eq lirve--state 1)
|
(if (eq lirve--state :start)
|
||||||
""
|
""
|
||||||
(format " %s" (if
|
(format " %s" (if
|
||||||
(and
|
(and
|
||||||
@ -193,7 +193,7 @@ Argument INFINITIVE verb to remove."
|
|||||||
|
|
||||||
(defun lirve--toggle-layout-finish ()
|
(defun lirve--toggle-layout-finish ()
|
||||||
"Toggle the layout to success."
|
"Toggle the layout to success."
|
||||||
(if (eq lirve--state 3)
|
(if (eq lirve--state :win)
|
||||||
(progn
|
(progn
|
||||||
;; Show translate
|
;; Show translate
|
||||||
(lirve--show-translation)
|
(lirve--show-translation)
|
||||||
@ -212,7 +212,7 @@ Argument INFINITIVE verb to remove."
|
|||||||
(setq lirve--widget-item-space-before-success (widget-create 'item
|
(setq lirve--widget-item-space-before-success (widget-create 'item
|
||||||
""))
|
""))
|
||||||
(setq lirve--widget-message-success (widget-create 'item
|
(setq lirve--widget-message-success (widget-create 'item
|
||||||
(if lirve--is-resolve lirve--text-success lirve--text-fail)))
|
(if lirve--resolved-p lirve--text-success lirve--text-fail)))
|
||||||
(setq lirve--widget-item-space-after-success (widget-create 'item
|
(setq lirve--widget-item-space-after-success (widget-create 'item
|
||||||
"\n"))
|
"\n"))
|
||||||
;; Lirve--Replay button
|
;; Lirve--Replay button
|
||||||
@ -227,7 +227,7 @@ Argument INFINITIVE verb to remove."
|
|||||||
;; Quit button
|
;; Quit button
|
||||||
(setq lirve--widget-button-quit (widget-create 'push-button
|
(setq lirve--widget-button-quit (widget-create 'push-button
|
||||||
:size 20
|
:size 20
|
||||||
:notify (lambda (&rest ignore) (lirve--kill-app))
|
:notify (lambda (&rest ignore) (lirve-kill-app))
|
||||||
lirve--text-button-quit))
|
lirve--text-button-quit))
|
||||||
(widget-backward 2))
|
(widget-backward 2))
|
||||||
(progn
|
(progn
|
||||||
@ -242,7 +242,7 @@ Argument INFINITIVE verb to remove."
|
|||||||
"Make the button check."
|
"Make the button check."
|
||||||
(setq lirve--widget-button-check (widget-create 'push-button
|
(setq lirve--widget-button-check (widget-create 'push-button
|
||||||
:notify (lambda (&rest ignore)
|
:notify (lambda (&rest ignore)
|
||||||
(setq lirve--is-resolve (lirve--is-win))
|
(setq lirve--resolved-p (lirve--is-win))
|
||||||
(lirve--update))
|
(lirve--update))
|
||||||
lirve--text-button-check)))
|
lirve--text-button-check)))
|
||||||
(defun lirve--make-space-after-check ()
|
(defun lirve--make-space-after-check ()
|
||||||
@ -256,13 +256,13 @@ Argument INFINITIVE verb to remove."
|
|||||||
(widget-value-set lirve--widget-field-simple-past lirve--verb-to-learn-simple-past)
|
(widget-value-set lirve--widget-field-simple-past lirve--verb-to-learn-simple-past)
|
||||||
(widget-value-set lirve--widget-field-past-participle lirve--verb-to-learn-past-participle)
|
(widget-value-set lirve--widget-field-past-participle lirve--verb-to-learn-past-participle)
|
||||||
;; Set state to lose
|
;; Set state to lose
|
||||||
(setq lirve--is-resolve nil))
|
(setq lirve--resolved-p nil))
|
||||||
|
|
||||||
(defun lirve--make-button-show-solution ()
|
(defun lirve--make-button-show-solution ()
|
||||||
"Make the button show solution."
|
"Make the button show solution."
|
||||||
(setq lirve--widget-button-show-solution (widget-create 'push-button
|
(setq lirve--widget-button-show-solution (widget-create 'push-button
|
||||||
:notify (lambda (&rest ignore)
|
:notify (lambda (&rest ignore)
|
||||||
(setq lirve--is-resolve (lirve--is-win))
|
(setq lirve--resolved-p (lirve--is-win))
|
||||||
(lirve--show-solutions)
|
(lirve--show-solutions)
|
||||||
(lirve--update))
|
(lirve--update))
|
||||||
lirve--text-button-show-solution)))
|
lirve--text-button-show-solution)))
|
||||||
@ -271,7 +271,7 @@ Argument INFINITIVE verb to remove."
|
|||||||
(defun lirve--start ()
|
(defun lirve--start ()
|
||||||
"Start challenge."
|
"Start challenge."
|
||||||
;; Set the lirve--state
|
;; Set the lirve--state
|
||||||
(setq lirve--state 1)
|
(setq lirve--state :start)
|
||||||
;; Get a new verb
|
;; Get a new verb
|
||||||
(lirve--set-verb-to-learn)
|
(lirve--set-verb-to-learn)
|
||||||
;; Show the verb in infinitive
|
;; Show the verb in infinitive
|
||||||
@ -300,23 +300,23 @@ Argument INFINITIVE verb to remove."
|
|||||||
"Update state and show temps layouts."
|
"Update state and show temps layouts."
|
||||||
(interactive)
|
(interactive)
|
||||||
;; Is playing?
|
;; Is playing?
|
||||||
(when (and (eq lirve--state 1)
|
(when (and (eq lirve--state :start)
|
||||||
(or
|
(or
|
||||||
(not (string= (lirve--value-field-simple-past) ""))
|
(not (string= (lirve--value-field-simple-past) ""))
|
||||||
(not (string= (lirve--value-field-past-participle) ""))))
|
(not (string= (lirve--value-field-past-participle) ""))))
|
||||||
(setq lirve--state 2))
|
(setq lirve--state :playing))
|
||||||
;; Check the answers
|
;; Check the answers
|
||||||
(when (eq lirve--state 2)
|
(when (eq lirve--state :playing)
|
||||||
;; Is win?
|
;; Is win?
|
||||||
(when (and
|
(when (and
|
||||||
(string= (lirve--value-field-simple-past) lirve--verb-to-learn-simple-past)
|
(string= (lirve--value-field-simple-past) lirve--verb-to-learn-simple-past)
|
||||||
(string= (lirve--value-field-past-participle) lirve--verb-to-learn-past-participle))
|
(string= (lirve--value-field-past-participle) lirve--verb-to-learn-past-participle))
|
||||||
;; Add or remove from unresolved list
|
;; Add or remove from unresolved list
|
||||||
(if lirve--is-resolve
|
(if lirve--resolved-p
|
||||||
(lirve--remove-verb-unresolved lirve--verb-to-learn-infinitive)
|
(lirve--remove-verb-unresolved lirve--verb-to-learn-infinitive)
|
||||||
(lirve--save-verb-unresolved lirve--verb-to-learn-infinitive))
|
(lirve--save-verb-unresolved lirve--verb-to-learn-infinitive))
|
||||||
;; Set the lirve--state
|
;; Set the lirve--state
|
||||||
(setq lirve--state 3))
|
(setq lirve--state :win))
|
||||||
;; Update the check labels
|
;; Update the check labels
|
||||||
(widget-value-set lirve--widget-label-check-simple-past (lirve--format-check-simple-past))
|
(widget-value-set lirve--widget-label-check-simple-past (lirve--format-check-simple-past))
|
||||||
(widget-value-set lirve--widget-label-check-past-participle (lirve--format-check-past-participle)))
|
(widget-value-set lirve--widget-label-check-past-participle (lirve--format-check-past-participle)))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user