Commit Graph

26 Commits

Author SHA1 Message Date
Hugo Musso Gualandi
c26fb65ed1 lua.kak: Add some test cases, and also fix a bug 2021-09-26 11:19:58 -03:00
Hugo Musso Gualandi
aa1a280309 lua.kak: more accurate "end" insertion
- Also insert "end" after "do", "else" and "elseif"
- Do not insert "end" after strings or comments containing keywords
- Only insert "end" if the block is empty

An example of the last item is if we want to add a new line to the start
of an unclosed block that already contains statements. @ is the cursor.

    -- before
    if a then@
        x = 1
        y = 2

    -- after
    if a then
        @
    end
        x = 1
        y = 2

In this case, inserting the "end" before the statements is probably not
what the programmer wants. It might make more sense to insert the "end"
after the statements, but that is potentially confusing due to spooky
action at a distance. I think the least confusing thing to do in this
situation is to not insert the "end".
2021-09-11 01:29:01 -03:00
Hugo Musso Gualandi
8755fc679e lua.kak: improve the indentation logic
This commit makes several improvements to the Lua indentation logic.

- Don't indent if the keyword is inside a string or comment
- Indent inside "do end"
- Indent inside "repeat until"
- Indent after a line ending with "{" or "("
- More accurate un-indentation for the "end" keyword

For the last point, previously we tried to match the indentation of the
starting keyword of the block.  However, sometimes this guessed wrong
and produced the wrong indentation, as the following example shows. The
new logic is to indent the "end" by one less level than the contents of
the block.

   while true do
      if false then
      end
      end -- This was incorrectly matched with the "if"
2021-09-11 01:27:41 -03:00
Hugo Musso Gualandi
ffc69544db lua.kak: use %[] instead of %{}
We will want to use unbalanced "{" and "}" in some of the rules.
To support that, let's use "%[]" instead.
2021-09-11 01:19:17 -03:00
Hugo Musso Gualandi
94b35a4071 lua.kak: remove some extra spaces 2021-09-11 01:18:49 -03:00
Hugo Musso Gualandi
4f0f3eefd0 Remove a duplicate highligher rule for _G/_ENV 2021-08-04 13:24:16 -03:00
Hugo Musso Gualandi
dc88220e4a Recognize and/or/not in a separate rule
This is the usual style
2021-08-04 13:24:16 -03:00
Hugo Musso Gualandi
be09ff4680 lua.kak: highlight and/or/not as operators 2021-08-04 13:24:16 -03:00
Hugo Musso Gualandi
d3d3c77ab9 lua.kak: highlight Lua 5.4 variable attributes 2021-08-04 13:24:16 -03:00
Hugo Musso Gualandi
3621a98170 lua.kak: Treat "local" as a normal keyword 2021-08-04 13:24:16 -03:00
Hugo Musso Gualandi
ceb3f55f3c lua.kak: the builtin is called _ENV, not _E
The Lua highlighting was highlighing `_E` instead of `_ENV`
2021-08-04 13:24:16 -03:00
Hugo Musso Gualandi
43d9f59fda lua.kak: keyword should have higher priority than function call
Currently, the "return" in `return {}` is highlighted as a function call, instead of being highlighted as a keyword
2021-08-04 13:24:16 -03:00
Maxime Coste
52087a506d Merge remote-tracking branch 'hugomg/rockspec-highlighting' 2021-07-30 07:37:36 +10:00
Hugo Musso Gualandi
52f7999705 Recognize ".rockspec" file extension as a Lua file
rockspec files are used by [Luarocks](https://luarocks.org/), the
most prominent package manager for Lua. Despite the different file
extension, these files are actually Lua files and should be syntax
highlighted as such.

For what it is worth, Neovim also does the same thing that I am doing in
this commit. They recognize both ".lua" and ".rockspec" as being Lua
files (and no other extensions, as far as I know).
2021-07-26 17:41:00 -03:00
Hugo Musso Gualandi
f440a1c109 Lua: insert comment prefix *after* the indent
This fixes a bug in how the Lua scripts handle new comment lines.
Currently if we have a comment that is indented, when we add a new line
it inserts the `--` prefix before the automatic indentation.

```
  --ABC
--  XYZ
```

After the fix, it correctly inserts the comment prefix after the
indentation:

```
  --ABC
  --XYZ
```

The solution I used is inspired by the ruby.kak script.
2021-07-13 13:28:30 -03:00
Johannes Altmanninger
eb3beff959 rc: make insertion hooks more consistent 2021-04-17 20:56:23 +02:00
cipharius
78a0b5e4c7 Improves Lua auto indent and end insertion
Current solution makes it difficult to use common Lua practices of having one-liner if statements and using anonymous functions.
New solution prevents auto-indentation and end insertion, if the previous line contains an "end" keyword.
It does not attempt to match each structure with corresponding end, since using multiple end keywords in single line is a very rare occurance in Lua.
2021-03-23 10:36:05 +02:00
SeerLite
3c3a4ec985 lua.kak: Correct -trim-indent hook and fix indent 2020-10-03 16:38:43 -03:00
Johannes Altmanninger
9a7d8df447 Avoid accidentally using environment variables in sh scopes
On the instances with altfile this was already the case, but this makes it more obvious.

Closes #3673
2020-08-24 19:01:05 +02:00
Mikhail Pogretskiy
57c62b2a10 rc lua: Improve indent hooks behavior, add '...' highlighting 2020-03-20 23:12:46 +07:00
Mikhail Pogretskiy
304f10bea2 rc lua: Improve syntax highlighting 2019-11-15 23:05:54 +07:00
Frank LENORMAND
21614cb06e src: Create a <semicolon> named key
This commit allows using the <semicolon> expansion in commands, instead
of `\;`.

It makes commands look more elegant, and prevents new-comers from
falling into the trap of using <a-;> without escaping the semicolon.
2019-10-22 11:02:06 +02:00
Olivier Perret
fac05f3ea0 [rc] Use 'fail' when the alternative file cannot be found
This makes it possible to implement a fallback strategy using 'try .. catch',
for cases where the alternative file is not stored in a subdirectory
2019-10-08 18:06:54 +02:00
Justin Frank
80ac46e09d Fixed many of the filetype support modules to not use BufSetOption to load 2019-04-09 20:54:19 -07:00
Justin Frank
c3f694a28f Modified base files to use modules 2019-04-08 17:02:44 -07:00
Alex Leferry 2
c0dccdd90d Add categories in rc/
Closes #2783
2019-03-21 01:06:16 +01:00