Twitter все более плотно входит в нашу жизнь, о чем свидетельствуют соответствующие топики на Habr'е. Поэтому неудивительно, что были созданы twitter-клиенты и для Emacs. Рассмотрим один из самых популярных —
twit.el
Скачать
twit.el можно
отсюда. Прежде всего необходимо сделать этот файл видимым Emacs'у, для этого служит следующий код:
(load-file "/home/pavel/.emacs.d/modes/twit.el")
Естественно, что на вашей машине пути к .el-файлам могут отличаться. Теперь нам стали доступны функции
twit.el и режим
Twit-recent. Хочу сказать, что
twit.el поддерживает многопользовательскую работу, но мы ее рассматривать не будем. Мы хотим получить обычный твиттер-клиент, который логинится под нашим именем и периодически получает твиты.
Поэтому укажем
twit.el нашу святую пару логин/пароль:
(custom-set-variables '(twit-user "login"))
(custom-set-variables '(twit-pass "password"))
И конечно соединимся с твиттером и запросим последние твиты. Для этого служит команда
twit-show-recent-tweets. Если же мы хотим, чтобы последние твиты запрашивались периодически — нам необходимо выполнить коману
twit-follow-recent-tweets. Твиты будут запрашиваться с периодичностью, указанной в переменной
twit-follow-idle-interval, по умолчанию это — 90 секунд.
Мне не понравилось, что после вызова
twit-follow-recent-tweets окно Emacs'а делится на 2 фрейма. Мне было бы гораздо удобнее, если бы твиттер занимал все окно Emacs'а, для этого я написал функцию, которая стартует твиттер-клиент и прибивает остальные окна (понятно, что буфера при этом не прибиваются, поэтому ничего страшного не произойдет).
(defun my-start-twitter ()
(interactive)
(twit-follow-recent-tweets)
(delete-other-windows))
Предлагаю забиндить эту функцию на какую-нибудь комбинацию клавиш, например, на
F10:
(global-set-key [f10] 'my-start-twitter)
UPD: хабрапользователь
vyazovoi предложил более грамотный способ: воспользоваться
defadvice:
(defadvice twit-follow-recent-tweets
(after twit-follow-recent-tweets first () activate)
(delete-other-windows))
Все, собственно twitter-клиентом можно пользоваться. Если нажать
w, то в минибуфере можно будет написать и отправить сообщение,
u позволяет вставить URL — он будет заменен на короткий. Если с помощью клавиш управления курсором выбрать пользователя и нажать
t, то ему можно будет послать твит,
r, соответственно — ретвит.
f выводит список фоловеров,
@ — список сообщений, отправленных вам.
h и
? позволяют увидеть весь список горячих клавиш. Рекомендую его посмотреть, среди полезных вещей есть еще фоловинг/унфоловинг, ретвит, отправка прямых сообщений, добавление/удаление избранного, поиск и обращение к
twitanalizer (вызывается в браузере).
По умолчанию внешний вид твиттер-клиента оставляет желать лучшего, в частности напрягают шрифты. Ну и хочется подключить отображение юзерпиков. С них и начнем:
(custom-set-variables '(twit-show-user-images t))
(custom-set-variables '(twit-user-image-dir "~/.twitim"))
Так же можно задать протокол по которому клиент будет работать: http или https. Понятно, что работа по http будет быстрее, но опаснее — все данные в том числе и пароль будут передаваться открытым текстом.
(custom-set-variables '(twit-protocol "http"))
Теперь займемся внешним видом. Я решил не расписывать все настройки, покажу лишь основное:
(custom-set-faces
'(twit-message-face ((default (:height 0.9 :family "Droid Sans"))))
'(twit-author-face ((default (:height 0.8 :family "Droid Sans"))))
'(twit-error-face ((default (:family "Droid Sans"))))
'(twit-favorite-face ((default (:height 0.9 :family "Droid Sans")))))
Как видим — мы установили везде шрифт Droid Sans и настроили размеры шрифта. Можно поиграться с настройками посредством
customize-face.
Напоследок рассмотрим такую вкусность, как
twit-new-tweet-hook. Данный хук позволяет нам навешивать обработчик на получение нового твита. Очень удобно использовать эту возможность для нотификации, например с помощью
todochiku.
Todochiku — это такая штука, которая с помощью
libnotify (в Linux, в других ОС используются другие библиотеки) выводит уведомления во всплывающих окошках. Разработчики
twit.el уже реализовали функцию, отправляющую уведомление через
todochiku —
twit-todochiku, поэтому можно сделать так:
(if (featurep 'todochiku)
(add-hook 'twit-new-tweet-hook 'twit-todochiku))
После чего на приход твита мы будем получать симпатичное уведомление, причем отображаемое на всех виртуальных рабочих столах.
З.Ы. Картинка в начале поста кликабельна.
З.Ы.Ы. По поводу вставки урлов — вероятно раньше сервис is.gd возвращал урлы немного не так (с закрывающим слешем, например), поэтому в коде функции
compres-url файла
twit.el была конструкция:
(substring returned-request url-idx -1)
Для корректной работы метода нужно заменить ее на
(substring returned-request url-idx)
Тогда последний символ короткого урла не будет обрезаться.
комментарии (18)
coffee.el allows Emacs users to submit a BREW request to an RFC2324-compliant coffee device (Hyper Text Coffee Pot Control Protocol, or HTCPCP). It prompts the user for the different additives, then issues a HTCPCP BREW request to the coffee device. You can probably guess how coffee.el came about ...yadda yadda everything but make coffee ...yadda yadda…
coffee.el requires a special BREW-capable version of Emacs/W3 to be installed. 1999-09-29, under GNU GPL. Available as part of the Debian package emacs-goodies-el.
emarsden.chez.com/downloads/
Сам я тоже twit.el использую. Понадобилось мне сделать загрузку картинок на twitpic, так что вот: blog.vyazovoi.info/2009/07/elisp-twitpic-twitel.html
Правда я не стал разбираться с формированием данных post-запросов и воспользовался curl. Так что на windows скорее всего без правки не заработает. Да и было бы прямее написать всё на elisp (может быть потом).
Писать функцию-обертку не самый прямой метод, для этого есть defadvice:
Ещё вариант — переопределить функцию, но все-таки defadvice создан именно для таких задач.
Используется префиксный аргумент, из описания этой функции: C-u n
где n — номер страницы
Т.е. для сочетания по умолчанию: C-u 2 C-t s
Или: C-u 3 M-x twit-show-recent-tweets