Показаны сообщения с ярлыком Emacs. Показать все сообщения
Показаны сообщения с ярлыком Emacs. Показать все сообщения

12/13/2011

Emacs column marker

Очень часто стилем кодированием лимитирована максимальная длина строки кода и хорошо когда про это знает IDE.

В Emacs добавил себе column-marker

(add-to-list 'load-path (expand-file-name "~/emacs/column-marker"))

(require 'column-marker)

(add-hook 'ada-mode-hook (lambda () (interactive) (column-marker-3 79))) 

Теперь, если в в Адском коде длина строки превышает 79 символом,  Emacs подсвечивает часть строки красненьким.

P.S. Заодно проверю, есть ли реклама в Фиде. Вроде с горем пополам я ее отключил.

5/17/2009

Как Вставить много одинаковых символов в Emacs'е

Для того чтобы вставить много одинаковых символов подряд в среде редактирования текстов Emacs, нужно сначала нажать Crtl + цифра (цифра - количество символов для вставки), а затем непосредственно вставить нужный символ.
Например :
Ctrl + 1 + 0
Затем если нажать на '+',
то начиная от текущей позиции курсора появится 10 символов '+'

4/17/2009

Вставка пары скобок в Emacs

Очень удобно, когда при объявлении функции или чего нибудь, где нужно использовать
скобки, вставляется не только открывающая скобка, но и закрывающая.
Для того, чтобы добавить такую возможность в Emacs, нужно прописать в конфиг файле
вот такие строки:

(defun insert-second-hook ()
(interactive)
(insert "()")
(goto-char (- (point) 1)))
(global-set-key (kbd "\(") 'insert-second-hook)

Что здесь происходит:
в 1-й строке объявляем функцию insert-second-hook ().
во 2-й строке говорим, что она используется в интерактивном режиме.
в 3-й строке вставляем в активный буфер пару скобок '()'
в 4-й строке помещаем курсор между скобками.
в 5-й строке вешаем хук на клавишу '('
Вот и все.

1/27/2009

Уведомление о новых сообщения в Jabber в Emacs

Если у вас в системе есть библиотека libnotify, то можно заставить emacs показывать красивенькие уведомления о новых сообщениях от пользователей.
Чтобы проверить, установлена ли библиотека, нужно написать which notify-send, в консоли, и узнать ответ =).

А теперь к самому главному.
Emacs поддерживает замечательную концепцию Хуков (Hook). Хук, это реакция на некоторое событие, которые может возникнуть во время работы текстового редактора. Например, вы можете определить реакцию emacs'a, когда возникает событие нажатия клавиши, повесив на это событие какой нибудь хук. Например перевод вводимого символа в верхний регистр.

Предупреждаю сразу, что я в Lisp пока не силен, так что, если что написано не так, то просьба поправлять:
Теперь непосредственно о том, как сделать уведомление:
;; Определяем, переменную для использования иконки в уведомлении
(defvar jabber-libnotify-icon ""
"*Icon to be used on the notification pop-up. Default is empty")

;; определеям переменную, сколько милисекунд будет висеть уведомление
(defvar jabber-libnotify-timeout "2000"
"*Specifies the timeout of the pop up window in millisecond")

;; определяем функцию, которая непосредственно отображает уведомление
(defun jabber-libnotify-message (from msg)
"Show MSG using libnotify"
(let ((process-connection-type nil))
;; запускаем утилиту notify-send и передаем ее параметры:
;; -t время отображения
;; -i отображаемая иконка
;; from - заголовок оповещения
;; msg - непосредственно сообщение оповещения.
(start-process "notification" nil "notify-send"
"-t" jabber-libnotify-timeout
"-i" jabber-libnotify-icon
from msg)))

;; определяем прототип функции, согласно тому как того требует описание в jabber.el
(defun jabber-libnotify-message-display (from buffer text propsed-alert)
(jabber-libnotify-message from text))

Эта функция будет вызвана из модуля Jabber.el, при возникновении определенного события. Далее нам надо указать при возникновении какого события вызывать нашу функцию, нам нужно повесить хук:
;; вешаем хук на событие jabber-alert-message-hooks
(add-to-list 'jabber-alert-message-hooks
'jabber-libnotify-message-display)

Теперь, при получении нового сообщение вы будете получать вот такое уведомление:

1/23/2009

Используем Jabber с помошью текстового редактора

В связи с недавними проблемами в ICQ, куча людей резко кинулась использовать jabber.
Я тоже поддался стадному чувству, сдул пыль со своего jabber аккаунта и решил посмотреть что же получится.
В качестве клиента ICQ я использую pidgin. В нем меня все устраивает, хотя и не хватает некоторых возможностей. Но захотелось немного экзотики. Решил я значит использовать jabber с помощью Emacs'a.
Оказалось это легко и просто:
1. Идем на какой нибудь jabber сервер и регистрируемся. У меня имеется аккаунт на jabber.ru
2. Скачиваем emacs-jabber. (Я выгружал исходники из cvs)
3. Внимательно читаем README файл в каталоге с исходниками.
4. Конифгурим, компилим, устанавливам. (./configure && make && make install)
5. в ~/.emacs добавляем путь к скомпиленному emacs-jabber
(add-to-list 'load-path "~/emacs/jabber/share/emacs/site-lisp/") (require 'jabber)

Далее нужно немного настроить emacs, а собственно указать "текстовому редактору" сервер, куда коннектится, логин и пароль. Можно пароль не указывать, но тогда его придется каждый раз вводить при соединении.
Сделать это можно следующими способами:
1. Выбрать в меню Jabber->Customize
2. M-x jabber-customize
3. Прописать все необходимое в конфиг файле.

Разница в том, что в первых двух случаях вы будете общаться с графическим конфигуратором, и тыкая мышкой в кнопочки, можно будет легко все настроить.

Я настраивал с помощью конфиг файлов:
1. Устанавливаем параметры учетной записи, сервера и т.д.
(custom-set-variables
'(jabber-account-list (quote (("jabberid@jabber_sever" ;; ваш jabber ID
(:password . "password") ;;
ваш пароль
(:network-server . "jabber.ru") ;; jabber сервер
(:connection-type . ssl))))) ;; лучше использовать ssl
)

Можно указать несколько соединений.

2. Некоторые параметры относящиеся к интерфейсу

(custom-set-variables
;; Указывает формат отображение элементов в контакт-листе:
;; %c - соответствует "*" если контакт в сети, "" - если контакт не в сети
;; %n - псевдоним или jabberID контакта
;; %a - отображать аватар или нет.
'(jabber-roster-line-format " %c %n %a")
;; при запуске не показывать подсказку для контакт листа.
'(jabber-roster-show-bindings nil)
)

3. Добавляем подсветку URL в сообщениях:

(add-hook 'jabber-chat-mode-hook 'goto-address)


Для начала этого будет вполне достаточно.
Используя в качестве Jabber клиента Emacs, вы получаете неограниченные возможности по набору текста, проверке орфографии, и всяческих других фишек, поддерживаемых этим редактором.
А выглядет это все примерно так:

Все красиво, быстро, удобно, функционально.
Также есть поддержка смайлов и уведомления о входящих сообщениях через libnotify или osd. Но об этом в следующий раз.

12/26/2008

Удаленное редактирование файлов.

С помощью Emacs можно редактировать файлы не только на локальном компьютере, но и на удаленном компьютере. Вот краткий список поддерживаемых протоколов:
smb, rsh, ssh, fttp, sftp.

Для редактирования в конфиг емакса нужно добавить:
(require 'tramp)

В общем случае чтобы открыть файл или каталог на удаленной машине необходимо выполнить команду открытия файла:
C-x C-f

и в качестве пути прописать:
/method:username@remote_host:/remote/path

где, method - это тип протокола, может быть ssh, ftp, rsh

Например для того чтобы для отредактировать файл через ssh от имени пользователя root нужно написать путь так:

/ssh:root@192.168.0.2:/etc/X11/xorg.conf

Более подробно об удаленном редактировании файлов можно почитать на официальной страничке tramp'a.
http://www.gnu.org/software/tramp/

12/25/2008

Несколько полезных фишек в Emacs.

Обычно в исходном коде, вашем или чужом, частенько встречаются комментарии, типа:
// TODO: сделать это.
// FIXME: переписать этот кусочек кода.
Для того, чтобы emacs выделял такие ключевые слова в комментариях, необходимо ему указать это в конфиге:

(add-hook 'c-mode-common-hook
(lambda ()
(font-lock-add-keywords nil
'(("\\<\\(FIXME\\|TODO\\|BUG\\):" 1 font-lock-warning-face t)))))

Так же бывает очень удобно, когда текстовый редактор автоматически дополняет открывающую скобку закрывающей, и ставит курсор внутри скобок.
Чтобы заставить Emacs так делать, нужно добавить в конфиг файл следующие строки:

(defun insert-second-hook ()
(interactive)
(insert "()")
(goto-char (- (point) 1)))
(global-set-key (kbd "\(") 'insert-second-hook)

12/07/2008

Удобство отладки.

Не секрет, что очень много времени программист использует для отладки своих программ.
В Линукс, для отладки приложений пользовательского уровня используется интерактивный отладчик GDB. По умолчанию, GDB предполагает использование интерфейса командной строки, что для некоторых представляется очень и очень неудобным, и вообще...
И вообще такие люди говорят:" Вот бы нам такой отладчик. как в Visual Studio!".
На самом деле для GDB очень давно существует подобный интерфейс.
И, как вы уже наверное догадались, для этого нам понадобится "текстовый редактор" Emacs.
Итак начинаем отладку.
Запустим Emacs в каталоге с программой, которую собираетесь отлаживать. Так же было бы неплохо, чтобы в этом же каталоге лежали еще и исходные тексты.
Для активизации режима отладки, нужно в минибуфере набрать gdb.
На что вы получите примерно следующее приглашение:
Run gdb (like this): gdb --annotate=3 main.
В большинстве случаев этого достаточно.
Жмем Enter, и после этого опять же в минибуфере, активируем много-оконный режим:
M-x gdb-many-windows
после активации получится примерно следующее:

В центре исходник вашей программы.Слева вверху - консоль GDB. Справа, рядом с ней список отображающий значения регистров или переменных. Внизу слева - Стек. Справа - список точек останова программы.
Итак, поехали. Для запуска программы пожно либо написать в консоли gdb start, либо воспользоваться соответствуюим пунктом из меню GUD.
Точки останова можно ставить как с помощью консоли, так и с помощью мыши, просто кликнув на серой полоске (не знаю как она называется по научному) около понравившейся строки:
Все понятно и наглядно представлено. Более того, если устновить курсор на какую-нибудь переменную, и нажать на кнопку P на панели инструментов, то распечатается значение этой переменной. Точно таким же образом можно наблюдать за состоянием переменной, установив Watchpoint. С помощью той же панели инструментов можно побродить вверх и вниз по стеку. Можно с помощью удобных кнопочек осуществлять пошаговую отладку.
В общем весьма удобно и по функционалу ничем не хуже, чем Visual Studio.
З.Ы. Кому интересно, предлагайте, допишу что нибудь еще.

12/06/2008

Удобный просмотр мануалов.

Любой пользователь линукс знает, что без мануало эту систему использовать тяжеловато, а пользоваться командной строкой практически невозможно.
Чтобы посмотреть мануал (руководство) по какой-нибудь программе, необходимо использовать команду man.
Например команда man ls, отобразит всю необходимую информацию о команде ls.
Бывает так, что не всегда известно, по какой команде или какой функции нужен мануал, и часто приходится использовать поиск по коллекции документации:
команда man -k keyword будет искать keyword в текстах мануалов.
Но пост не об этом.=) Пост о среде редактирования Emacs.
Да, да Emacs'ом весьма удобно просматривать маны, для этого существует два режима:
собственно man-mode и woman
Наиболее удобным лично для меня является woman.
Если в исходном тексте программы у вас курсор установлен на какой либо функции, то
набрав M-x woman можно посмотреть ман по этой функции, причем если манов несколько, то Emacs предложит выбрать наиболее подходящий.
Руководства прекрасно отображаются как на русском, так и на английском языке.
Работает навигация не только по ссылкам, в разделе "Смотрите также", но и по любым подсвеченным словам, если для них имеется ман страницы.
Если вы не знаете какую конкретно страницу нужно посмотреть, можно воспользоваться авто дополнением. Нажатие клавиши TAB выведет полный список всех доступных страниц.
У меня все.
P.S. Вот так это все выглядит:

11/12/2008

Базовые настройки Emacs

При каждом запуске Emacs, в отдельном буфере (про буферы я расскажу позже), постоянно выскакивает надоедливая заставка.
Ее можно отключить, добавив в конфигурационный файл строчку:
(setq inhibit-startup-message t)

При наборе ошибочной команды, или при возникновении ошибочной ситуации Emacs постоянно (надоедливо) пищит. Его можно попросить визуально сообщать о возникновении ошибки:
(setq visible-bell t)

На моей системе (Gentoo Gnu/Linux), Emacs использует не очень красивый шрифт, следующая строчка будет радовать глаз пользователя, при условии что описанный шрифт установлен в вашей системе:
(set-default-font "Bitstream Vera Sans Mono-11")

Меня также очень напрягает писать код на белом фоне. Чтобы изменить цвет фона запишем:
(set-background-color "wheat3")

Для того, чтобы Emacs подсвечивал выделенные текст, между двумя метками (по умолчанию он этого не делает), необходимо ему сказать:
(setq transient-mark-mode 1)

Так же целесообразно было бы изменить и цвет выделения:
(set-face-background 'region "gray85")

Для себя, выставил размер запускаемого окна шириной в 81 символ и высотой в 50 символов:
(setq default-frame-alist (append (list
'(width . 80) ; Width set to 81 characters
'(height . 50)) ; Height set to 60 lines
default-frame-alist))

Также весьма удобно, чтобы Emcas показывал, в какой позиции в текущее время находится курсор:
(column-number-mode 1) ;; отображает номер столбца символа
(line-number-mode 1) ;; отображает номер строки

При отображении основного окна редактора, у меня не отображаются полоски прокрутки, строка меню, тулбар, и прочие ненужные элементы управление,
поэтому весьма удобно чтобы в заголовке отображался полный путь редактирования к файлу:
(setq frame-title-format "emacs - %f")

Несколько слов об Emacs

В своей повседневной работе для редактирования любых текстов, я использую среду Gnu/Emacs. (Произносится как Имакс)
Установка:
Я использую Emacs из cvs, потому что в нем по умолчанию используется Unicode, есть человеческая поддержка русского языка и нормально работает антиалиасинг для шрифтов.
Выгружаем Emacs из репозитория:
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co emacs

далее

make bootstrap
./configure --with-x-toolkit --with-xft
make
make install
И после некоторого ожидания, запускаем emacs.

Перед началом использования я настоятельно рекомендую прочитать Emacs User Guide, т.к. там даны все ответы на вопросы, возникающие на первых порах использования редактора.

Настраивать среду можно или с помощью конфигурационного файла, который можно найти по адресу $HOME/.emacs, или же с помощью встроенного конфигуратора,
запустить который можно выбрав в меню Options->Customize Emacs.
Лично мне кажется что проще редактор настраивать через конфигурационный файл.
В нем содежатся инструкции, написанные на языке Lisp. Пугаться не стоит, так как все очень понятно и наглядно.

Для упрощения конфигурирования редактора, настройки можно вынести в отдельный файл. Например для настройки режима редактирования C++ настройик можно вынести в файл cpp_mode_conf.el,
затем просто подключить его в основном конфиге
написав:
(load /path/to/el_file/cpp_mode_conf.el)

Комментарии в конфиг файле начинаются с символов ;;
;; bla bla

Бытует мнение, что для работы в среде Emacs необходимо иметь навыки игры на пиано, чтобы уметь одной рукой нажимать сразу несколько клавиш.
Это не так. Вам достаточно иметь три руки =).