Subject: bug#76641: 30.1; M-q fails in makefile-mode

From: Benjamin Riefenstahl <[email-masked]>
Date: Fri, 28 Feb 2025 14:38:55 +0100

Since Emacs 30, M-q does not work in makefiles for my most common use
case.

Reproduction:

* Create a file "Makefile" with this content (without the indentation)

    v = 1 2 3 4 5 \
        6 7 8 9 0

* Put point inside that expression and press M-q.

* Expected result:

    v = 1 2 3 4 5 6 7 8 9 0

* Actual result: No change.

Explanation:

In Emacs 29, M-q was bound to fill-paragraph.  In Emacs 30 it is bound
to prog-fill-reindent-defun.

Why that function does not work, I am not sure.  It seems to check
tree-sitter before falling back to fill-paragraph, but the fallback does
not happen, at least not in the function prog-fill-reindent-defun
itself.

As a workaround I am now binding M-q to fill-paragraph myself in
makefile-mode. 

------

In GNU Emacs 30.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38,
 cairo version 1.16.0) of 2025-02-20 built on arrian
Repository revision: 92e96a117525885bc2c725600aca3683e4b28b7a
Repository branch: emacs-30
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Debian GNU/Linux 12 (bookworm)

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

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

Major mode: Summary

Minor modes in effect:
  desktop-save-mode: t
  display-time-mode: t
  server-mode: t
  xclip-mode: t
  xterm-mouse-mode: t
  delete-selection-mode: t
  cua-mode: t
  display-battery-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: 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:
~/Projects/ttf-mode/arc-mode-compat hides ~/emacs/arc-mode-compat
/home/benny/.emacs.d/elpa/git-commit-20240730.1355/git-commit hides /home/benny/.emacs.d/elpa/magit-20250125.1132/git-commit
/home/benny/.emacs.d/elpa/transient-20250122.1219/transient hides /usr/local/share/emacs/30.1/lisp/transient

Features:
(shadow emacsbug flow-fill shortdoc cl mailalias smtpmail bbdb-message
gnus-search eieio-opt speedbar ezimage dframe dictionary
external-completion dictionary-connection display-line-numbers misearch
multi-isearch cl-print comp-run comp-common finder finder-inf find-func
thingatpt help-fns sort smiley gnus-cite shr-color color mail-extr
textsec uni-scripts idna-mapping ucs-normalize uni-confusable
textsec-check gnus-async gnus-bcklg gnus-dup gnus-ml pp gnus-topic
jka-compr mm-archive url-http url-gw url-cache url-auth qp nndraft nnmh
nnfolder bbdb-gnus bbdb-mua network-stream nsm gnus-agent gnus-srvr
gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view
mml-smime smime gnutls dig nntp gnus-cache gnus-sum shr pixel-fill
kinsoku url-file svg message-x pop3 gnus-group gnus-undo nnrss dom
mm-url bbdb-com crm bbdb bbdb-site timezone gnus-start gnus-dbus
gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time iso8601
gnus-spec gnus-int gnus-range message sendmail yank-media puny rfc822
mml mml-sec epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus-win gnus nnheader gnus-util mail-utils range mm-util
mail-prsvr wid-edit view mule-util imenu sh-script rx smie treesit
executable time-date desktop frameset highline benny-calendar-cfg
ange-ftp generic-x autoinsert cc-mode cc-fonts cc-guess cc-menus
cc-styles cc-align cc-cmds cc-engine cc-vars cc-defs ps-print
ps-print-loaddefs lpr advice cl-extra help-mode dired dired-loaddefs
derived benny-x-clipboard disp-table time server protbuf xclip
term/xterm xterm xt-mouse cal-china lunar solar cal-dst cal-bahai
cal-islam cal-hebrew holidays holiday-loaddefs vc-git diff-mode
track-changes easy-mmode vc-dispatcher diary-lib diary-loaddefs cal-menu
calendar cal-loaddefs delsel grep compile text-property-search comint
ansi-osc ansi-color ring cua-base cus-load format-spec battery dbus xml
.loaddefs benny-tools autoload loaddefs-gen radix-tree lisp-mnt
bbdb-autoloads crontab-mode-autoloads csv-mode-autoloads
debbugs-autoloads elpher-autoloads enwc-autoloads git-commit-autoloads
graphql-autoloads graphql-doc-autoloads graphql-mode-autoloads
jsonian-autoloads lsp-java-autoloads dap-mode-autoloads
lsp-docker-autoloads lsp-treemacs-autoloads lsp-ui-autoloads
lsp-mode-autoloads f-autoloads magit-autoloads pcase
magit-section-autoloads markdown-preview-mode-autoloads
markdown-mode-autoloads mastodon-autoloads monky-autoloads nov-autoloads
esxml-autoloads osm-autoloads persist-autoloads request-autoloads
sly-autoloads sql-indent-autoloads sqlup-mode-autoloads telega-autoloads
tp-autoloads transient-autoloads treemacs-autoloads cfrs-autoloads
posframe-autoloads ht-autoloads hydra-autoloads pfuture-autoloads
ace-window-autoloads avy-autoloads s-autoloads dash-autoloads
vc-fossil-autoloads visual-fill-column-autoloads websocket-autoloads
info with-editor-autoloads x509-mode-autoloads xclip-autoloads
yaml-autoloads yaml-imenu-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 icons
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 touch-screen 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 gtk
x-toolkit xinput2 x multi-tty move-toolbar make-network-process
native-compile emacs)

Memory information:
((conses 16 620722 448256) (symbols 48 28797 71)
 (strings 32 161958 21500) (string-bytes 1 10817781)
 (vectors 16 69855) (vector-slots 8 1275932 255292)
 (floats 8 1335 8852) (intervals 56 3909 794) (buffers 992 41))