I don't mind if the occasional code line runs long. For example, the Shopify ruby standard allows lines of 120. But I want comments to be restricted to the first 78 lines or so. Is there any way in a programming major mode to have a different fill column for comment lines than for code line?

  • Not that I know of. But it's easy to just C-x f to change the fill-column here or there. Then M-q to re-fill.
    – Drew
    Sep 11, 2020 at 22:31
  • What are fill-paragraph-function and fill-forward-paragraph-function set to? Emacs actually has some logic for filling comments differently than the code, but it may not be relevant in your case, if ruby-mode overrides the default behavior (which it probably does). Anyways, my approach would be to look for ruby-mode's function to fill paragraph, and see if it is possible to extend / replace it with something of your own design that deals with comments the way you want.
    – wvxvw
    Sep 13, 2020 at 6:58

1 Answer 1


OK. With some prodding from @wvxvw, I looked at some source code, though the code for fill-paragraph rather than ruby-mode. There is a function for filling comments, but it does not take a fill-column parameter. So, I tried the following advice, which appears to do the trick:

  (defvar ded:fill-column-for-progs 78)

  (defun ded:prog-fill-paragraph (orig-fun &rest args)
    (let ((fill-column ded:fill-column-for-progs))
      (apply orig-fun args)))

  (advice-add 'fill-comment-paragraph :around #'ded:prog-fill-paragraph)

The ded: is just my personal prefix. So far, so good. It even uses justification when used with the universal argument.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.