如何在文件 Local Variables 里保存大量数据

我把一些数据放在了文本属性里,想要在保存缓冲区时把这些数据保存进去。所以我使用了 add-file-local-variable,把所有存储在文本属性里的有意义数据打包放进缓冲区里。但是这个函数(以及读取 Local Variables 的函数)在数据非常长的时候会认不出 Local Variables。比方说 M-x add-file-local-variable RET some-var RET C-u 5000 a RET 会正确地添加变量,但是之后再 M-x add-file-local-variable RET some-other-var RET b RET 就会错误地另起一段。

根据定义来看 add-file-local-variable 应该是最多支持 3000 个字符。我感觉改掉这个数字会很卡,所以不能改。有什么替代方案吗?

如果非要把数据放到一个文件里面的话写一组读写文件末尾注释内容的函数应该也行。

或者 file-local 变量保存一个同路径下的文件名然后间接读取文件名对应文件?

看了一下local-variable这个功能,发现我一直都在用-*- mode -*-, 所以楼主想要的功能是在打开文件时让emacs检查文件里面的内容自动执行某些代码?

我是想保存和加载文本属性,所以可能算是 “初始化某些变量”。虽然用到了 hack-local-variables-hook,但是我觉得不算执行代码。

另外 -*- mode -*- 也是用到的,因为不想每次打开文件都去尝试加载文本属性,所以只有在特定模式的文件中才会加载(通过 hack-local-variables-hook 加缓冲区局域钩子)。但是我觉得这个 local variable 和文件结尾的 local variable 不是同一个东西,因为变量都是在文件结尾指定的,文件开头一行只用来指定模式。

你这个需求就很怪。为什么要把文本属性存下来?首先自己存local variable的话就不能考虑合作编辑了。如果是formatting,那么就用类似于 rtf 的格式,或者用enriched-mode存formatting就好了。如果是额外的数据,那就应该用类似于org的方法,把需要的数据放在正文中,然后在编辑的时候隐藏起来。

感觉你是在想把文本文件、文本属性当数据库用, 文本文件保存大量数据这个我觉得不用尝试了, 数据只要和大量相关,都应直接用数据库, 建一张最简单的只有两列的表都比用纯文本来作数据库好.