[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Community improvements to the Emacs Widget Library manual?
From: |
Mauro Aranda |
Subject: |
Re: Community improvements to the Emacs Widget Library manual? |
Date: |
Fri, 14 Jul 2023 11:41:13 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 |
Bryce Carson <bovine@cyberscientist.ca> writes:
> Further, I can't seem to get these functions to work as documented or
> expected.
>
> Without these defined when I'm creating a widget with the following
> code, I do get a button but the internal value is displayed in the
clickable
> button. I'd like the external value to be displayed in the button %v,
just
> as the menu-tag is is "externally facing".
>
> <<widget>>=
> (define-widget 'project-widget 'list
> :tag (let ((s "\n\tProject"))
> (put-text-property 0 (length s) 'face 'bold s) s)
> :format "%t\n%v "
> :offset 0
> :indent 0
> :convert-widget 'widget-types-convert-widget
> :args '((menu-choice
> :tag "EmacSQL-supported backend"
> :format "%[%t%]: %[%v%]"
> :value "sqlite"
> :value-to-external <<menu-choice internal value to
external lambda>>
> :value-to-internal <<menu-choice external value to
internal lambda>>
> (choice-item :menu-tag "MySQL" :value "mysql")
> (choice-item :menu-tag "PostgreSQL" :value "postgresql")
> (choice-item :menu-tag "SQLite" :value "sqlite"))))
> <<menu-choice internal value to external lambda>>=
> (lambda (widget internal-value)
> "Converts lowercase, internal values to the casing of trademarks."
> (pcase internal-value
> ("mysql" "MySQL")
> ("sqlite" "SQLite")
> ("postgresql" "PostgreSQL")))
> <<menu-choice external value to internal lambda>>=
> (lambda (widget external-value)
> "Converts the casing of trademarked names to lowercase, internal
values."
> (pcase external-value
> ("MySQL" "mysql")
> ("SQLite" "sqlite")
When possible, please post code that can be evaled without making
tweaks.
Some things I noted:
- Since the super is a list widget, then you don't need to specify
:convert-widget. The :convert-widget function is one of the few that
gets called for all supers, so you end up converting twice the widget.
In this case, it doesn't seem you want that.
- You're specifying a value in the internal format for the menu-choice.
The manual specifies that when creating a widget or defining a new
one, the ‘:value’ should be in the external format.
- I think you should give similar conversion functions to all
choice-item, and also pass the :value in external format.
Let me know if you still find problems after fixing these things.
- Re: Community improvements to the Emacs Widget Library manual?, (continued)
Re: Community improvements to the Emacs Widget Library manual?, Mauro Aranda, 2023/07/12
Re: Community improvements to the Emacs Widget Library manual?,
Mauro Aranda <=
Re: Community improvements to the Emacs Widget Library manual?, bovine, 2023/07/14
Re: Community improvements to the Emacs Widget Library manual?, Mauro Aranda, 2023/07/14
Re: Community improvements to the Emacs Widget Library manual?, Mauro Aranda, 2023/07/14