quickrun: 当 .qrinput 文件没有 newline 的时候, 输出为空

test.py.qrinput 的内容是:

abc

没有 newline.

quickrun 执行的 buffer test.py 是:

import sys
s = sys.stdin.read()
print(s)

结果 quickrun 输出为空.

如果 test.py.qrinput 的内容加上 newline, 就有输出.

执行会执行的是 quickrun-exec. 其中关于 input-file 的逻辑在 quickrun–send-file-as-stdin, 实现如下:

(defun quickrun--send-file-as-stdin (process file)
  "Not documented."
  (let ((open-buf-func (cond ((file-exists-p file) 'find-file-noselect)
                             ((get-buffer file) 'get-buffer))))
    (when open-buf-func
      (quickrun--log "Send '%s' to STDIN of %s" file (process-name process))
      (with-current-buffer (funcall open-buf-func file)
        (process-send-region process (point-min) (point-max))
        (process-send-eof process)))))

主要就是调用了 (process-send-region process (point-min) (point-max)), edebug 这个函数, 试了一下 eval (buffer-substring-no-properties (point-min) (point-max)). 并没有问题, 有内容的, 而调用的 process-send-region, 是 emacs built-in function, 是 c 写的. 所以看起来好像 quickrun 的实现并没有任何问题. 为什么 .qrinput 就不 work?