Subject: 27.0.50; Format number as hexadecimal with hash-flag

From: Gustaf Waldemarson <[email-masked]>
Date: Thu, 7 Dec 2017 22:02:34 +0100

Hello,

I recently noticed that the `format` function behaves incorrectly when
formatting numbers as hexadecimal together with the hash-flag. E.g.,
following this recipe yields:

1. M-x ielm
2. Evaluate: (format "%#08x" #x10) -> "00000x10"

Typically Bash, C and other formatting implementations typically formats
this as "0x00000010", and I think Emacs should do the same in this case.

This seems to be present in a few different versions of Emacs, I've
tried it on 24.5.1 and 27.0.50 and they both behave the same.

Regards,
Gustaf

In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
 of 2017-11-29 built on ShadowX
Repository revision: 95369ac346d75a7b75bc2c5adf632cc4faa1241a
Windowing system distributor 'The X.Org Foundation', version 11.0.11903000
System Description:    Ubuntu 17.04

Recent messages:
scroll-down-command: Beginning of buffer
Mark set (rectangle mode)
When done with a buffer, type C-x #
Configuring package message...done
Configuring package git-commit...done
Configuring package magit...done [2 times]
When done with a buffer, type C-x # [2 times]
Making completion list... [2 times]
delete-backward-char: Text is read-only
Making completion list...

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: IELM

Minor modes in effect:
  diff-auto-refine-mode: t
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  beacon-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 sort bbdb-message mail-extr emacsbug sendmail ielm pp
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 mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader pcvs-util
add-log with-editor async-bytecomp async unfill org-rmail org-mhe
org-irc org-info org-gnus gnus-util rmail rmail-loaddefs rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mail-utils 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 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 markdown-mode noutline outline 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 546994 37401)
 (symbols 48 49359 3)
 (miscs 40 1210 530)
 (strings 32 135385 7494)
 (string-bytes 1 4760808)
 (vectors 16 81794)
 (vector-slots 8 1291186 11024)
 (floats 8 690 550)
 (intervals 56 2095 794)
 (buffers 992 109))