Thanks for the review. Attached patch fixes these and a few other little things. Mattias Engdegård writes: > Some observations about the recently added lua-mode.el: > > 394 "A regexp that matches Lua builtin functions & variables. > 395 > 396 This is a compilation of 5.1, 5.2 and 5.3 builtins taken from the > 397 index of respective Lua reference manuals.") > > Clearly meant as a doc string. Bracket error? Fixed. > 1266 (or > > This `or` has only a single operand. Simple oversight or indication of something worse? Looks like there used to be a second part but it got refactored up into the first part and the ‘or’ just hung around. > 1270 (save-excursion > 1271 (and (goto-char prev-line) > 1272 ;; Check last token of previous nonblank line > 1273 (lua-last-token-continues-p))))) > > `goto-char` never returns nil, but its presence as a condition > here suggest that the author may have thought otherwise. Removed the ‘and’ here. > (Line 996 is similar.) Wrapped it and the recursive call to lua-find-matching-token-word on the next line in progn to make it clear the goto-char is for side-effect and not return value. > 2099 for type = (if (string-match-p "\\`(E" msg) :error :warning) > > A regexp is overkill here; `string-prefix-p` is simpler. The plan is to merge the common parts between the lua modes. The lua-ts-mode flymake backend uses string-prefix-p there so I left this for now and it’ll get replaced with the lua-ts flymake code. > 1821 (while (re-search-forward "[\"'\\\t\\\n]" nil t) > > This regexp is a bit muddled; too many backslashes here. > You could even rewrite the whole function using `replace-regexp-in-string`, maybe > > (concat "'" > (replace-regexp-in-string > (rx (or ?\" ?' ?\t ?\n ?\\)) > (lambda (s) > (cdr (assq (aref s 0) '((?\" . "\\\"") > (?\\ . "\\\\") > (?\n . "\\n") > (?\t . "\\t") > (?' . "\\'"))))) > str t t) > "'")) > > without any need for a temporary buffer. That works.