Subject: bug#66470: 29.1; Provide Urdu input method

From: Rahguzar <[email-masked]>
Date: Sat, 04 Nov 2023 15:23:10 +0100

Hi Eli,

Eli Zaretskii <[email-masked]> writes:

> Thanks.  This still has a few issues, though.
>
> First, when I try to activate the pashto-keyboard input method in
> "emacs -Q", Emacs signals en error:
>
>   Symbol’s value as variable is void: pakistan-urdu-use-roman-digits
>
> I wonder how this worked for you.

I am sorry, I didn't test in a new fresh session and just evaluated the
changed code in the session I was running. I have fixed this and a more
serious issue which I didn't find for the same reason: as a result of
defvars custom initialized those values to nil instead of their standard
value. Now they are declared with a void value so that both byte
compiler and custom are happy.

>> +(defcustom pakistan-urdu-prefixes
>> +  '((diacritics "o")
>> +    (poetic "G")
>> +    (religious "M")
>> +    (balochi-brahui "B")
>> +    (pashto "P")
>> +    (sindhi "C")
>> +    (saraiki-hindko "X"))
>> +  "Prefixes for `urdu-custom' input method."
>> +  :set #'pakistan--set-prefixes
>> +  :type '(repeat (list symbol string))
>> +  :group 'pakistan-urdu-input)
>
> Each defcustom should have a :version tag stating the first version in
> which it will appear.

Thanks, I have added the version now and removed the group, since I
remembered from another thread that there preference is not to declare
the group explicitly.

P.S. While testing this I also fixed another issue where
`pakistan--regenerate-translations` will work the first time but not
subsequent ones. The fix was to replace

(quail-install-map `(nil))

(quail-install-map (list nil))

and I don't understand why that makes a difference. But while trying to
debug this I noticed that `quail-install-map` ignores the optional NAME
argument and always installs the map in the current quail package. Is
this the intended behavior? I have now added a

(quail-select-package "urdu-custom")

before the call to `quail-install-map` to make sure regenerating the
input method in custom doesn't trample some other input method.

Sorry again for the sloppiness,
Rahguzar