summaryrefslogtreecommitdiffstats
path: root/emacs/.emacs.d/init-lui.org
blob: c880642d4696f30c56f5bb004bfd9858e74e908f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#+PROPERTY: tangle site-lisp/lui-init.el
#+STARTUP: content

Since starting to use Circe I've also tried using the lui library on
another project: emacs-slack. This has caused lui to be loaded without
circe being loaded, so my lui customizations need to be loaded
separately when lui is loaded, not when circe is loaded.

* Enable lexical binding

  #+BEGIN_SRC emacs-lisp :padline no
    ;; -*- lexical-binding: t -*-
  #+END_SRC

* Require the needed libraries

  In order to keep compiler warnings to a minimum, I require the
  libraries that are used in this configuration.

  #+BEGIN_SRC emacs-lisp
    (require 'lui)
  #+END_SRC

* Change the time-stamp

  I use only a small window to view the IRC channel I'm in usually,
  the default format put the time-stamp just a little too far to the
  right and would always cause either line truncation or filling to
  the next line. So I put the time-stamp in the right margin so it's
  always to the right of all messages and no messages can run under
  it, so essentially it has it's own column.

  #+BEGIN_SRC emacs-lisp
    (setq lui-time-stamp-position 'right-margin)
    (setq lui-time-stamp-format "%H:%M")
  #+END_SRC

  Give the right margin just enough room to show the time-stamps, no
  more, no less.

  #+BEGIN_SRC emacs-lisp
    (defun oni:set-circe-margin-width ()
      (setq right-margin-width 5))

    (add-hook 'lui-mode-hook #'oni:set-circe-margin-width)
  #+END_SRC

* Clean-up the channel buffers further

  When chatting with people in an IRC channel, there really isn't much
  need for any information in the mode-line. This is mostly because
  the channel I'm most active on always has its own window. Visual
  line mode is very handy to have in chats, in case I type very long
  lines. And the =wrap-prefix= is set so that when I do type long lines,
  they are filled nicely to the circe prompt.

  #+BEGIN_SRC emacs-lisp
    (defun oni:remove-mode-line ()
      (setq mode-line-format nil))

    (defun oni:set-lui-prompt-wrap-prefix ()
      (setq wrap-prefix "  "))

    (add-hook 'lui-mode-hook #'oni:remove-mode-line)
    (add-hook 'lui-mode-hook #'oni:set-lui-prompt-wrap-prefix)
    (add-hook 'lui-mode-hook 'visual-line-mode)
  #+END_SRC

* Provide the right feature

  In order to be able to use =(require 'lui-init)= we must first
  =provide= it.

  #+BEGIN_SRC emacs-lisp
    (provide 'lui-init)
  #+END_SRC