Variable: lua--left-shifter-regexp
lua--left-shifter-regexp is a variable defined in lua-mode.el.gz.
Value
"\\(?1:\\_<local[[:blank:]]+\\)function\\_>\\|\\(?1:\\_<[_[:alnum:]]+\\(?:\\.[_[:alnum:]]+\\)*\\(?::[_[:alnum:]]+\\)?\\_>[[:blank:]]*\\)[({]\\|\\(?1:.*[^<->~]=[[:blank:]]*\\|\\<return\\>[[:blank:]]*\\)\\(?:{\\|function\\|(\\|\\(?1:\\_<[_[:alnum:]]+\\(?:\\.[_[:alnum:]]+\\)*\\(?::[_[:alnum:]]+\\)?\\_>[[:blank:]]*\\)[({]\\)"
Documentation
Regular expression that matches left-shifter expression.
Left-shifter expression is defined as follows. If a block follows a left-shifter expression, its contents & block-close token should be indented relative to left-shifter expression indentation rather then to block-open token.
For example:
-- local a = is a left-shifter expression
-- function is a block-open token
local a = function()
-- block contents is indented relative to left-shifter
foobarbaz()
-- block-end token is unindented to left-shifter indentation
end
The following left-shifter expressions are currently handled:
1. local function definition with function block, begin-end
2. function call with arguments block, () or {}
3. assignment/return statement with
- table constructor block, {}
- function call arguments block, () or {} block
- function expression a.k.a. lambda, begin-end block.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/lua-mode.el.gz
(defconst lua--left-shifter-regexp
(eval-when-compile
(rx
;; This regexp should answer the following questions:
;; 1. Is there a left shifter regexp on that line?
;; 2. Where does block-open token of that left shifter reside?
(or (seq (group-n 1 symbol-start "local" (+ blank)) "function" symbol-end)
(seq (group-n 1 (eval lua--function-name-rx) (* blank)) (any "{("))
(seq (group-n 1 (or
;; Assignment statement prefix
(seq (* nonl) (not (any "<=>~")) "=" (* blank))
;; Return statement prefix
(seq word-start "return" word-end (* blank))))
;; Right hand side
(or "{"
"function"
"("
(seq (group-n 1 (eval lua--function-name-rx) (* blank))
(any "({")))))))
"Regular expression that matches left-shifter expression.
Left-shifter expression is defined as follows. If a block follows a
left-shifter expression, its contents & block-close token should be
indented relative to left-shifter expression indentation rather then to
block-open token.
For example:
-- `local a = ' is a left-shifter expression
-- `function' is a block-open token
local a = function()
-- block contents is indented relative to left-shifter
foobarbaz()
-- block-end token is unindented to left-shifter indentation
end
The following left-shifter expressions are currently handled:
1. local function definition with function block, begin-end
2. function call with arguments block, () or {}
3. assignment/return statement with
- table constructor block, {}
- function call arguments block, () or {} block
- function expression a.k.a. lambda, begin-end block.")