GNU bug report logs - #385
[PATCH] comment-indent doesn't respect comment-indent-function

Previous Next

Package: emacs;

Reported by: "Christopher J. Madsen" <cjm <at> cjmweb.net>

Date: Wed, 11 Jun 2008 17:20:04 UTC

Severity: minor

Tags: fixed, patch

Fixed in version 26.1

Done: npostavs <at> users.sourceforge.net

Bug is archived. No further changes may be made.

Full log


Message #46 received at control <at> debbugs.gnu.org (full text, mbox):

From: npostavs <at> users.sourceforge.net
To: Drew Adams <drew.adams <at> oracle.com>
Cc: 19740 <at> debbugs.gnu.org
Subject: Re: bug#19740: 25.0.50;
 Bad comment indentation by `C-M-q' in `emacs-lisp-mode'
Date: Wed, 14 Jun 2017 19:54:08 -0400
[Message part 1 (text/plain, inline)]
# I accidentally tagged this bug instead of #385 before
tags 385 + patch
quit

Drew Adams <drew.adams <at> oracle.com> writes:

> This is a regression introduced after Emacs 20 (perhaps after 21).
>
> Emacs should not indent the first `;;' comment line here by a space.
> That does no good and interferes with alignment of a multi-line
> comments and multiple separate comments that are on the same level.
>
> (let* ( ;; If FOOBAR then blah the blahdy blah and other blahs if blah,
>        ;; blah, or blah.  Unless, that is, blah, blah, or blah.
>        (the-tatas (bar-bar-toto-babar foo1 foo2 foo3))
>        ...)
>
> In Emacs 20, this is the result - no extra space inserted.  The two
> comment lines, which are logically at the same level, and in this case
> are part of a single multi-line comment, are aligned vertically.
>
> (let* (;; If FOOBAR then blah the blahdy blah and other blahs if blah,
>        ;; blah, or blah.  Unless, that is, blah, blah, or blah.
>        (the-tatas (bar-bar-toto-babar foo1 foo2 foo3))
>        ...)


This was introduced in [1: bdbe3a8995].  I think in most contexts, it
makes sense to put the space, but it definitely looks wrong in a lisp
let.  Here's patch to override the alignment for comments following an
open in paren in lisp modes.  It requires the patch I posted for #385.

[v1-0001-Don-t-put-whitespace-between-open-paren-and-comme.patch (text/x-diff, inline)]
From f314ec8ee3b99bb6adc5ee789ef07b8b834b5c57 Mon Sep 17 00:00:00 2001
From: Noam Postavsky <npostavs <at> gmail.com>
Date: Wed, 14 Jun 2017 00:13:06 -0400
Subject: [PATCH v1] Don't put whitespace between open paren and comment in
 Lisp modes (Bug#19740)

* lisp/emacs-lisp/lisp-mode.el (lisp-comment-indent): If current
line's code ends in open paren, set comment indentation exactly to
column following it.
(lisp-mode-variables): Set `comment-indent-function' to
`lisp-comment-indent'.
---
 lisp/emacs-lisp/lisp-mode.el | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 59db00d5f9..985b7513a3 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -602,6 +602,7 @@ (defun lisp-mode-variables (&optional lisp-syntax keywords-case-insensitive
   ;;(set (make-local-variable 'adaptive-fill-mode) nil)
   (setq-local indent-line-function 'lisp-indent-line)
   (setq-local indent-region-function 'lisp-indent-region)
+  (setq-local comment-indent-function #'lisp-comment-indent)
   (setq-local outline-regexp ";;;\\(;* [^ \t\n]\\|###autoload\\)\\|(")
   (setq-local outline-level 'lisp-outline-level)
   (setq-local add-log-current-defun-function #'lisp-current-defun-name)
@@ -735,9 +736,15 @@ (defalias 'common-lisp-mode 'lisp-mode)
 
 (autoload 'lisp-eval-defun "inf-lisp" nil t)
 
-;; May still be used by some external Lisp-mode variant.
-(define-obsolete-function-alias 'lisp-comment-indent
-    'comment-indent-default "22.1")
+(defun lisp-comment-indent ()
+  "Like `comment-indent-default', but don't put space after open paren."
+  (let ((pt (point)))
+    (skip-syntax-backward " ")
+    (if (eq (preceding-char) ?\()
+        (cons (current-column) (current-column))
+      (goto-char pt)
+      (comment-indent-default))))
+
 (define-obsolete-function-alias 'lisp-mode-auto-fill 'do-auto-fill "23.1")
 
 (defcustom lisp-indent-offset nil
-- 
2.11.1

[Message part 3 (text/plain, inline)]

[1: bdbe3a8995]: 2000-09-29 19:11:42 +0000
  (comment-indent-function): Use 0 for ;;; and %%%. (comment-indent): Make sure there's a space between code and comment[...]
  http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=bdbe3a8995c5f1dae126acd4be4872f6af687cd1

This bug report was last modified 7 years and 323 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.