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.")