lua-mode icon indicating copy to clipboard operation
lua-mode copied to clipboard

Incorrect indentation.

Open amano-kenji opened this issue 1 year ago • 2 comments

neovim lua mode prefers

node_om:connect("object-added", function (node_om, node)
  -- If the node is added, print update.
  print("update")
  node:connect("params-changed", function (node, paramId)
    -- If the node's parameters changed, print update.
    print("update")
  end)
end)

emacs lua mode gives me

node_om:connect("object-added", function (node_om, node)
    -- If the node is added, print update.
    print("update")
    node:connect("params-changed", function (node, paramId)
        -- If the node's parameters changed, print update.
        print("update")
    end)
end)

although lua indent level is 2. It is giving me the indent level of 4.

amano-kenji avatar Jan 30 '24 02:01 amano-kenji

I investigated a bit with a smaller example.

With:

(setq lua-indent-level 2)
(setq lua-indent-nested-block-content-align nil)

and starting with the sample code:

fun("sample", function (a, b)
print("hi")
end)

and point at the beginning of the second line (the one that starts with text print("hi").

The result was:

fun("sample", function (a, b)
    print("hi")
end)

The result was an indentation by 4 spaces here and I think the expectation is that it should be 2 spaces.

I think this reproduces the reported behavior.


I tried tracing execution of lua-indent-line with edebug to see why the result was 4.

Roughly the overall flow appears to be:

I don't understand the details, but perhaps the above helps a bit with investigation (^^;

Also, this issue looked somewhat similar.

FWIW, I used Emacs 29.2 and it appears I'm using d074e413 of lua-mode.

sogaiu avatar Feb 23 '24 16:02 sogaiu

That's because function (a, b) adds two spaces to the indentation on top of fun which adds two spaces.

In emacs lua mode, indentation adds up. Indentation should not add up.

amano-kenji avatar Feb 24 '24 00:02 amano-kenji