From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Gustaf Waldemarson Newsgroups: gmane.emacs.bugs Subject: bug#29645: Feature Request: Locale aware formatting Date: Sun, 10 Dec 2017 16:03:52 +0100 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" X-Trace: blaine.gmane.org 1512918313 32682 195.159.176.226 (10 Dec 2017 15:05:13 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 10 Dec 2017 15:05:13 +0000 (UTC) To: 29645@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Dec 10 16:05:09 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eO3AD-0008L0-6x for geb-bug-gnu-emacs@m.gmane.org; Sun, 10 Dec 2017 16:05:09 +0100 Original-Received: from localhost ([::1]:44965 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eO3AK-0002iD-J9 for geb-bug-gnu-emacs@m.gmane.org; Sun, 10 Dec 2017 10:05:16 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:57490) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eO3AD-0002hx-4v for bug-gnu-emacs@gnu.org; Sun, 10 Dec 2017 10:05:10 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eO3A6-0002ZO-KJ for bug-gnu-emacs@gnu.org; Sun, 10 Dec 2017 10:05:09 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:46821) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eO3A6-0002ZF-FY for bug-gnu-emacs@gnu.org; Sun, 10 Dec 2017 10:05:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1eO3A6-0006aE-5S for bug-gnu-emacs@gnu.org; Sun, 10 Dec 2017 10:05:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Gustaf Waldemarson Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 10 Dec 2017 15:05:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 29645 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.151291824825238 (code B ref -1); Sun, 10 Dec 2017 15:05:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 10 Dec 2017 15:04:08 +0000 Original-Received: from localhost ([127.0.0.1]:55502 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eO39E-0006Z0-4f for submit@debbugs.gnu.org; Sun, 10 Dec 2017 10:04:08 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:38060) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eO39C-0006YW-Fp for submit@debbugs.gnu.org; Sun, 10 Dec 2017 10:04:07 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eO395-0001aQ-UO for submit@debbugs.gnu.org; Sun, 10 Dec 2017 10:04:01 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:40307) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eO395-0001a6-RG for submit@debbugs.gnu.org; Sun, 10 Dec 2017 10:03:59 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:57263) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eO393-0002b3-Qw for bug-gnu-emacs@gnu.org; Sun, 10 Dec 2017 10:03:59 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eO392-0001Vy-3R for bug-gnu-emacs@gnu.org; Sun, 10 Dec 2017 10:03:57 -0500 Original-Received: from mail-wm0-x235.google.com ([2a00:1450:400c:c09::235]:43847) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eO391-0001UD-Oq for bug-gnu-emacs@gnu.org; Sun, 10 Dec 2017 10:03:56 -0500 Original-Received: by mail-wm0-x235.google.com with SMTP id n138so10208660wmg.2 for ; Sun, 10 Dec 2017 07:03:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=2kXRsIL2YorxDwHs+QcCAEUGQrNf8kJGW4O0MLGQnPI=; b=lUoOg0oodiTbn7S/5q643pYOeB3lOXkco+fWtK8OpWWDoiHS8OlTiGV1krr++AbcgM j2kYHAQQhekJmFUwk2FvkhtoN4vUb6eLiaC8XET2yTL76aWCYEd1Mz9B2IHLtLrEEUsK vm/63WTP5m4yGmJDr46LYHk5H5d8gE6GNc2/RfuW/luerMs9F+Zwff7oGpB6GjzKgWBc eZpyZ9PYCZ5pA+B/ewXCVTMcRbClyo3sietCI4+ax3gSbiMmKRyxrdPKuq0UtPXPhPw3 Co17Non0UOfEoHAQPjuCrYJSkVioPl1x7SazVqwDGsshv+sboDvzcjPwuyL5CrpMpN4b olLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=2kXRsIL2YorxDwHs+QcCAEUGQrNf8kJGW4O0MLGQnPI=; b=KVtBdWBGaiL3y48JkJSt8Cu3ZExB98eveK17Ue0vkwBds/4sU5hp9dLYh5CRHQR+Lp d9lMi0LZATrGguvKiIXD92s0ohhvqDaswMsnpXvJlJvb2nLoFxDHp3T7jtzOKq2WS1Qx 2go+QTS9HhBntIe/+LX7GhJ8EJN7JuzF/h7vUHHjg1H8UU30TWDHs/mQ64fAqWvEId7a iuheXPxzjXZ2mg6IyPhYLwzEpXfAVGAR9L6nN07xfSLCfK9ftoMSaehMvTQbQeVgdT+x Xc6v1gDCSgreo4F/Nfg/vHXNwEiv6IajsRixVpncaqK96JFK1XDyQaY5x2atYv03TIq6 djow== X-Gm-Message-State: AJaThX7xyWxRtcV6uwanXv2N2Mns46jGFl9q3LV16NGei9D4FyAIGKbj GVdDn76USbKAMgN0UzL6tRrDGyIdXjfvSHa2iweLot+I X-Google-Smtp-Source: AGs4zMYCTOg7J1JqC06lh630yRRhZyzCMDYvyzVusmuDzPzEQ5/tquoNWwArXYBddtqFL/RoFO+oP1W0UxVy5JzHg04= X-Received: by 10.80.135.26 with SMTP id i26mr58313770edb.31.1512918233529; Sun, 10 Dec 2017 07:03:53 -0800 (PST) Original-Received: by 10.80.144.186 with HTTP; Sun, 10 Dec 2017 07:03:52 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:140900 Archived-At: Hello, A while ago I started looking for some simple way of writing numbers correctly formatted to the locale. Specifically, I wanted the output to use the locale's thousands' grouping characters, if specified. To my knowledge, there's no simple way of doing this without involving an external process. Nowadays however, modern versions of `printf` and other formatting functions support the ' (single-quote) flag for various number specifiers. E.g., my Bash `printf` can do this: $ LC_NUMERIC="sv_SE.utf8" printf "%'d\n" 1000000 1 000 000 $ LC_NUMERIC="en_US.utf8" printf "%'d\n" 1000000 1,000,000 I think it would be very useful if `format` and similar formatting functions implemented this flag as a new feature. Regards, Gustaf In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of 2017-12-10 built on ShadowX Repository revision: ab203e36d5f84a99b6d4b04f1a22ba028be750e3 System Description: Ubuntu 17.04 Recent messages: uncompressing emacsbug.el.gz...done Mark set Mark saved where search started When done with a buffer, type C-x # split-window: Attempt to split minibuffer window Back to top level Configuring package markdown-mode...done When done with a buffer, type C-x # Quit Making completion list... [2 times] Configured using: 'configure --prefix=/home/xaldew/.local '--program-transform-name=s/^ctags$/ctags.emacs/'' Configured features: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS NOTIFY GNUTLS LIBXML2 FREETYPE XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 LCMS2 Important settings: value of $LANG: sv_SE.UTF-8 locale-coding-system: utf-8-unix Major mode: Markdown Minor modes in effect: poly-markdown-mode: t orgtbl-mode: t orgstruct-mode: t gnus-desktop-notify-mode: t diff-auto-refine-mode: t global-git-commit-mode: t async-bytecomp-package-mode: t beacon-mode: t flyspell-mode: t flycheck-pos-tip-mode: t projectile-mode: t hes-mode: t global-linum-mode: t linum-mode: t yas-global-mode: t yas-minor-mode: t global-company-mode: t company-mode: t global-anzu-mode: t anzu-mode: t perspeen-mode: t global-atomic-chrome-edit-mode: t shell-dirtrack-mode: t global-undo-tree-mode: t undo-tree-mode: t which-key-mode: t anyclip-mode: t override-global-mode: t electric-pair-mode: t save-place-mode: t global-subword-mode: t subword-mode: t show-paren-mode: t winner-mode: t global-auto-revert-mode: t xterm-mouse-mode: t savehist-mode: t ido-everywhere: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: None found. Features: (shadow markdown-mode poly-markdown polymode poly-base polymode-weave polymode-export polymode-debug polymode-methods poly-lock polymode-compat polymode-classes eieio-compat polymode-core eieio-custom eieio-base cl emacsbug ace-window eieio-opt speedbar sb-image ezimage dframe help-fns radix-tree ielm pp shr svg dom browse-url flow-fill qp misearch multi-isearch sort gnus-async gnus-bcklg gnus-ml disp-table gnus-cite bbdb-message sendmail mail-extr org-rmail org-mhe org-irc org-info org-gnus org-docview doc-view jka-compr image+ image-file image-mode org-bibtex bibtex org-bbdb org-w3m org-table org-element avl-tree generator ob-latex ob-plantuml ob-org ob-shell ob-gnuplot ob-python ob-ditaa ob-dot org org-macro org-footnote org-pcomplete org-list org-faces org-entities noutline outline org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs org-loaddefs holidays hol-loaddefs cal-menu calendar cal-loaddefs nnir gnus-topic cursor-sensor utf-7 epa-file nnfolder gnus-desktop-notify alert log4e notifications dbus gntp gnus-demon bbdb-gnus bbdb-mua bbdb-com nnml gnus-delay gnus-draft gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum nndraft nnmh gnus-group gnus-undo ffmpeg gnus-fun gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range gnus-win gnus nnheader mm-archive network-stream starttls url-cache debbugs-gnu debbugs soap-client url-http tls gnutls url-auth url-gw nsm url url-proxy url-privacy url-expand url-methods url-history mailcap rng-xsd rng-dt rng-util xsd-regexp xml magit-obsolete magit-blame magit-stash magit-bisect magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-branch magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log magit-diff smerge-mode diff-mode magit-core magit-autorevert magit-process magit-margin magit-mode magit-git magit-section magit-popup git-commit magit-utils crm log-edit message rmc puny rfc822 mml mml-sec epa derived epg gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log with-editor async-bytecomp async dired dired-loaddefs term/tmux term/xterm xterm smart-mode-line-dark-theme smart-mode-line rich-minority beacon server flymake-proc flymake warnings auto-complete-config auto-complete form-feed paredit nameless lisp-mnt flyspell ispell whitespace flycheck-irony irony-diagnostics irony irony-iotask flycheck-popup-tip popup flycheck-pos-tip pos-tip flycheck find-func subr-x dash rainbow-delimiters projectile grep ibuf-ext ibuffer ibuffer-loaddefs ggtags compile ewoc highlight-escape-sequences linum yasnippet company-oddmuse company-keywords company-etags etags xref project company-gtags company-dabbrev-code company-dabbrev company-files company-capf company-cmake company-xcode company-clang company-semantic company-eclim company-css company-nxml company-bbdb company-template company pcase anzu thingatpt perspeen perspeen-tab powerline powerline-separators powerline-themes atomic-chrome websocket url-cookie url-domsuf url-util bindat let-alist json map color-theme-approximate color tramp tramp-compat tramp-loaddefs trampver ucs-normalize shell pcomplete comint ansi-color parse-time format-spec delim-col hydra-examples windmove rect hydra lv bbdb bbdb-site timezone cus-edit cus-start cus-load wid-edit ace-link avy google-c-style undo-tree diff cl-extra help-mode which-key advice anyclip-mode diminish use-package bind-key easy-mmode finder-inf autoinsert tex-site edmacro kmacro rx info package epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars local-autoloads cwarn cc-mode cc-fonts easymenu cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs elec-pair saveplace cap-words superword subword time-date paren winner ring autorevert filenotify xt-mouse tango-dark-theme savehist ido seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib keybinds terminals mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type 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 elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic 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 charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 912071 71062) (symbols 48 60551 31) (miscs 40 1314 647) (strings 32 201909 14533) (string-bytes 1 6467819) (vectors 16 95875) (vector-slots 8 1454683 27488) (floats 8 3684 1498) (intervals 56 22266 712) (buffers 992 44))