reddit / emacs

error indenting region -- anyone else?

titaniumbones · 2022-09-14 16:08
For some time now I haven't been able to indent more than one line at a time in any buffer. I'm running a fairly recent emacs 29 from git. Attempts indent give me this error: ``` Indenting region... Wrong number of arguments: #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_22>, 2 ``` It took me a while to trace back, but I think the error is in indent-according-to-mode (copied below). The failing line, **I think**, is `(funcall indent-line-function)`. However, I can run `M-: (funcall indent-line-function)` without issues. Wondering if anyone else has seen the same thing? For reference, here is the definiton of `indent-according-to-mode` ``` (defun indent-according-to-mode (&optional inhibit-widen) "Indent line in proper way for current major mode. Normally, this is done by calling the function specified by the variable `indent-line-function'. However, if the value of that variable is present in the `indent-line-ignored-functions' variable, handle it specially (since those functions are used for tabbing); in that case, indent by aligning to the previous non-blank line. Ignore restriction, unless the optional argument INHIBIT-WIDEN is non-nil." (interactive) (save-restriction (unless inhibit-widen (widen)) (syntax-propertize (line-end-position)) (if (memq indent-line-function indent-line-ignored-functions) ;; These functions are used for tabbing, but can't be used for ;; indenting. Replace with something ad-hoc. (let ((column (save-excursion (beginning-of-line) (if (bobp) 0 (beginning-of-line 0) (if (looking-at "[ \t]*$") 0 (current-indentation)))))) (if (<= (current-column) (current-indentation)) (indent-line-to column) (save-excursion (indent-line-to column)))) ;; The normal case. (funcall indent-line-function)))) ``` Here is the backtrace: ``` Debugger entered--Lisp error: (wrong-number-of-arguments #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_22> 2) #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_22>((closure (t) (&optional inhibit-widen) "Indent line in proper way for current major mode.\nNormally, this is done by calling the function specified by the\nvariable `indent-line-function'. Ho..." (interactive) (edebug-enter 'indent-according-to-mode (list inhibit-widen) #'(lambda nil (edebug-after (edebug-before 0) 53 (save-restriction (edebug-after ... 5 ...) (edebug-after ... 9 ...) (edebug-after (edebug-before 10) 52 (if (edebug-after (edebug-before 11) 14 (memq (edebug-after 0 12 indent-line-function) (edebug-after 0 13 indent-line-ignored-functions))) (edebug-after (edebug-before 15) 48 (let ((column (edebug-after (edebug-before 16) 31 (save-excursion ... ...)))) (edebug-after (edebug-before 32) 47 (if (edebug-after (edebug-before 33) 38 (<= ... ...)) (edebug-after (edebug-before 39) 41 (indent-line-to ...)) (edebug-after (edebug-before 42) 46 (save-excursion ...)))))) (edebug-after (edebug-before 49) 51 (funcall (edebug-after 0 50 indent-line-function)))))))))) t) apply(#<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_22> (closure (t) (&optional inhibit-widen) "Indent line in proper way for current major mode.\nNormally, this is done by calling the function spe..." (interactive) (edebug-enter 'indent-according-to-mode (list inhibit-widen) #'(lambda nil (edebug-after (edebug-before 0) 53 (save-restriction (edebug-after (edebug-before 1) 5 (unless (edebug-after 0 2 inhibit-widen) (edebug-after (edebug-before 3) 4 (widen)))) (edebug-after ... 9 ...) (edebug-after (edebug-before 10) 52 (if (edebug-after (edebug-before 11) 14 (memq (edebug-after 0 12 indent-line-function) (edebug-after 0 13 indent-line-ignored-functions))) (edebug-after (edebug-before 15) 48 (let ((column (edebug-after (edebug-before 16) 31 (save-excursion ... ...)))) (edebug-after (edebug-before 32) 47 (if (edebug-after (edebug-before 33) 38 (<= ... ...)) (edebug-after (edebug-before 39) 41 (indent-line-to (edebug-after 0 40 column))) (edebug-after (edebug-before 42) 46 (save-excursion ...)))))) (edebug-after (edebug-before 49) 51 (funcall (edebug-after 0 50 indent-line-function)))))))))) t) indent-according-to-mode(t) (or (and (bolp) (eolp)) (indent-according-to-mode t)) ```
meain · 2022-09-14 19:11
I'm not fully certain this is the issue, but you might wanna delete the builds done by native comp and let it rebuild everything.
lstrang · 2022-09-23 12:59
For what it's worth, I saw this problem, but it seems to have gone away after I recompiled emacs after upgrading ubuntu, which has the effect, as @meain suggests, of re-compiling the .eln files.