войти зарегистрироваться

Emacs whois

индекс
76,06

Twit.el — twitter клиент для Emacs

Twitter все более плотно входит в нашу жизнь, о чем свидетельствуют соответствующие топики на Habr'е. Поэтому неудивительно, что были созданы twitter-клиенты и для Emacs. Рассмотрим один из самых популярных — twit.el

image

Скачать 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 уже реализовали функцию, отправляющую уведомление через todochikutwit-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)

  • С легким офигением нашел имя коллеги в changelog'е:
    ;; * 0.0.6 -- Re-working twit-show-recent-tweets to show more info
    ;;            (and to get it working for me) -- by H Durer
    
  • скорее бы емакс научился готовить кофе/чай
    • Кофе с 1999-го года умеет:

      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/
  • Мне как-то больше понравился twitter.el
    • Надо будет посмотреть.
    • угу, я тоже им пользуюсь…
  • Осталось подождать, пока появится BitTorrent-клиент для Emacs и можно «мигрировать» на EmacsOS.
    • Ну так не уверен есть ли что-то готовое, но с консольным rtorrent вроде как можно связать. ;))
      • угу, можно. xmlrpc-клиент на elisp я видел, а rtorrent именно такой интерфейс для управления предоставляет =)
  • А ещё есть twittering-mode

    Сам я тоже twit.el использую. Понадобилось мне сделать загрузку картинок на twitpic, так что вот: blog.vyazovoi.info/2009/07/elisp-twitpic-twitel.html
    Правда я не стал разбираться с формированием данных post-запросов и воспользовался curl. Так что на windows скорее всего без правки не заработает. Да и было бы прямее написать всё на elisp (может быть потом).

    Мне не понравилось, что после вызова twit-follow-recent-tweets окно Emacs'а делится на 2 фрейма...


    Писать функцию-обертку не самый прямой метод, для этого есть defadvice:

    (defadvice twit-follow-recent-tweets
      (after twit-follow-recent-tweets first () activate)
      (delete-other-windows))
    


    Ещё вариант — переопределить функцию, но все-таки defadvice создан именно для таких задач.
    • Как говориться: «век живи — век учись», не знал про такой способ, добавлю в статью.
  • А как загрузить следующую порцию твитов?
    • C-h f twit-show-recent-tweets
      Используется префиксный аргумент, из описания этой функции: C-u n
      где n — номер страницы

      Т.е. для сочетания по умолчанию: C-u 2 C-t s
      Или: C-u 3 M-x twit-show-recent-tweets
      • Ух ты, настоящий emacs-way. А я-то упорно искал что-нибудь типа next-page.
  • bobuk будет доволен
  • Когда же сделают EmacsOS?
    • Как и Google, они просто не спешат добавлять «OS» к своим брэндам. На самом деле всё уже давно готово ;)
  • Nero и ACD покрылись холодным потом, глядя на Emacs.
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.