Русский язык в emacs [РЕШЕНО]

У меня в emacs русские символы в виде квадратов.
Надо всего то шрифт вроде указать, вот только я не знаю какой.
Может кто знает? или хотя бы как просмотреть все эти шрифты? Не пробовать же их все!

Dejavu Sans Mono

Dejavu Sans Mono

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

1. Посмотреть шрифты можно

1. Посмотреть шрифты можно иксовой программкой "x11-apps/xfontsel". Там последний параметр (кодировка) поставить в юникод - "u".

2. НО: похоже, у emacs 22.x траблы с юникодными шрифтами. Некоторые шрифты с кириллицей будут показываться квадратиками (возможно даже другого размера буквы - будут квадратиками).
В emacs-cvs (23.x) такой проблемы нет, в общем-то 23-я версия позиционируется как наиболее полно поддерживающая юникод =).

У меня сейчас стоят 22 и 23 одновременно, с одним и тем же конфигом, в 22 - квадратики, в 23-й - нормальные русские буквы.

Не заметил особо неполной

Не заметил особо неполной поддержки уникода в 22.3 и ранее.

(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(current-language-environment "UTF-8") ;;<<<<<<<<<<<<<<<<<<<<Это через меню настройки
'(default-input-method "russian-computer") ;;<<<<<<<<<<<<<<<<<<<< --.--
'(ecb-options-version "2.32")
'(ecb-source-path (quote ("/home/vvi/projects")))
'(semanticdb-project-roots (quote ("/home/vvi/projects")))
'(transient-mark-mode t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

(set-default-font "9x15") ;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<Вот это руками добавлял

(put 'upcase-region 'disabled nil)
(put 'downcase-region 'disabled nil)

(setq semantic-load-turn-everything-on t)
(require 'semantic-load)
(require 'semantic-ia)

Да конфиги он одинаково

Да конфиги он одинаково кушает. Однако у меня юникод с некоторыми шрифтами глючит в 22-м. А в 23-м нет.

Не знаю подробностей о поддержке юникода, однако:
http://www.gnu.org/software/emacs/

Future Versions
Emacs 23, the next major release, will have improved Unicode support.

а ещё можно просто vim

а ещё можно просто vim заюзать =)

:)

>>а ещё можно просто vim

>>а ещё можно просто vim заюзать

Да ну его.. Отладчик сбоку каким то через тудыть злобным хаком. Плагинов кот наплакал, ибо скрипеть на виме помнится было тяжело. А тут лисп. С лисп машиной разве что форт потягаться может.

ЗЫ
Насколько помню многие графические плагины реализованы на лисп машинах, тот же гимп с автокадом.

VIM USE

Шаманыш написал(а):
а ещё можно просто vim заюзать =)

Вся молодость с ним прошла

Всем фанатам vi, а также

Всем фанатам vi, а также фанатам emacs с чувством юмора рекомендую:

http://wordwarvi.sourceforge.net/

# emerge games-action/wordwarvi

Прописал в .Xdefaults

Прописал в .Xdefaults следующее:
Emacs*font: -*-*-medium-r-*-*-13-*-*-*-*-*-iso10646-1

Вывод emacs --version:

bodro@bodro ~ $ emacs --version
GNU Emacs 22.3.1
Copyright (C) 2008 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.
bodro@bodro ~ $

Больше ничего не делал. И появился русский текст, и чтение и запись. Кароче, всё нормально. А в доке как то всё слишком сложно написано! Всего лишь изменил шрифт! И всё заработало! :)

Всем спасибо большое! Вопрос решён!

Может кто-то хочет добавить комментарий?

А интересно, строка

А интересно, строка типа
Emacs*font: xft:DejaVu Sans Mono:pixelsize=13
сработает?

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

То, что я скажу, наверное

То, что я скажу, наверное общеизвестно, но при сборке новой системы с новым Emacs'ом (старая была 2005 года - всё устарело), у меня возникла проблема с шрифтами. В гугле набрёл вот на эту страницу, и на другую с gentoo.ru, 2007 года про Emacs-22. Рецепты не помогали. А сейчас ведь всё стало просто.

Итак, поставил новую систему с KDE-4.3.1, поставил emacs-23. Русского нет - зато есть квадраты. Поставил xfontsel, а там русских шрифтов и нету...

Короче говоря, сечас нужно использовать шрифты из XFT, а Emacs я собрал без ключика xft. После пересборки с xft русские буквы появились сразу, без дополнительных приседаний.

Да, забыл сказать - UTF-8. Раньше-то я koi8-r использовал.

$BOC(\pi, e)$

Пользуюсь я этим полгода уже,

Пользуюсь я этим полгода уже, а никак не решу проблему. Русские буквы отображаются пропорциональным шрифтом - и это многое портит. Никак руки не доходили переделать на нормальный шрифт фиксированной ширины.
Как поменять-то шрифт, я знаю. Я никак не найду способ узнать, какой шрифт emacs использует для русских букв. Точно только одно - не тот, что для английских. Сам шрифт я нигде руками не прописывал, emacs стал отображать русские буквы без указания шрифта.
Куда смотреть, кто-нибудь знает? Искал по внутренним переменным emacs, самое близкое, что нашёл - face-font-family-alternatives. В этом списке есть шрифты, но не похоже, что отображаемый шрифт из этого списка.

$BOC(\pi, e)$

В общем, я и прошлый раз

В общем, я и прошлый раз настроил всё, о чём выше написано.

Может кому поможет.

Я использую такой шрифт:

bodro@bodro:~$ cat .Xdefaults
Emacs.font: -xos4-terminus-medium-r-normal--16-160-72-72-c-80-iso10646-1
bodro@bodro:~$

И кому-то может быть интересен мой конфиг-файл для Емакса:

;(autoload 'mwheel-install "mwheel" "Enable wheely mouse")
(mwheel-install)
(menu-bar-mode 0)
(tool-bar-mode 0)
(set-scroll-bar-mode nil)
(global-font-lock-mode t)

(add-hook 'dired-load-hook (function (lambda () (load "dired-x"))))
(setq dired-omit-files-p t)

(global-set-key [f1] 'view-order-manuals)
(global-set-key [f2] 'save-buffer)
(global-set-key [f3] 'shell)
(global-set-key [f4] 'find-file)
(global-set-key [f5] 'goto-line)
(global-set-key [f6] 'visit-tags-table)
(global-set-key [f8] 'add-change-log-entry-other-window)
(global-set-key [f12] 'make-frame)


;(global-set-key [E-l]      'goto-line)
;(global-unset-key [e-r])
(global-set-key [\er]      'replace-string)
(global-set-key [home]     'move-beginning-of-line) ; [Home]
(global-set-key [end]      'move-end-of-line)       ; [End]

(global-set-key [kp-subtract] 'undo) ; [Undo]

(global-set-key [C-tab] 'complete-symbol) ;


(autoload 'cflow-mode "cflow-mode")
(setq auto-mode-alist (append auto-mode-alist
                              '(("\\.cflow$" . cflow-mode))))


(defun c-linux-hook ()
  (c-set-style "K&R")
  (setq c-basic-offset 4)
  (setq tab-width 4)
  (setq indent-tabs-mode t)
  (global-font-lock-mode t))

(add-hook 'c-mode-hook 'c-linux-hook)
(add-hook 'c++-mode-hook 'c-linux-hook)
(add-hook 'c-mode-common-hook 'c-linux-hook)


;(setq font-lock-maximum-decoration t)
;(load "hilit19")
(global-unset-key [C-c C-u])
(global-set-key [C-c C-u] 'uncomment-region)
(global-set-key [f9] 'compile)
(global-set-key [f8] 'gud-next)
(global-set-key [f7] 'gud-step)
(global-set-key [f10] 'gdb)
(global-set-key [f11] 'gud-finish)
; spaces instead of tabs
;(setq-default indent-tabs-mode nil)

(defun dos-to-unix ()
  "Convert a DOS buffer to Unix format."
  (interactive)
  (beginning-of-buffer)
  (replace-string "\r\n" "\n"))


;will highlight matching parentheses next to cursor.
(require 'paren) (show-paren-mode t)

;will delete "hungrily" in C mode! Use it to see what it does -- very useful.
(setq c-hungry-delete-key t)

(autoload 'python-mode "python-mode")


(setq auto-mode-alist
     (append auto-mode-alist
             '(("\\.py$"  . python-mode))))

(setq auto-mode-alist
     (append auto-mode-alist
             '(("SConstruct"  . python-mode))))





;Haskell mode
(setq load-path (cons "/usr/share/emacs/site-lisp/haskell-mode" load-path))
(setq auto-mode-alist
     (append auto-mode-alist
             '(("\\.[hg]s$"  . haskell-mode)
               ("\\.hi$"     . haskell-mode)
               ("\\.l[hg]s$" . literate-haskell-mode))))
(autoload 'haskell-mode "haskell-mode"
  "Major mode for editing Haskell scripts." t)
(autoload 'literate-haskell-mode "haskell-mode"
  "Major mode for editing literate Haskell scripts." t)
;(add-hook 'haskell-mode-hook 'turn-on-haskell-font-lock)
(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan)
(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indent)
;(add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent)
;(add-hook 'haskell-mode-hook 'turn-on-haskell-hugs)


; Emacs code browser



;; (add-to-list 'load-path
;;            "/usr/local/share/emacs/speedbar")
;; (add-to-list 'load-path
;;            "/usr/local/share/emacs")
;; (add-to-list 'load-path
;;           "/usr/local/share/emacs/cedet-1.0beta3b/semantic")

;; (load-file "/usr/local/share/emacs/cedet-1.0beta3b/common/cedet.el")

;; (require 'ecb-autoloads)
;; (custom-set-variables
;;   ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
;;   ;; Your init file should contain only one such instance.
;;  '(ecb-options-version "2.27"))
;; (custom-set-faces
;;   ;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
;;   ;; Your init file should contain only one such instance.
;;  )

;; ; -----------------

;; (autoload 'server-edit "server" nil t)
;; (server-edit)


(put 'upcase-region 'disabled nil)
(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(show-paren-mode t)
 '(transient-mark-mode (quote identity)))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 )

(defun ebuild-mode ()
  (shell-script-mode)
  (sh-set-shell "bash")
  (make-local-variable 'tab-width)
  (setq tab-width 4))
(setq auto-mode-alist (cons '("\\.ebuild$" . ebuild-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.eclass$" . ebuild-mode) auto-mode-alist))



(set-background-color "RoyalBlue4")
(set-foreground-color "white")

; Make all "yes or no" prompts show "y or n" instead
(fset 'yes-or-no-p 'y-or-n-p)

(autoload 'darcsum-whatsnew "/usr/share/emacs/site-lisp/darcsum.el")
;(provide 'darcsum)
;(require 'darcsum "darcsum.el")

(autoload 'imaxima "imaxima" "Image support for Maxima." t)


(setq auto-mode-alist (cons '("\\.max" . maxima-mode) auto-mode-alist))
(setq load-path (cons  "/usr/share/maxima/5.9.1/emacs" load-path ))
(autoload 'maxima "maxima" "Running Maxima interactively" t)
(autoload 'maxima-mode "maxima" "Maxima editing mode" t)
(autoload 'emaxima-mode' "emaxima" "EMaxima" t)


(set-language-environment 'UTF-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))
(codepage-setup 1251)
(define-coding-system-alias 'windows-1251 'cp1251)
(codepage-setup 866)
(prefer-coding-system 'windows-1251)
(prefer-coding-system 'utf-8-unix)





(setq visible-bell t)
(put 'narrow-to-region 'disabled nil)

(put 'downcase-region 'disabled nil)


(defun ttt ()
  "Convert a DOS buffer to Unix format."
  (interactive)
  (beginning-of-buffer)
  (insert (append (list ("AAA" "bbb")) ))
)


(global-set-key [C-c C-v] 'ttt)

(column-number-mode)

(autoload 'css-mode "css-mode")
(setq auto-mode-alist (cons '("\\.css\\'" . css-mode) auto-mode-alist))

(setq cssm-indent-function #'cssm-c-style-indenter)

;; Use cperl-mode instead of the default perl-mode
(add-to-list 'auto-mode-alist '("\\.\\([pP][Llm]\\|al\\)\\'" . cperl-mode))
(add-to-list 'interpreter-mode-alist '("perl" . cperl-mode))
(add-to-list 'interpreter-mode-alist '("perl5" . cperl-mode))
(add-to-list 'interpreter-mode-alist '("miniperl" . cperl-mode))

Разбирать его и комментировать не надо. Я давно его собирал и каждый раз с собой таскаю. может кому-то будет полезен.

Тему закрываю.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".