Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
emacs标准/缓冲区显示表更改(音译实验)_Emacs_Elisp_Georgian - Fatal编程技术网

emacs标准/缓冲区显示表更改(音译实验)

emacs标准/缓冲区显示表更改(音译实验),emacs,elisp,georgian,Emacs,Elisp,Georgian,我改编了cyril-util.el,使其具有格鲁吉亚语Mkhderuli脚本的音译。这是一个非常快速和肮脏的黑客行为,但它让我尝试了解显示表。通过改变缓冲区显示表或创建新的缓冲区显示表,函数standard display mkhedruli translatit(使用缓冲区局部变量)在格鲁吉亚字母和拉丁字母之间翻转。我把它贴在这里: 除此之外,我还修改了.emacs中的标准显示表,以消除换行eol字符,并使tty上的拆分窗口使用更好的(unicode)字符,如下所示: (set-display

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

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

(set-display-table-slot standard-display-table 'wrap ?\ )
(set-display-table-slot standard-display-table 'vertical-border ?│)
现在的问题是,尽管音译可以正常工作,但我最终还是失败了 丢失我的标准显示表调整。有没有办法将所有这些无缝地结合在一起?我不想在我的Mkhderuli函数中也有这些调整

(当然还有一些缺陷,例如粗糙(重画显示),出于某种原因,我需要这样做)。

您可以在新创建的表上使用
(set char table parent 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语言
,因为您只测试它是否为
nil
,您可以测试
mkhedruli活动
,以获得相同的信息