TL; DR:32位emacs-lisp字节范围可以超出文件的前512 MB吗?
我喜欢使用emacs-lisp进行各种数据处理任务,因为它(显然)与编辑器的高度集成。
当编写自定义函数时,我有时会遇到most-positive-fixnum
强加的限制。虽然我可以忍受并理解无法将整个1GB文件加载到缓冲区的原因,但insert-file-contents[-literally]
接口也不允许访问超出文件的前512 MB的数据块,因为它要求作为参数的整数字节范围。
有没有办法绕过这个限制?据我所知,目前insert-file-contents
是emacs-lisp可用的最低级文件读取功能,insert-file-contents-literally
只是通过设置几个变量配置的第一个变体,即emacs-lisp似乎没有提供任何低级fopen
类型的文件界面。
奇怪的是在某些时候(可能使用自编译的二进制文件)调用带有浮点参数的insert-file-contents-literally
为我工作,允许访问高字节范围,代价是舍入错误的风险。使用ftp.gnu.org上的最新预编译emacs版本(编写时为24.3),这样做会产生(wrong-type-argument file-offset NUMBER)
错误。
答案 0 :(得分:1)
单凭Emacs无法做到这一点。你必须以某种方式使用一些外部程序。这是一个已知的限制,我相信它已经在bug跟踪器中了。