Windows上Emacs的希腊式难题

Windows上Emacs的希腊式难题,emacs,Emacs,我正在尝试在Windows上为emacs 21.3.1工作。在从以下网站下载欧洲intlfonts后,我已将以下内容放在我的.emacs中: 然而,当我尝试alpha-beta-gamma时,我得到了加减字符,上标2和上标3。有人知道如何解决这个问题吗?我从Emacs 21升级到Emacs 23,现在代码运行良好。转换其实并不太痛苦,我需要在某个时候进行转换。我从Emacs 21升级到Emacs 23,现在代码工作正常。转换实际上并不太痛苦,我需要在某个时候进行转换。(1)您能确认您的Emacs

我正在尝试在Windows上为emacs 21.3.1工作。在从以下网站下载欧洲intlfonts后,我已将以下内容放在我的.emacs中:


然而,当我尝试alpha-beta-gamma时,我得到了加减字符,上标2和上标3。有人知道如何解决这个问题吗?

我从Emacs 21升级到Emacs 23,现在代码运行良好。转换其实并不太痛苦,我需要在某个时候进行转换。

我从Emacs 21升级到Emacs 23,现在代码工作正常。转换实际上并不太痛苦,我需要在某个时候进行转换。

(1)您能确认您的Emacs版本是21.3.1而不是23.1.1吗?前者非常古老,后者更好地支持unicode。(2) 在我的Emacs 23.1.1(在Mac OS X上)上,您的希腊函数运行正常。如果在暂存缓冲区中计算
(insert(make char'greek-iso8859-7 255))
,会发生什么情况?插入字符上的M-x descripe char的输出可能也很有用。是的,它是21.3.1,也许我应该升级。Doing(insert(make char'greek-iso8859-7255))为我提供了暂存缓冲区中的alpha字符。然而,在实际的程序中,我仍然得到奇怪的字符。我想我应该升级一下。从21升级到23可能不会是无痛的(取决于你已经定制了多少Emacs),而且我不确定在不改变其他设置的情况下它是否能解决这个问题。但是我想不出任何其他可能的解决方案。(1)你能确认你的Emacs版本是21.3.1而不是23.1.1吗?前者非常古老,后者更好地支持unicode。(2) 在我的Emacs 23.1.1(在Mac OS X上)上,您的希腊函数运行正常。如果在暂存缓冲区中计算
(insert(make char'greek-iso8859-7 255))
,会发生什么情况?插入字符上的M-x descripe char的输出可能也很有用。是的,它是21.3.1,也许我应该升级。Doing(insert(make char'greek-iso8859-7255))为我提供了暂存缓冲区中的alpha字符。然而,在实际的程序中,我仍然得到奇怪的字符。我想我应该升级一下。从21升级到23可能不会是无痛的(取决于你已经定制了多少Emacs),而且我不确定在不改变其他设置的情况下它是否能解决这个问题。但我想不出任何其他可能的解决办法。
; ======= Pretty Greek Characters =======

(setq bdf-directory-list '("D:/emacs/intlfonts/European"))

(setq w32-bdf-filename-alist (w32-find-bdf-fonts bdf-directory-list))

(create-fontset-from-fontset-spec 
 "-*-fixed-medium-r-normal-*-16-*-*-*-c-*-fontset-bdf,
greek-iso8859-7:-*-*-medium-r-normal-*-16-*-*-*-c-*-iso8859-7" t)

(defun pretty-greek ()
  (let ((greek '("alpha" "beta" "gamma" "delta" "epsilon" "zeta" "eta" "theta" "iota" "kappa" "lambda" "mu" "nu" "xi" "omicron" "pi" "rho" "sigma_final" "sigma" "tau" "upsilon" "phi" "chi" "psi" "omega")))
    (loop for word in greek
          for code = 225 then (+ 1 code)
          do  (let ((greek-char (make-char 'greek-iso8859-7 code))) 
                (font-lock-add-keywords nil
                                        `((,(concatenate 'string "\\(^\\|[^a-zA-Z0-9]\\)\\(" word "\\)[a-zA-Z]")
                                           (0 (progn (decompose-region (match-beginning 2) (match-end 2))
                                                     nil)))))
                (font-lock-add-keywords nil 
                                        `((,(concatenate 'string "\\(^\\|[^a-zA-Z0-9]\\)\\(" word "\\)[^a-zA-Z]")
                                           (0 (progn (compose-region (match-beginning 2) (match-end 2)
                                                                     ,greek-char)
                                                     nil)))))))))

(add-hook 'lisp-mode-hook 'pretty-greek)
(add-hook 'emacs-lisp-mode-hook 'pretty-greek)
(add-hook 'python-mode-hook 'pretty-greek)
(add-hook 'csharp-mode-hook 'pretty-greek)