emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bug#47885: [PATCH] org-table-import: Make it more smarter for intera


From: Maxim Nikulin
Subject: Re: bug#47885: [PATCH] org-table-import: Make it more smarter for interactive use
Date: Tue, 18 May 2021 19:31:16 +0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1

It seems, there is no reliable way to work with numbers in a locale-aware way in emacs. I am still against hard-coded list of locales. Requirement to customize a variable is rather inconvenient. Considering such properties as a part of translation is a little better but I prefer to avoid it.

The question may be risen in emacs-devel but I am unsure if I will participate in discussion.

On 18/05/2021 17:24, Utkarsh Singh wrote:
On 2021-05-16, 23:24 +0700, Maxim Nikulin wrote:

On 14/05/2021 21:54, Utkarsh Singh wrote:
On 2021-05-13, 00:08 +0700, Maxim Nikulin wrote:

Comma is decimal separator for es_ES, de_DE, ru_RU, etc. The point is
that order in which separator candidates are tried should depend on
active locale.

I am willing to work on this problem but before this can you identify
any other locale with similar problem or a resource from where I can
information's about locale.

I do not think list of locales should be hard coded. I am not familiar
with elisp enough to tell you if locale properties such as decimal
separator are exposed through some function. I expect, it is quite
probable. As a last measure, some number, e.g. 0.5 or 1.5 could be
formatted using a locale-aware function and result string could be
checked if it contains ",".

Can you test this function:

(defun org-table--comma-as-decimal-sep ()
   "Return nil or 2 if separator is dot or comma respectively."
   (string-search "," (format "%f" 10)))

No, it does not work. `format' always uses dot. It is reasonable when e.g. during writing a config file or during data exchange when locales must be ignored.

I was too optimistic. I did not expect that support of locales are so poor in Emcacs. I do not see any traces of localeconv(3) in sources that would allow to get value of decimal_point directly.

Numbers are forced to use "C" locale and I have not noticed any way to override it. Initial settings:

http://git.savannah.gnu.org/cgit/emacs.git/tree/src/emacs.c#n1490

http://git.savannah.gnu.org/cgit/emacs.git/tree/src/emacs.c#n2861

setlocale (LC_NUMERIC, "C");

To test I am using:
$ LANG=de_DE.UTF-8 emacs -Q

But I am getting this as warning:
(process:1787): Gtk-WARNING **: 15:40:49.375: Locale not supported by C library.
        Using the fallback 'C' locale.

You get this error due to you have not generated this locale. On debian & ubuntu

dpkg-reconfigure locales

allows to select desired locales and performs all necessary actions.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]