URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4742
[ Назад ]

Исходное сообщение
"emacs - как заставить вменяемо работать? :)"

Отправлено robot , 14-Окт-05 20:38 
Поставил xemacs, порадовал конечно возможностями и наворотами, но как только сел писать код - увидел его не совсем стандартное поведение. При переходе на новую строку он перемещает курсор не на уровень кода, а в начало строки, без учёта отступа. При нажатии tab вообще непонятно что происходит. Как заставить его нормально себя вести. Полез в настроки, но там всё понятно  - надо сидеть неделю чтоб воткнуть :) как в xemacs удалить блок кода? Выделить и нажать del почему то не помогает :) Мож мануал где какой есть по нему хороший?

Содержание

Сообщения в этом обсуждении
"emacs - как заставить вменяемо работать? :)"
Отправлено DeadMustdie , 14-Окт-05 22:06 
Лично мне xemacs пришлось в итоге попросту патчить. Ибо
MULE - извращение, а трюк с xmodmap не многим лучше.

К поведению TAB нужно привыкнуть. Лично мне в настоящее
время диким кажется уже поведение той же MS Visual Studio.
Ибо TAB - он для *правильной расстановки отступов*. Sic!

В действительности XEmacs - инструмент, который может быть
настроен для выполнения очень разных задач, и универсального
конфига здесь быть не может. Вот минимальный набор полезных
настроек в init.el:

(load    "cc-mode")

(require 'efs)
(require 'filladapt)
(require 'paren)
(require 'func-menu)

(setq use-dialog-box nil)

(add-hook 'find-file-hooks 'turn-on-font-lock)
(add-hook 'dired-after-readin-hook 'turn-on-font-lock)
(add-hook 'compilation-mode-hook 'turn-on-font-lock)

(setq font-lock-maximum-decoration t)
(load "font-lock")
(add-hook 'font-lock-mode-hook 'turn-on-fast-lock)
(add-hook 'font-lock-mode-hook 'turn-on-lazy-lock)

(load "saveplace")
(setq-default save-place t)

(load "jka-compr")
(if (fboundp 'toggle-auto-compression)
    (toggle-auto-compression 1))

(global-set-key [(f4)] 'switch-to-buffer)

(require 'ffap)
(global-set-key [f3] 'find-file-at-point)

(ad-enable-advice 'delete-char 'around 'delete-char-or-delete-region)
(ad-enable-advice 'backward-delete-char 'around
                  'backward-delete-char-or-delete-region)
(ad-enable-advice 'backward-delete-char-untabify 'around
                  'backward-delete-char-untabify-or-delete-region)
(ad-activate 'delete-char)
(ad-activate 'backward-delete-char)
(ad-activate 'backward-delete-char-untabify)

(setq default-major-mode 'indented-text-mode)
(setq line-number-mode 1)
(display-time)
(setq display-time-24hr-format t)
(setq frame-title-format `("emacs at " ,(system-name) ": %f"))
(setq-default indent-tabs-mode nil)
(setq next-line-add-newlines ())

(setq scroll-step 1)
(setq-default fill-column 70)
(setq query-replace-highlight t)
(setq search-highlight t)

(paren-set-mode 'paren)
(copy-face 'default 'paren-match)
(set-face-underline-p 'paren-match t)

(setq backup-by-copying-when-linked t)
(setq version-control 'never)
(setq trim-versions-without-asking t)  
(setq minibuffer-max-depth nil)
(setq gnuserv-frame t)
(setq bar-cursor 666)
(blink-cursor-mode)

(setq auto-mode-alist
      (append '(
                ("^[Mm]akefile.*" . makefile-mode)
                ("^[Mm]ake.*" . makefile-mode)
                ("[.]h$" . c++-mode)
                ("[.]c$" . c++-mode)
                ("[.]i" . c++-mode)
                ("[.]py$" . python-mode)
                ;("[.]sql$" . pls-mode)
                ;("[.]mhtml$" . mhtml-mode)
                )
              auto-mode-alist
              )
      )

(add-hook 'find-file-hooks 'fume-add-menubar-entry)
(define-key global-map '(shift button3) 'mouse-function-menu)
(define-key global-map "\C-cg" 'fume-prompt-function-goto)
(define-key global-map '(control  button2) 'fume-mouse-function-goto)

(pending-delete)
(lazy-shot-mode)
(lazy-lock-mode)
(vc-load-vc-hooks)

(global-set-key [kp-0] (lambda (arg) (interactive "P") (insert "0")))
(global-set-key [kp-1] (lambda (arg) (interactive "P") (insert "1")))
(global-set-key [kp-2] (lambda (arg) (interactive "P") (insert "2")))
(global-set-key [kp-3] (lambda (arg) (interactive "P") (insert "3")))
(global-set-key [kp-4] (lambda (arg) (interactive "P") (insert "4")))
(global-set-key [kp-5] (lambda (arg) (interactive "P") (insert "5")))
(global-set-key [kp-6] (lambda (arg) (interactive "P") (insert "6")))
(global-set-key [kp-7] (lambda (arg) (interactive "P") (insert "7")))
(global-set-key [kp-8] (lambda (arg) (interactive "P") (insert "8")))
(global-set-key [kp-9] (lambda (arg) (interactive "P") (insert "9")))

(global-set-key [button4] (lambda (arg) (interactive "P") (scroll-down-one)))
(global-set-key [button5] (lambda (arg) (interactive "P") (scroll-up-one)))

(global-set-key [(control \\)] (lambda (arg) (interactive "P") (fill-paragraph-or-region nil)))


"emacs - как заставить вменяемо работать? :)"
Отправлено robot , 14-Окт-05 22:27 
>Лично мне xemacs пришлось в итоге попросту патчить. Ибо
>MULE - извращение, а трюк с xmodmap не многим лучше.
>
>К поведению TAB нужно привыкнуть. Лично мне в настоящее
>время диким кажется уже поведение той же MS Visual Studio.
>Ибо TAB - он для *правильной расстановки отступов*. Sic!
>
>В действительности XEmacs - инструмент, который может быть
>настроен для выполнения очень разных задач, и универсального
>конфига здесь быть не может. Вот минимальный набор полезных
>настроек в init.el:

Полезного действительно много судя по названиям опций, только видимо это не совсем совместимо с моим емаксом:
он выругался на

(ad-enable-advice 'delete-char 'around 'delete-char-or-delete-region)
(ad-enable-advice 'backward-delete-char 'around
                  'backward-delete-char-or-delete-region)
(ad-enable-advice 'backward-delete-char-untabify 'around
                  'backward-delete-char-untabify-or-delete-region)
(ad-activate 'delete-char)
(ad-activate 'backward-delete-char)
(ad-activate 'backward-delete-char-untabify)

видимо не хватает каого то модуля. После того как закоментил - загрузил init.el, только теперь невозможно переключиться на английску раскладку: пишет только по-русски :(


"emacs - как заставить вменяемо работать? :)"
Отправлено robot , 14-Окт-05 22:35 

>
>видимо не хватает каого то модуля. После того как закоментил - загрузил
>init.el, только теперь невозможно переключиться на английску раскладку: пишет только по-русски
>:(

Извиняюсь. По русски пишет только на начальном буфере *scratch* чтоли он его называет. В остальных местах нормально переключает раскладку.


"emacs - как заставить вменяемо работать? :)"
Отправлено DeadMustdie , 16-Окт-05 17:08 
>Извиняюсь. По русски пишет только на начальном буфере *scratch* чтоли он его
>называет. В остальных местах нормально переключает раскладку.

Непонятно. scratch - обычный, ничем не выдающийся буфер. Для Lisp'ового коду.


"emacs - как заставить вменяемо работать? :)"
Отправлено robot , 14-Окт-05 22:30 
>Лично мне xemacs пришлось в итоге попросту патчить. Ибо
>MULE - извращение, а трюк с xmodmap не многим лучше.
>
>К поведению TAB нужно привыкнуть. Лично мне в настоящее
>время диким кажется уже поведение той же MS Visual Studio.
>Ибо TAB - он для *правильной расстановки отступов*. Sic!

Да фиг бы с ним с табом, почему от отступ сам не делает? этак задолбаешься всё время отступы вручную делать. Вроде - как автоматическая расстановка отступов - стандарт.

>В действительности XEmacs - инструмент, который может быть
>настроен для выполнения очень разных задач, и универсального
>конфига здесь быть не может.

Вот и хочетется выучить его под себя. Только напрыгом с шашкой его взять не удалось, придётся изучать :-)


"emacs - как заставить вменяемо работать? :)"
Отправлено DeadMustdie , 16-Окт-05 17:12 
>Да фиг бы с ним с табом, почему от отступ сам не
>делает? этак задолбаешься всё время отступы вручную делать. Вроде - как
>автоматическая расстановка отступов - стандарт.

А он у Вас вообще C++-режим включил? Чего в статусной строке пишет?
Должно быть нечно вроде 'C++ Font Abbrev'. Если вместо C++ фигурирует
нечто вроде 'Text' или 'Fundamental', значит, хук не срабатывает.
Для начала можно попробовать сказать M-x c++-mode <RET>.

>Вот и хочетется выучить его под себя. Только напрыгом с шашкой его
>взять не удалось, придётся изучать :-)

Напрыгом точно не получится. Бесполезнее только на vi напрыгивать - новичок
из него даже выйти, и то не сумеет.


"emacs - как заставить вменяемо работать? :)"
Отправлено robot , 17-Окт-05 11:44 
>>Да фиг бы с ним с табом, почему от отступ сам не
>>делает? этак задолбаешься всё время отступы вручную делать. Вроде - как
>>автоматическая расстановка отступов - стандарт.
>
>А он у Вас вообще C++-режим включил? Чего в статусной строке пишет?
>
>Должно быть нечно вроде 'C++ Font Abbrev'. Если вместо C++ фигурирует
>нечто вроде 'Text' или 'Fundamental', значит, хук не срабатывает.
>Для начала можно попробовать сказать M-x c++-mode <RET>.
>

Включил CPerl (я на перле программирую). Он отступы табом правильно расставляет, соблюдает вложенность, толкько при переходе на новую строку не делает сам отступ.


"emacs - как заставить вменяемо работать? :)"
Отправлено Andrey , 17-Окт-05 15:21 
http://groups.google.ru/group/gnu.emacs.help/browse_thread/t...

По умолчанию "newline-and-indent" назначена на "C-j", назначив ее на "RET", получишь желаемое.


"emacs - как заставить вменяемо работать? :)"
Отправлено robot , 17-Окт-05 18:45 
>http://groups.google.ru/group/gnu.emacs.help/browse_thread/t...
>
>По умолчанию "newline-and-indent" назначена на "C-j", назначив ее на "RET", получишь желаемое.
>

Спасибо, я решил проблему вот этим:

(setq cperl-tab-always-indent 't )
(setq cperl-auto-newline 't )