unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#68602: 29.2; describe-language-environment fails to specify default in its CR
@ 2024-01-20  5:56 Thierry Volpiatto
  2024-01-20  7:47 ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Thierry Volpiatto @ 2024-01-20  5:56 UTC (permalink / raw)
  To: 68602


Its read-language-name specify default in prompt but not as DEFAULT arg.

diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 07f11a62594..666912300a7 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -2159,7 +2159,8 @@ See `set-language-info-alist' for use in programs."
   (interactive
    (list (read-language-name
 	  'documentation
-	  (format-prompt "Describe language environment" current-language-environment))))
+	  (format-prompt "Describe language environment" current-language-environment)
+          current-language-environment)))
   (let ((help-buffer-under-preparation t))
     (if (null language-name)
 	(setq language-name current-language-environment))



In GNU Emacs 29.2 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.16.0, Xaw3d scroll bars) of 2024-01-18 built on IPad-S340
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Linux Mint 21.3

Configured using:
 'configure --bindir=/usr/local/sbin/emacs-29.1 --with-cairo
 --with-x-toolkit=lucid --with-modules --without-tree-sitter
 --without-native-compilation'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS
X11 XAW3D XDBE XIM XINPUT2 XPM LUCID ZLIB

Important settings:
  value of $LANG: fr_FR.UTF-8
  locale-coding-system: utf-8-unix

Major mode: 

Minor modes in effect:
  emms-mode-line-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  bug-reference-prog-mode: t
  server-mode: t
  psession-mode: t
  psession-savehist-mode: t
  register-preview-mode: t
  global-git-gutter-mode: t
  git-gutter-mode: t
  display-time-mode: t
  winner-mode: t
  tv-save-place-mode: t
  helm-epa-mode: t
  helm-descbinds-mode: t
  helm-top-poll-mode: t
  helm-adaptive-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  helm-ff-icon-mode: t
  shell-dirtrack-mode: t
  helm-popup-tip-mode: t
  async-bytecomp-package-mode: t
  dired-async-mode: t
  minibuffer-depth-indicate-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow helm-dabbrev emacsbug helm-ring mailalias epa-mail calc-alg
calc-ext calc-menu calc-aent calc calc-loaddefs rect calc-macs em-unix
em-term em-script em-prompt em-ls em-hist em-pred em-glob em-extpipe
em-cmpl em-dirs esh-var em-basic em-banner em-alias esh-mode esh-toggle
log-edit add-log vc-filewise vc-rcs log-view pcvs-util ledger-config
toc-org org-element org-persist org-id org-refile avl-tree oc-basic
ol-eww eww url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus
nnselect ol-docview ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi
cal-move helm-skitour finder-inf helm-packages cl-print cl-indent
shortdoc face-remap w3m-form w3m-symbol w3m doc-view timezone w3m-hist
bookmark-w3m w3m-ems w3m-favicon w3m-image w3m-fb tab-line w3m-proc
w3m-util wttr-weather nroff-mode helm-command helm-elisp helm-eval
edebug debug backtrace jka-compr markdown-mode color cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
tabify woman man helm-man term ehelp helm-apt isl char-fold helm-emms
helm-firefox smerge-mode diff view gnus-async gnus-bcklg gnus-ml
disp-table nndraft nnmh nnfolder epa-file network-stream nsm gnus-agent
gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp gnus-cache
tramp-sh cl-extra smiley gnus-cite qp mm-archive mail-extr textsec
uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check
addressbook-bookmark tv-mu4e-config config-w3m mu4e-contrib mu4e-patch
mu4e mu4e-org mu4e-notification notifications mu4e-main smtpmail
mu4e-view mu4e-mime-parts gnus-art mm-uu mml2015 mm-view mml-smime smime
gnutls dig gnus-sum gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud
nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range
gnus-win gnus mu4e-headers mu4e-thread mu4e-actions mu4e-compose
nnheader range mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark
mu4e-message shr pixel-fill kinsoku url-file svg dom flow-fill hl-line
mu4e-contacts mu4e-update mu4e-folders mu4e-context mu4e-query-items
mu4e-server mu4e-modeline mu4e-vars mu4e-helpers mu4e-config mu4e-window
ido message sendmail yank-media puny rfc822 mml mml-sec gnus-util
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
mu4e-obsolete reposition helm-x-files helm-for-files helm-bookmark
helm-info bookmark image-file image-converter emms-config emms-mpris
emms-librefm-stream emms-librefm-scrobbler emms-playlist-limit emms-i18n
emms-history emms-score emms-stream-info emms-metaplaylist-mode
emms-bookmarks emms-cue emms-mode-line-icon emms-browser sort
emms-volume emms-volume-sndioctl emms-volume-mixerctl emms-volume-pulse
emms-volume-amixer emms-playlist-sort emms-last-played emms-player-xine
emms-player-mpd tq emms-lyrics emms-url emms-streams emms-show-all
emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line emms-cache
emms-info-native emms-info-native-spc emms-info-native-mp3
emms-info-native-ogg emms-info-native-opus emms-info-native-flac
emms-info-native-vorbis bindat emms-info-exiftool emms-info-tinytag
emms-info-metaflac emms-info-opusinfo emms-info-ogginfo
emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mpv
emms-playing-time emms-info emms-later-do emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat emms-auto helm-external helm-net
tramp-archive tramp-gvfs tramp-cache time-stamp zeroconf dbus xml ffap
helm-ls-git vc-git diff-mode vc vc-dispatcher emacs-news-mode make-mode
conf-mode ledger-mode ledger-check ledger-texi ledger-test ledger-sort
ledger-report ledger-reconcile ledger-occur ledger-fonts ledger-fontify
ledger-state ledger-complete ledger-schedule ledger-init ledger-xact
ledger-post ledger-exec ledger-navigate eshell esh-cmd generator esh-ext
esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util
ledger-context ledger-commodities org-config ob-gnuplot org-crypt
org-protocol org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-src ob-comint org-pcomplete org-list org-footnote org-faces
org-entities noutline outline ob-emacs-lisp ob-core ob-eval org-cycle
org-table ol org-fold org-fold-core org-keys oc org-loaddefs find-func
org-version org-compat org-macs ledger-regex flymake-shellcheck
cus-start flymake-proc flymake project warnings thingatpt sh-script smie
treesit executable bug-reference naquadah-theme solar cal-dst holidays
holiday-loaddefs appt diary-lib diary-loaddefs cal-menu calendar
cal-loaddefs server imenu psession frameset register-preview pcase
git-gutter mule-util dired-extension time winner describe-variable
help-fns radix-tree help-mode tv-utils tv-save-place.el advice init-helm
epa derived epg rfc6068 epg-config helm-epa helm-descbinds cus-edit pp
icons wid-edit helm-sys popup helm-adaptive helm-mode helm-misc
helm-files image-dired image-dired-tags image-dired-external
image-dired-util xdg image-mode exif filenotify tramp tramp-loaddefs
trampver tramp-integration files-x tramp-compat rx shell pcomplete
parse-time iso8601 time-date helm-buffers all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons helm-occur helm-tags
helm-locate helm-grep wgrep-helm wgrep grep compile text-property-search
comint ansi-osc ring helm-regexp format-spec ansi-color helm-utils
helm-help helm-types helm-extensions-autoloads helm-autoloads helm
helm-global-bindings helm-easymenu edmacro kmacro helm-core easy-mmode
async-bytecomp helm-source helm-multi-match helm-lib dired-async async
dired-aux dired dired-loaddefs mb-depth avoid cus-load
all-the-icons-autoloads info ledger-mode-autoloads
markdown-mode-autoloads w3m-load w3m-autoloads yaml-mode-autoloads
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie generate-lisp-file url-domsuf url-util mailcap
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
password-cache json subr-x map byte-opt gv bytecomp byte-compile
url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
xinput2 x multi-tty make-network-process emacs)

Memory information:
((conses 16 1751220 122214)
 (symbols 48 55293 6)
 (strings 32 378790 32518)
 (string-bytes 1 10476708)
 (vectors 16 147203)
 (vector-slots 8 2989283 171571)
 (floats 8 5188 2611)
 (intervals 56 97207 3308)
 (buffers 976 212))
<#secure method=pgpmime mode=sign>

-- 
Thierry





^ permalink raw reply related	[flat|nested] 8+ messages in thread

* bug#68602: 29.2; describe-language-environment fails to specify default in its CR
  2024-01-20  5:56 bug#68602: 29.2; describe-language-environment fails to specify default in its CR Thierry Volpiatto
@ 2024-01-20  7:47 ` Eli Zaretskii
  2024-01-20 16:37   ` Thierry Volpiatto
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2024-01-20  7:47 UTC (permalink / raw)
  To: Thierry Volpiatto; +Cc: 68602

> From: Thierry Volpiatto <thievol@posteo.net>
> Date: Sat, 20 Jan 2024 05:56:11 +0000
> 
> 
> Its read-language-name specify default in prompt but not as DEFAULT arg.

Thanks.  But why is that a problem?





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#68602: 29.2; describe-language-environment fails to specify default in its CR
  2024-01-20  7:47 ` Eli Zaretskii
@ 2024-01-20 16:37   ` Thierry Volpiatto
  2024-01-20 17:54     ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Thierry Volpiatto @ 2024-01-20 16:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 68602

[-- Attachment #1: Type: text/plain, Size: 658 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Thierry Volpiatto <thievol@posteo.net>
>> Date: Sat, 20 Jan 2024 05:56:11 +0000
>> 
>> 
>> Its read-language-name specify default in prompt but not as DEFAULT arg.
>
> Thanks.  But why is that a problem?

Because Helm needs this info to handle DEFAULT, it can't be aware of the
code running after the completing-read (read-language-name in this
case).
Also using the DEFAULT arg of read-language-name save you the
need to compute DEFAULT just after:

    (if (null language-name)
        (setq language-name current-language-environment))

This piece of code can be removed.

-- 
Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 686 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#68602: 29.2; describe-language-environment fails to specify default in its CR
  2024-01-20 16:37   ` Thierry Volpiatto
@ 2024-01-20 17:54     ` Eli Zaretskii
  2024-01-20 19:33       ` Thierry Volpiatto
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2024-01-20 17:54 UTC (permalink / raw)
  To: Thierry Volpiatto; +Cc: 68602

> From: Thierry Volpiatto <thievol@posteo.net>
> Cc: 68602@debbugs.gnu.org
> Date: Sat, 20 Jan 2024 16:37:04 +0000
> 
> >> From: Thierry Volpiatto <thievol@posteo.net>
> >> Date: Sat, 20 Jan 2024 05:56:11 +0000
> >> 
> >> 
> >> Its read-language-name specify default in prompt but not as DEFAULT arg.
> >
> > Thanks.  But why is that a problem?
> 
> Because Helm needs this info to handle DEFAULT, it can't be aware of the
> code running after the completing-read (read-language-name in this
> case).

Can you elaborate on this?  I don't think I follow (I don't use Helm).

> Also using the DEFAULT arg of read-language-name save you the
> need to compute DEFAULT just after:
> 
>     (if (null language-name)
>         (setq language-name current-language-environment))
> 
> This piece of code can be removed.

Right.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#68602: 29.2; describe-language-environment fails to specify default in its CR
  2024-01-20 17:54     ` Eli Zaretskii
@ 2024-01-20 19:33       ` Thierry Volpiatto
  2024-01-21 18:26         ` Thierry Volpiatto
  0 siblings, 1 reply; 8+ messages in thread
From: Thierry Volpiatto @ 2024-01-20 19:33 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 68602

[-- Attachment #1: Type: text/plain, Size: 1708 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Thierry Volpiatto <thievol@posteo.net>
>> Cc: 68602@debbugs.gnu.org
>> Date: Sat, 20 Jan 2024 16:37:04 +0000
>> 
>> >> From: Thierry Volpiatto <thievol@posteo.net>
>> >> Date: Sat, 20 Jan 2024 05:56:11 +0000
>> >> 
>> >> 
>> >> Its read-language-name specify default in prompt but not as DEFAULT arg.
>> >
>> > Thanks.  But why is that a problem?
>> 
>> Because Helm needs this info to handle DEFAULT, it can't be aware of the
>> code running after the completing-read (read-language-name in this
>> case).
>
> Can you elaborate on this?  I don't think I follow (I don't use Helm).

When you press RET on an empty completing-read prompt and the function
provides a default, the completing-read returns this default.
When you run this function with helm-mode enabled, helm provide its
interface for completion on this completing-read and puts default on top
of its list to allow user pressing RET with an empty prompt to have this
default.  If the default arg is handled AFTER the completing-read helm
cannot guess what is it.

Example (selection is "|"):

(defun foo ()
  (let ((val (completing-read
              "test: " '("a" "b" "c" "d") nil nil nil nil "d")))
    val))

d|
a
b
c

(defun foo-1 ()
  (let ((val (completing-read "test: " '("a" "b" "c" "d"))))
    (if (string= val "") "d" val)))

a|
b
c
d

In `foo` and `foo-1` with helm-mode enabled and press RET with nothing
in prompt, helm will return "d" with `foo` but "a" with `foo-1`.

In `foo` helm is aware that "d" is the default, in `foo-1` it has no
ideas of what the default is even if `foo-1` code is as correct as `foo`. 

-- 
Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 686 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#68602: 29.2; describe-language-environment fails to specify default in its CR
  2024-01-20 19:33       ` Thierry Volpiatto
@ 2024-01-21 18:26         ` Thierry Volpiatto
  2024-01-27  9:47           ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Thierry Volpiatto @ 2024-01-21 18:26 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 68602


[-- Attachment #1.1: Type: text/plain, Size: 54 bytes --]


Here a patch attached fixing this.

-- 
Thierry

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-Use-DEFAULT-arg-of-read-language-name-bug-68602.patch --]
[-- Type: text/x-diff, Size: 1392 bytes --]

From 5eb0ec18cea14a8d5a13c8ae02223b67dbdc280c Mon Sep 17 00:00:00 2001
From: Thierry Volpiatto <thievol@posteo.net>
Date: Sun, 21 Jan 2024 19:13:59 +0100
Subject: [PATCH] Use DEFAULT arg of read-language-name (bug#68602)

in describe-language-environment.  This allows external packages
providing completion (helm etc...) to be aware of default easily.

* lisp/international/mule-cmds.el (describe-language-environment): Do it.
---
 lisp/international/mule-cmds.el | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 07f11a62594..7ae3bd7c816 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -2159,10 +2159,9 @@ See `set-language-info-alist' for use in programs."
   (interactive
    (list (read-language-name
 	  'documentation
-	  (format-prompt "Describe language environment" current-language-environment))))
+	  (format-prompt "Describe language environment" current-language-environment)
+          current-language-environment)))
   (let ((help-buffer-under-preparation t))
-    (if (null language-name)
-	(setq language-name current-language-environment))
     (if (or (null language-name)
 	    (null (get-language-info language-name 'documentation)))
 	(error "No documentation for the specified language"))
-- 
2.34.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 686 bytes --]

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* bug#68602: 29.2; describe-language-environment fails to specify default in its CR
  2024-01-21 18:26         ` Thierry Volpiatto
@ 2024-01-27  9:47           ` Eli Zaretskii
  2024-01-27 12:31             ` Thierry Volpiatto
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2024-01-27  9:47 UTC (permalink / raw)
  To: Thierry Volpiatto; +Cc: 68602-done

> From: Thierry Volpiatto <thievol@posteo.net>
> Cc: 68602@debbugs.gnu.org
> Date: Sun, 21 Jan 2024 18:26:47 +0000
> 
> Here a patch attached fixing this.

Thanks.  I decided to install only part of the patch, leaving the test
for nil alone, just to be on the safe side: with today's proliferation
of different completion schemes and packages, who knows what
read-language-name can yield?

having installed this on the master branch, I'm therefore closing the
bug.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#68602: 29.2; describe-language-environment fails to specify default in its CR
  2024-01-27  9:47           ` Eli Zaretskii
@ 2024-01-27 12:31             ` Thierry Volpiatto
  0 siblings, 0 replies; 8+ messages in thread
From: Thierry Volpiatto @ 2024-01-27 12:31 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 68602-done

[-- Attachment #1: Type: text/plain, Size: 657 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Thierry Volpiatto <thievol@posteo.net>
>> Cc: 68602@debbugs.gnu.org
>> Date: Sun, 21 Jan 2024 18:26:47 +0000
>> 
>> Here a patch attached fixing this.
>
> Thanks.  I decided to install only part of the patch, leaving the test
> for nil alone, just to be on the safe side: with today's proliferation
> of different completion schemes and packages, who knows what
> read-language-name can yield?

Yes, if a package providing completion doesn't handle DEFAULT, indeed
the test is needed.

> having installed this on the master branch, I'm therefore closing the
> bug.

Thanks.

-- 
Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 686 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-01-27 12:31 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-20  5:56 bug#68602: 29.2; describe-language-environment fails to specify default in its CR Thierry Volpiatto
2024-01-20  7:47 ` Eli Zaretskii
2024-01-20 16:37   ` Thierry Volpiatto
2024-01-20 17:54     ` Eli Zaretskii
2024-01-20 19:33       ` Thierry Volpiatto
2024-01-21 18:26         ` Thierry Volpiatto
2024-01-27  9:47           ` Eli Zaretskii
2024-01-27 12:31             ` Thierry Volpiatto

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).