[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/lua-mode 397b883 236/468: Send code to inferior process vi
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/lua-mode 397b883 236/468: Send code to inferior process via loadstring to avoid tempfile issues |
Date: |
Thu, 5 Aug 2021 04:58:44 -0400 (EDT) |
branch: elpa/lua-mode
commit 397b883209648dc7e34903bc82b8c8ee0e4c8f3a
Author: immerrr <immerrr+lua@gmail.com>
Commit: immerrr <immerrr+lua@gmail.com>
Send code to inferior process via loadstring to avoid tempfile issues
---
lua-mode.el | 54 +++++++++++++++++++++++++++++++++---------------------
1 file changed, 33 insertions(+), 21 deletions(-)
diff --git a/lua-mode.el b/lua-mode.el
index 336e93a..6c038f3 100644
--- a/lua-mode.el
+++ b/lua-mode.el
@@ -1525,19 +1525,32 @@ This function just searches for a `end' at the
beginning of a line."
ret))
(defvar lua-process-init-code
- (concat "function luamode_dofile(fname, displayname)"
- " local f = assert(io.open(fname))"
- " local d = f:read('*all')"
- " f:close()"
- " x, e = loadstring(d, '@'..displayname)"
- " if fname ~= displayname then"
- " os.remove(fname)"
- " end"
- " if e then"
- " error(e)"
- " end"
- " return x()"
- "end"))
+ (mapconcat
+ 'identity
+ '("function luamode_loadstring(str, displayname, lineoffset)"
+ " if lineoffset > 1 then"
+ " str = string.rep('\\n', lineoffset - 1) .. str"
+ " end"
+ ""
+ " x, e = loadstring(str, '@'..displayname)"
+ " if e then"
+ " error(e)"
+ " end"
+ " return x()"
+ "end")
+ " "))
+
+(defun lua-make-lua-string (str)
+ "Convert string to Lua literal."
+ (save-match-data
+ (with-temp-buffer
+ (insert str)
+ (goto-char (point-min))
+ (while (re-search-forward "[\"'\\\n]" nil t)
+ (if (string= (match-string 0) "\n")
+ (replace-match "\\\\n")
+ (replace-match "\\\\\\&" t)))
+ (concat "'" (buffer-string) "'"))))
(defun lua-start-process (&optional name program startfile &rest switches)
"Start a lua process named NAME, running PROGRAM.
@@ -1620,14 +1633,13 @@ If `lua-process' is nil or dead, start a new process
first."
(interactive "r")
(let* ((lineno (line-number-at-pos start))
(lua-tempfile (lua-make-temp-file "lua-"))
- (lua-file (or (buffer-file-name) lua-tempfile))
- (command (format "luamode_dofile('%s', '%s')"
- (replace-regexp-in-string "\\\\" "\\\\\\\\"
lua-tempfile)
- (replace-regexp-in-string "\\\\" "\\\\\\\\"
lua-file))))
-
- (write-region (concat (make-string (1- lineno) ?\n)
- (buffer-substring-no-properties start end)) nil
lua-tempfile)
-
+ (lua-file (or (buffer-file-name) (buffer-name)))
+ (region-str (buffer-substring-no-properties start end))
+ (command
+ (format "luamode_loadstring(%s, %s, %s)"
+ (lua-make-lua-string region-str)
+ (lua-make-lua-string lua-file)
+ lineno)))
(comint-simple-send (lua-get-create-process) command)
(when lua-always-show (lua-show-process-buffer))))
- [nongnu] elpa/lua-mode 4484128 215/468: lua-calculate-indentation-override: unindent to the last block-close token, (continued)
- [nongnu] elpa/lua-mode 4484128 215/468: lua-calculate-indentation-override: unindent to the last block-close token, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode 79e6815 216/468: Rewrite lua-beginning-of-proc, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode f2e7138 220/468: Move font-lock test helpers into a separate file, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode 94aadfd 221/468: Font-lock "nil", "true" and "false" as constants rather than keywords, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode 617c392 224/468: make test: test both compiled and uncompiled variants, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode 7157658 225/468: Create cask project; pull in ert.el to enable testing emacs23, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode ed76a6e 227/468: .gitignore: ignore all *.elc, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode 67a9022 229/468: test-electric-mode: check interaction with electric-pair-skip-self flag, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode b10d6ae 232/468: Add missing modulo operator (%) to line-continuation tokens, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode 2d308e8 237/468: Move "no-query-on-exit" initialization to lua-start-process, update it, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode 397b883 236/468: Send code to inferior process via loadstring to avoid tempfile issues,
Philip Kaludercic <=
- [nongnu] elpa/lua-mode 24cc45e 239/468: Skip shebang line when sending to inferior buffer (issue #61), Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode c53d071 344/468: travis: disable git-snapshot, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode cccb649 346/468: Cask: specify minimum version for buttercup, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode d5891c5 345/468: Merge pull request #140 from immerrr/fix-buttercup-matchers, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode b27edce 348/468: Minor simplification of lua-get-create-process, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode 34e911b 358/468: travis: disable git-snapshot, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode 4cb20c0 359/468: Cask: specify minimum version for buttercup, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode c850d2e 357/468: test-inferior-process: temporarily disable failing test, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode e68bc14 353/468: Remove compatibility for Emacs < 24, Philip Kaludercic, 2021/08/05
- [nongnu] elpa/lua-mode 8b66d36 364/468: Merge branch 'master' into master, Philip Kaludercic, 2021/08/05