We would like to devise an Emacs front-end that queries a back-end (generating a list of items in JSON format or so, each with a title, long description, and an URL), and displays this list in a special buffer, with a button to unhide the description, a button to trigger a specific Elisp action, and an hyperlink to browse the URL.
This question only focuses on the front-end part (not the communication with the back-end).
There are multiple modes that are close to this requirement, but each may have pros and cons, just to recapitulate:
goto-address-mode→ we could easily apply this mode and make the buffer read-only, but this would just render URLs as clickable hyperlinks (no formatting of the text or choice of the hyperlinks' caption).
org-mode→ we could easily generate a
.orgfile and display it in read-only, but (1) the look-and-feel is not that of a browser (e.g., bold text is written *bold*, not bold) and (2) the Org syntax is much more expressive than what would be enough here.
- the *GNU Emacs* initial buffer → we could generate a similar buffer with custom text/hyperlinks and the rendering would be much better than the last two solutions (but maybe buttons and accordions are not available).
Custom-mode→ displaying the list of items in a buffer similar to
M-x customizewould be great, as it would have an optimal look-and-feel; but we are unsure if it is feasible to "create a custom Custom-mode buffer" without the "customization" feature (but with actions such as URL opening).
So would you have pointers or suggestions regarding how to generate buffers implementing the solution 4. above?