【问题标题】:emacs standard-/buffer-display-table alterations (transliteration experiment)emacs 标准/缓冲区显示表更改(音译实验)
【发布时间】:2011-11-28 11:01:51
【问题描述】:

我改编了 cyril-util.el 以音译格鲁吉亚语的 Mkhedruli 脚本。一个非常快速和肮脏的黑客,但它让我尝试了解显示表。函数 standard-display-mkhedruli-translit 通过更改缓冲区显示表或创建一个新的新表在格鲁吉亚语和拉丁字母之间翻转(使用缓冲区局部变量)。我把它贴在这里:https://gist.github.com/1253614

除此之外,我更改了 .emacs 中的标准显示表以消除换行符 eol 字符,并使 tty 上的拆分窗口使用更好的(unicode)字符,如下所示:

(set-display-table-slot standard-display-table 'wrap ?\ )
(set-display-table-slot standard-display-table 'vertical-border ?│)

现在的问题是,虽然音译没问题,但我最终还是 失去我的标准显示表调整。任何想法如何将所有这些无缝地结合在一起?我不想在我的 mkhedruli 函数中也进行这些调整...

(当然还有一些缺陷,比如粗糙(redraw-display),我出于某种原因需要这样做)。

【问题讨论】:

    标签: emacs elisp georgian


    【解决方案1】:

    您可以在新创建的表上使用(set-char-table-parent <newtable> standard-display-table)

    当我在这里时:您可以使用define-minor-mode 来简化您的代码。 其他类型的简化:

    (let ( (mkhedruli-language nil) )
      (if (equal mkhedruli-active nil)
          (setq mkhedruli-language "Georgian")
        (setq mkhedruli-language nil))
      (with-current-buffer (current-buffer)
        (if (equal mkhedruli-language nil)
            (setq mkhedruli-active nil)
          (setq mkhedruli-active t)))
    

    变成

    (let ( (mkhedruli-language nil) )
      (setq mkhedruli-language
            (if (equal mkhedruli-active nil)
                "Georgian"
              nil))
      (if (equal mkhedruli-language nil)
          (setq mkhedruli-active nil)
        (setq mkhedruli-active t))
    

    可以变成

    (let ((mkhedruli-language
           (if mkhedruli-active nil "Georgian"))))
      (setq mkhedruli-active 
            (if mkhedruli-language t nil))
    

    您可能更喜欢只切换两者:

    (setq mkhedruli-active (not mkhedruli-active))
    (let ((mkhedruli-language
           (if mkhedruli-active "Georgian"))))
    

    甚至完全摆脱mkhedruli-language,因为您只测试它是否为nil,而您可以测试mkhedruli-active 以获得相同的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 2012-06-18
      • 1970-01-01
      相关资源
      最近更新 更多