从 windows 剪贴板复制内容到 wslg 下 emacs

  • 起因

    使用 org 记录笔记。尝试将原有笔记复制到 org 文件中,然后修改更新。

  • 过程

    无论从什么应用中复制文本到 emacs 中均显示为乱码。但是通过 wl-paste 工具检查,复制的文本都是 utf-8 编码。

    init.el 中设置 (setq selection-coding-system 'gb18030) 和 (setq buffer-file-coding-system 'gb18030) 后,发现:

    • 从 onenote 到 emacs,复制文本显示正常。

    • 从 vscode/notepad3 到 emacs,则:

      • 如果复制文本时,windows 系统的中文输入法处于中文输入状态,则复制文本显示正常。
      • 如果复制文本时,windows 系统的中文输入法处于英文输入状态,则复制文本显示为 ascii 的问号。
  • 细节

    • wsl 系统为 debian 12
    • emacs 为 bookworm-backports 源里的 emacs-pgtk (30.1)
    • windows wsl 版本为 2.5.7.0
  • 其他

    因为不熟悉 emacs,不确定在 init.el 中的两行设置有没有其他副作用,暂时先用着有其他问题再说。

改成’gbk试试?另外windows粘贴板是UTF-16LE编码,wsl我不清楚,可能和这个也有关系。

试了下 gbk,问题还是存在。

从 onenote 和 vscode 复制文本的区别是,wl-paste 的输出中 onenote 在两者都有的 text/plain;charset=utf-8 的指示前多了个 text/html 的指示。

应该可以在 yank-transform-functions加个函数处理一下