Richard Lawrence <richard.lawre...@uni-tuebingen.de> writes:
> Tim Cross <theophil...@gmail.com> writes: > >> I'm running Emacs 28 and cannot reproduce the issue you observe. > > Hmm, the plot thickens! > >> Running emacs -Q I find M-j is bound to >> >> M-j runs the command default-indent-new-line (found in global-map), >> which is an interactive compiled Lisp function in ‘simple.el’. > > I definitely see the error in emacs -Q with > > GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.24, cairo > version 1.16.0) o> > which only contains Org 9.3, in my installation. So the problem has been > around at least that long, but only surfaced for me because the binding > of M-j changed between Emacs 26 and 27. > >> This binding is the same inside and outside of org mode. > > Yes, but inside Org mode, default-indent-new-line calls > org-comment-line-break-function (because it is the value of > comment-line-break-function), which is where the error originates. > > The last line of org-comment-line-break-function is: > > (insert-before-markers-and-inherit fill-prefix) > > and fill-prefix is nil, at least in all the contexts where I've tried > this. > > Since you're not seeing the error, could you please check in an Org > buffer whether: > > - comment-line-break-function is 'org-comment-line-break-function > - org-comment-line-break-function contains the line above (it should; > it's still there in the master branch) > - fill-prefix is nil when you type M-j? > I just checked this when running emacs -Q and get the following comment-line-break-function is a variable defined in ‘simple.el’. Its value is ‘org-comment-line-break-function’ Local in buffer test.org; global value is comment-indent-new-line Mode-specific function that line breaks and continues a comment. This function is called during auto-filling when a comment syntax is defined. The function should take a single optional argument, which is a flag indicating whether it should use soft newlines. This variable may be risky if used as a file-local variable. and fill-prefix is fill-prefix is a variable defined in ‘simple.el’. Its value is nil String for filling to insert at front of new line, or nil for none. Automatically becomes buffer-local when set. This variable is safe as a file local variable if its value satisfies the predicate ‘string-or-null-p’. You can customize this variable. Probably introduced at or before Emacs version 1.7. and I don't get any error with M-j and cannot reproduce the issue you are encountering. . Emacs is GNU Emacs 28.0.60 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.30, cairo version 1.16.0) of 2021-11-30 and org version is Org mode version 9.5.1 (release_9.5.1-11-g96d91b @ /usr/local/share/emacs/28.0.60/lisp/org/) Looking at the git log, I can only find these messages relating to default-indent-new-line commit b41f31d2b60269bd0e7addd1081f3738f91e76bc Author: Lars Ingebrigtsen <la...@gnus.org> Date: Wed Aug 4 10:03:12 2021 +0200 Make `M-j' work reliably if `comment-auto-fill-only-comments' is set * lisp/simple.el (default-indent-new-line): Force breaking the line when called interactively (bug#49849). (Perhaps the interactive command should be rebound and call this function instead...) commit 8a11e430ec261c08cc928a7a5b05ee1027f50368 Author: Dmitry Gutov <dgu...@yandex.ru> Date: Thu Jun 27 16:57:47 2019 +0200 Use `default-indent-new-line' instead of `indent-new-comment-line' * lisp/simple.el (default-indent-new-line): Doc string fix. * lisp/textmodes/refill.el (refill-post-command-function): Make default-indent-new-line work as indent-new-comment-line. * lisp/textmodes/refill.el (refill-post-command-function): Bind `M-C-j' and `M-j' to default-indent-new-line instead of indent-new-comment-line to allow overriding via `comment-line-break-function' (bug#12413). commit 0b727f9d087d950c0d6614c9ec743a935d4e5fc7 Author: Richard M. Stallman <r...@gnu.org> Date: Tue Aug 7 03:04:23 2007 +0000 (default-indent-new-line): New function. It calls comment-line-break-function if there are comments. (do-auto-fill): Use that. which indicates the function was added in 2007 by RMS and made the default for M-j in 2019. Based on your report of having org 9.3, my suspicion is that your org version is too old for the current Emacs versions (since the change in 2019 to use default-indent-new-line for C-M-j and M-j. I don't think this is a bug in current Org or Emacs. The other possibility is that you have a broken "mixed" installation of org. This can easily occur if org is upgraded when it has already been loaded into the Emacs instance when the upgrade is performed. It is critically important to ensure Org has not been loaded before attempting to do an upgrade. Unfortunately, it is very easy to not realise that something in your init file is loading org. One of the advantages of using use-package is that you can configure things so that org is not loaded until you actually open an org file, which makes it easier to start a new Emacs instance and perform the upgrade in a clean environment. Where people often come undone is when some other package they are using loads org because of an internal dependency.