# -*- mode:org; mode:auto-fill; fill-column:80; coding:utf-8; -*-
* weechat.el - Chat via Weechat in Emacs
  Please note: This README is work in progress.  A more detailed documentation
  will follow.

  weechat.el requires Emacs 24 and [[https://github.com/magnars/s.el][s.el]].  For Emacs versions below 24.3
  you also need [[http://elpa.gnu.org/packages/cl-lib.html][cl-lib]].  WeeChat version 0.4.0 or newer is recommended!

  You can install weechat.el via package.el ([[https://stable.melpa.org/][melpa-stable]] (stable releases) or
  [[http://melpa.milkbox.net/#installing][melpa]] (development snapshot)):

  : M-x package-install RET weechat RET

  See [[file:NEWS.org][NEWS.org]] for major changes in releases.
** Manual Installation
   - Install dependencies via package.el:

    : M-x package-install RET s RET

   - If your Emacs is older than 24.3:
   
    : M-x package-install RET cl-lib RET

   - Download this directory to your system and add it to the =load-path=:

    : (add-to-list 'load-path (expand-file-name "path/to/weechat.el/"))

   - Load weechat.el

    : (require 'weechat)

     (You can add this to your =~/.emacs.d/init.el= or similar)

** Usage
   First, setup the relay server in weechat.  Please refer to the
   [[http://www.weechat.org/files/doc/stable/weechat_user.en.html#relay_weechat_protocol][manual]].

   To load and establish a connection:

   : (require 'weechat)
   : M-x weechat-connect RET

   To show a channel in Emacs, do:

   : M-x weechat-monitor-buffer RET

** Color settings
   Most colors in weechat.el come directly from WeeChat and are only
   translated into Emacs faces.  There are a few notable exceptions
   such as =weechat-highlight-face= or =weechat-nick-self-face=.

   If you are unsatisfied with the colors that WeeChat send then
   either change the corresponding color in WeeChat or customize
   =weechat-color-list=.  Do *not* add or remove any values in the
   list!  Simply change the value.  Using =rainbow-mode= (from GNU
   ELPA) or =list-colors-display= can help finding good values.

   The default configuration tries to match the WeeChat colors as
   close as possible.  Example for colors that go better with the
   Emacs' default theme are:

#+BEGIN_SRC emacs-lisp
  (setq weechat-color-list '(unspecified "black" "dim gray" "dark red" "red"
                                         "dark green" "green" "brown"
                                         "orange" "dark blue" "blue"
                                         "dark magenta" "magenta" "dark cyan"
                                         "royal blue" "dark gray" "gray"))
#+END_SRC

   If you do not want any color then set =weechat-debug-strip-formatting= to
   =t=.
** SSL
   See documentation in [[file:SSL.org][SSL.org]].
** Modules
   Weechat.el comes with module support.  Modules can be loaded by simply
   calling =load-library= and removed by using =unload-feature=.  The variable
   =weechat-modules= can be customized to set default loaded modules.

   Available modules are:
*** Button
    This module provides support for buttons in chat windows.  E.g., it turns
    URLs into clickable buttons.  The module is default loaded.  See =weechat-modules=.

    It supports several types of buttons such as URLs, Channels, Emacs' symbols,
    E-Mails, Manpages, Info links, and Nick names.  However not all buttons are
    activated as default.  See customization group =weechat-button= to enable
    and disable specific buttons.

    You can use =weechat-button-list= to simply add your own button types.
*** Complete
    This module provides support for nickname and command completion. It uses
    Emacs' =pcomplete= framework and is default loaded.
    
    If you want case-insensitive completion, set =completion-ignore-case= to
    =t=.
*** Spelling
    This module provides spelling support by using Emacs' =flyspell=.  You can
    customize the dictionary on a per channel/server basis by customizing
    =weechat-spelling-dictionaries=.
*** Notifications
    Weechat.el supports notifications for important messages, such as
    highlights or queries.  The support is either based on =notifications.el=
    which is shipped with Emacs since version 24 and uses the Freedesktop
    notification spec.  Another solution is based on [[http://www.emacswiki.org/emacs/Sauron][Sauron]].

    To activate notifications you have to load the matching module.  Either
    =weechat-notifications= for =notifications.el= or =weechat-sauron= for
    Sauron support.

    To change the message types you want to receive notifications for customize
    =weechat-notification-types=.
**** notifications.el
     Loading the =weechat-notifications= module uses =notifications.el=
     to display notifications.  This uses the Freedesktop notification spec and
     should work fine on most Linux systems.

     You can customize =weechat-notifications-sound= to play a sound on
     notification.  Setting =weechat-notifications-icon= allows to change the
     notification icon.
**** Sauron
     The =weechat-sauron= module uses [[http://www.emacswiki.org/emacs/Sauron][Sauron]] for notifications.
*** Tracking
    The =weechat-tracking= module provides tracking information in the mode
    line, similar to erc-track.  It uses the [[https://github.com/jorgenschaefer/circe/wiki/Tracking][Tracking]] library (available on
    marmalade or el-get).
*** Smiley
    This module uses Gnus' =smiley-region= support to convert text smileys,
    such as :-), into a graphical representation.  See the documentation of
    =smiley.el= on how to customize it.
*** LaTeX
    The =weechat-latex= module provides a simple preview function for embedded
    LaTeX.  It is based Org's LaTeX preview functionality and many of Org's
    LaTex customizations apply to it as well.  Use =weechat-latex-preview= to
    generate previews and =weechat-latex-remove= to remove them.

    There is also =weechat-latex-auto-mode= to automatically turn LaTeX
    fragments in every new message into a preview.

    By using =weechat-latex-preview-region= or =weechat-latex-preview-line=
    the LaTeX previews can be limited to certain parts of the buffer.
*** Speedbar
    The =weechat-speedbar= module provides Emacs' Speedbar integration.  After
    loading the module and opening the Speedbar there should be a Display mode
    called "WeeChat" available.
*** Image
    This modules allows (embedded) previews of image urls.  After loading the
    module a button should appear next to urls to image files.  By clicking the
    button images should be opened inline and by clicking the button again they
    should be removed.

    By changing =weechat-image-display-func= the images can instead be opened
    inside the buffer =weechat-image-buffer=.  The detection of image URLs can
    be influenced with =weechat-image-url-regex= and
    =weechat-image-url-blacklist-regex=.

    Be careful when loading images of sources you do not trust.  Change
    =weechat-image-size-limit= to prevent the display of large images.
* Contact
  Feel free to contact us via Github, Email, or IRC (#weechat.el on Freenode)

  We appreciate every comment, suggestion, or nagging for missing features.
  Tell us your story!

* Contributors
  Please add yourself to this list when you contribute code!
  
  - [[https://github.com/the-kenny][Moritz Ulrich]] (Maintainer)
  - [[https://github.com/ruediger][Rüdiger Sonderfeld]]
  - [[https://github.com/aristidb][Aristid Breitkreuz]]
