Пользователь
0,0
рейтинг
11 июля 2008 в 22:33

Разработка → jabber.el или джаббер-клиента емакса

В последнее время я начал проводить много времени в редакторе среде Emacs, потому что после некоторого периода адаптации понял, что это очень удобная вещь. Конечно, вы можете спросить, мол а может я линуксойд-фанатик и на самом деле ничего удобного в Emacs-е нет. Попытаюсь аргументировать: разве неудобно когда все под рукой? Все в одном средстве: и тектовый редактор, и средство для планирования (например своего свободного времени на неделе), и почтовый клиент, и средство для работы с системами контроля версий, такими, как CVS или SVN, и даже небольшой, просто веб-браузер (большие сайты он конечно не всегда просматривает правильно, но почитать новости на ЛОР-е удобно вполне). По-моему, такой подход имеет право на существование. Да, и не стоит забывать, что среда Emacs имеет встроенный язык программирования elisp, что позволяет заточить среду под свои конкретные нужды или даже разработать свой собственный встроенный модуль и все это еще и OpenSource! В этой статье, я хочу познакомить читателей с jabber-клиентом Emacs-а, который называется jabber.el.

Итак, хочется начать с того, что jabber.el разрабатывается отдельно от emacs-а, поэтому не входит в стандартную поставку, но его легко можно доустановить, например в Ubuntu установка сводится к одной строке в консоли:
sudo aptitude install emacs-jabber
Лично мне кажется, что в репозиториях различных линукс-дистрибутивов лежит достаточно старая версия jabber.el, поэтому я предпочитаю получать jabber-клиент с git репозитория Кирилла Коринского — одного из разработчиков jabber.el.
Итак, после установки jabber.el нужно подключить его в файле конфигурации Emacs, который называется (.emacs). Дописываем туда следующую строку:
(require 'jabber)
После этого запускаем emacs. Итак, мы указали emacs-у, что надо загрузить модуль jabber.el при старте, теперь необходимо настроить jabber-аккаунт. В emacs-е набираем:
M-x jabber-customize
после этого мы попадаем на страницу настроек соединения с jabber-сервером.
Настройка jabber.el
После настройки мы можем подключиться к серверу с помощью команды
M-x jabber-connect
Или же с помощью нажатия клавиш С-x C-j C-c Не пугайтесь, эти огромные сочетания клавиш, естественно, можно сделать автоматическим, например подключаться к jabber-серверу при запуске редактора или же назначить это большое сочетание клавиш его какой-то, удобный вам шоткат, к примеру, назначим подключение на клавишу , для этого добавим в конфиг Emacs-а следующую строку:
(global-set-key [f5] 'jabber-connect)
После подключения можно переключиться на ростер (список контактов) с помощью команды
M-x jabber-switch-to-roster-buffer
Или сочетания клавиш C-x C-j C-r
В верхней части ростера приведен краткий список команд. Например, чтобы зайти в конференцию, необходимо нажать клавишу j, а чтобы начать диалог с кем-нибудь из контактов — нужно подвести к нему курсор и нажать Enter.
Еще одно интересное действие: допустим, что мы хотим переключиться в буффер, где у нас есть непрочитанные сообщения, для этого достаточно выполнить:
M-x jabber-activity-switch-to
Или же лучше добавим это дело в конфиг на на горячие клавиши C-x C-a:
(global-set-key "\C-x\C-a" 'jabber-activity-switch-to)
А также интересно было бы включать проверку орфографии в буферах сообщений, для этого добавим следующую строку в конфиг:
(add-hook 'jabber-chat-mode-hook 'flyspell-mode)
Это я обнаружил тут
Как видно, тут используется интересный механизм емакса — ловушки (hooks), т.е. запуск некоторых заданных функций при наступлении какого-то события (в нашем примере при переключении в режим чата, а такой режим используется во всех окнах сообщений jabber.el включается проверка орфографии «на лету»).
В своей короткой статье я, конечно же, не описал и сотую долю возможностей jabber.el, а уж тем более Emacs-а, — я ведь такой же новичок в Emacs-е, как и многие другие. Хотелось бы отметить, что многие вопросы, мне помогли решить люди из конференции emacs@conference.jabber.ru и я им очень за это благодарен.
И в заключение, хочу сказать, что возможно, такой jabber-клиент покажется новичку неудобным, но поверьте, через несколько недель плотного общения с Emacs-ом, вы взглянете на него по-новому.
Егор Баранов @Goganchic
карма
89,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (38)

  • +1
    1.спасибо за статью - все четко и по делу.
    2.а вобще, удобно юзать IM вкупе с редактором? от работы не отрывает?
    3.ЛОРу привет ))
    • 0
      Да нет, не мешает. Просто пореже открывать буфер с roster'ом.
    • +1
      Самый класс. Не отрывает на переклацывание окна )
      Привет с лора )
    • 0
      Я вот что по этому вопросу думаю: если ты хочешь отвлечься от работы, то тут все равно будет, отдельным окном у тебя IM или совместно с редактором, а вот если ты не хочешь отвлечься, да и надо время от времени советоваться с коллегой, который сидит в другом конце комнаты или вообще в другом оффисе, то jabber.el будет очень кстати.
    • 0
      2. Есть такая хорошая программа, называется Intellij IDEA. Она тоже умеет jabber ;) Причем можно послать коллеге позицию в файле.
  • +1

    Автор, исправьте, пожалуйста, в заголовке «дажббер» → «джаббер»
    + по мелочи: «контороля» → «контроля», «конифигурации» → «конфигурации», «естеснвенно» → «естественно», «буфферах» → «буферах»

    (но это уже по желанию — главное, что содержание хорошее)

    За материал спасибо:)

    • 0
      Извиняюсь за грамматические ошибки: ночью в пятницу писал, так что бывает :) Все поправил.
  • 0
    Btw на хабре есть полумёртвый блог emacs, может туда?
    • 0
      Хм, я в принципе не против. А можно ли на хабре одну статью сразу в два блога запостить?
  • 0
    А у меня всё руки не доходят... посмотреть... =(((
  • +1
    > дажббер-клиента емакса
    Превет, русская языка.

    По теме: использую Emacs только ради jabber.el, так и не нашел другого юзабельного консольного Jabber-клиента. Может есть варианты?
    • +1
      Mcabber?
      • 0
        «Консольность» есть, юзабельности нет. :)
    • 0
      centerim?
      • 0
        Тоже не юзабелен, иногда ломает ростер, что очень неприятно (контакты переименовываются в JID-ы и помещаются в одну группу, остальные группы убиваются). Да и вообще реализация XMPP там довольно странная, на сколько я помню...
        • 0
          finch(консольная часть Pidgin)
          • 0
            О, не смотрел. Посмотрю, но отношение к птицгыну намекает на качество...
            • 0
              мне их консольный вариант понравился, в свое время :)
              а отношение к Pidgin у него можете считать такое же, как у Adium.
              альтернативный интерфейс к libpurple
  • 0
    В jabber-el пару месяцев назад куда то отломали хистори по C-up. А так вообще вместе с electric buffers - это мегачудесная штука. Единственное что, с прокси приходится немного шаманить.
    • 0
      У нас с прокси в конторе как-то не очень строго: начали люди использовать джаббер, подошли к менеджеру, он написал запрос админам и теперь у нас джаббер без проксей =)
    • 0
      А они там разве были? Если да, опиши что было — будем чинить.
  • 0
    О! Лисп! я его 2 недели назад сдавал)
    • 0
      emacs lisp это один из вариантов lisp. Относительно clisp он очень другой.
  • 0
    Даешь блог о emacs!
    • 0
      Ой, он уже есть.
      Ну тогда даешь в блог о emacs!
  • +1
    а может я линуксойд-фанатик
    ...действительно, а может?..
    но почитать новости на ЛОР-е удобно вполне
    ...а вот эта фраза уже выдала вас с головой :)
    • 0
      ничего не могу с собой поделать =)
  • 0
    Когнитивный диссонанс - Emacs ломает принципы юникса, но в то же время разработан идеологом GNU(Gnu's not UNIX) Ричардом Столлманом, который, несмотря на название "флага", который он несет, им(принципам) во многом следует.

    А вообще я люблю VIM(который недалеко ушел от Emacs в порождении этого самого диссонанса:)
    • 0
      >Emacs ломает принципы юникса
      Я использую Emacs в Линуксе, а не в юниксе и для меня в первую очередь имеет значение удобство, а уж потом всякие юникс-веи =)
    • 0
      Каким образом он ломает принципы юникса?
      • 0
        Известно каким: в юниксе принцип такой: каждая утилита должна делать только то, для чего она предназначена, например, текстовый редактор должен только позволять редактировать текст, почтовый клиент - только читать почту, плейер - только проигрывать музыку, а емакс, который изначально текстовый редактор, выполняет полно функций, которые не соответствуют занимаемой им должности. Поэтому емакс - не юникс вей.
        • +1
          Это как посмотреть. Предлагаю попытаться "за лесом разглядеть деревья".

          Мне близка позиция описанная Реймондом в его "Искусстве Программирования для Юникс", в главе "13.3.3 Является ли Емакс доводом против Юникс-традиций?", где он предлагает рассматривать Емакс (по сути та часть, которая написана на си) как виртуальную машину или конструкцию вокруг лисп-скриптов, которые по отдельности "делают одну вещь, но делают ее хорошо" - этот скриптик делает подсветку/отступы ruby, этот выводит номера строк, тот - выводит тулбар со списком буферов и т.д. Чем не юникс-вей? Напрягает тетрис и гнус? Просто удалите их. Аналогия - shell и сотни тысяч скриптов, которые к нему написаны. Разница лишь в том, что дистрибьюторы не поставляют shell со всеми скриптами к нему.

          Дуг Макилрой, кстати, vi, как и Емакс, назвал уродливым. Но это же не повод переходить на ed. )
        • 0
          Емакс разрабатывался не как текстовый редактор, а как платформа для приложений на elisp.
          Первыми приложениями стали текстовый редактор и news-клиент, т.к. это были самые актуальные в то время приложения.
        • 0
          Emacs — не юникс вей, потому что GNU — не юникс.
  • НЛО прилетело и опубликовало эту надпись здесь
  • НЛО прилетело и опубликовало эту надпись здесь
    • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    Это все заурядность, Емакс сразит на повал любого возможностью хакать его, причем прям в рантайме.
    Хаки в студию!!
    Рекомендую побродить по http://www.emacswiki.org/cgi-bin/wiki
    И заглянуть на канал #emacs на freenode

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.