bobry 11.09.2009 04:42
Emacs — Смайлики в jabber.el
Наверное в рядах суровых пользователей Emacs'a не найдется того, кто ничего не слышал о не менее суровом jabber.el. Но учитывая вероятность того, что этот пост могут читать люди, далекие от geekовых дел, смело отправляю всех незнающих в блог Alex Ott. Вкратце, jabber.el - это пакет, добавляющий к Emacs функционал необходимый для работы с XMPP протоколом. Естественно, как это часто бывает - он далеко не одинок на поприще IM пакетов для Emacs'a, но какого то реального, активно разрабатываемого конкурента, у jabber.el на данный момент нет.Итак, ближе к делу. Несмотря на всю свою исключительность и удобство, jabber.el лишен такой, казалось бы элементарной для IM клиента вещи, как поддержка смайлов. Лично меня такое упущение сильно опечалило, ибо избалованный pidginами и qutIMами я привык получать и отправлять эти маленькие бесполезные картинки. Посему было решено научить jabber.el тому, чего мне так не хватало.
Решение №1 (для минималистов)
На бескрайних просторах EmacsWiki было обнаружено занятное дополнение, именуемое Autosmiley, заменяющее все смайлоподобные конструкции в буфере на соответствующие изображения. Для работы оно использует пакет smiley, который идет в стандартной поставке Emacs, вместе с почтовым клиентом gnus. Для его использования достаточно добавить в ваш файл конфигурации что нибудь в духе:
1 |
(require 'autosmiley)
|
Решение №2
И все было бы хорошо и замечательно, если бы не одно НО: зависимость от gnus накладывает на Autosmiley одно очень неприятное ограничение: он отображает смайлики, используя стандартные ресурсы gnus. Выглядит это довольно не сексуально:
Крайнее отвращение к изображенному выше сподвигло меня на написание дополнения к Autosmiley которое бы добавляло к нему возможность смены схемы смайликов на что нибудь более привлекательное. Код, приведенный ниже читает схему смайликов из xml файла Kopete, но думаю, сделать так чтобы он поддерживал формат qutIM или pidgin не составит труда.
Оказалось, что smiley.el, отвечающий за отрисовку смайлов, использует несколько важных переменные, для получения информации о том какие смайлы на что заменять:
smiley-regexp-alist список элементов вида (regexp количество_повторений filename), где filename - имя соответствующего файла, без расширения
smiley-data-directory путь к директории со смайликами, именно там будет производиться поиск указанного в smiley-regexp-alist filename
gnus-smiley-file-types список типов файлов, которые в совокупности с filename дадут требуемое имя файла
Значит, чтобы заставить Autosmiley рисовать нужные нам смайлики нужно сделать три вещи:
создать регулярное выражение, связывающее regexp'ы смайликов с нужными нам файлами
указать директорию, содержащую файлы смайликов
при необходимости добавить расширение в список поддерживаемых типов файлов
Реализация каждого пункта по порядку:
1 |
(setq smiley-base-directory (concat (getenv "HOME") "/.emacs.d/smileys/"))
|
Результатат получается примерно следующий:
code
лично меня она не очень смущает, думаю что прицепить другой пак с соответствующим xml не сложно
Вроде как xml менять не придётся, там просто подправленные гифы.
Отличаются только смайлы *CRAZY* и *IN LOVE*. Могу подправить оригинальные, если кому надо )
Отличаются только смайлы *CRAZY* и *IN LOVE*. Могу подправить оригинальные, если кому надо )
*CRAZY*
http://img9.imageshack.us/img9/8554/95155837.gif
С *IN LOVE* всё нормально, это я с другим паком спутала.
http://img9.imageshack.us/img9/8554/95155837.gif
С *IN LOVE* всё нормально, это я с другим паком спутала.
прикольно! спасибо!
только я использую чисто текстовые смайлы в jabber-el, привычнее как-то...
только я использую чисто текстовые смайлы в jabber-el, привычнее как-то...
http://rapidshare.com/files/278362245/smiles.tar.gz.html