From 0d2e239777c96e3b78a138bf3879b8ab9d735166 Mon Sep 17 00:00:00 2001 From: azufluup Date: Wed, 23 May 2018 21:08:59 +0100 Subject: [PATCH] Add electric dedent to lua mode The lua mode currently adds a level of indentation when opening up a new scope, but closing the scope doesn't remove a level. This change gives opening scope indents a respective dedent. --- mode/lua/lua.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mode/lua/lua.js b/mode/lua/lua.js index 0b19abd304..dcfafea1ac 100644 --- a/mode/lua/lua.js +++ b/mode/lua/lua.js @@ -64,8 +64,9 @@ CodeMirror.defineMode("lua", function(config, parserConfig) { "while", "repeat", "until", "for", "in", "local" ]); var indentTokens = wordRE(["function", "if","repeat","do", "\\(", "{"]); - var dedentTokens = wordRE(["end", "until", "\\)", "}"]); - var dedentPartial = prefixRE(["end", "until", "\\)", "}", "else", "elseif"]); + var dedentKeywords = ["end", "until", "\\)", "}", "else", "elseif"]; + var dedentTokens = wordRE(dedentKeywords); + var dedentPartial = prefixRE(dedentKeywords); function readBracket(stream) { var level = 0; @@ -148,6 +149,7 @@ CodeMirror.defineMode("lua", function(config, parserConfig) { return state.basecol + indentUnit * (state.indentDepth - (closing ? 1 : 0)); }, + electricInput: new RegExp("\\b" + dedentKeywords.join("|") + "\\b", "gi"), lineComment: "--", blockCommentStart: "--[[", blockCommentEnd: "]]"