73 lines
2.0 KiB
EmacsLisp
73 lines
2.0 KiB
EmacsLisp
;;; acdw-irc.el -*- lexical-binding: t; coding: utf-8-unix -*-
|
||
|
||
(require 's nil :noerror)
|
||
|
||
(defgroup acdw-irc nil
|
||
"Customizations for IRC."
|
||
:group 'applications)
|
||
|
||
(defcustom acdw-irc/left-margin 16
|
||
"The size of the margin for nicks, etc. on the left."
|
||
:type 'integer)
|
||
|
||
(defcustom acdw-irc/pre-nick ""
|
||
"What to show before a nick."
|
||
:type 'string)
|
||
|
||
(defcustom acdw-irc/post-nick " | "
|
||
"What to show after a nick."
|
||
:type 'string)
|
||
|
||
(defcustom acdw-irc/pre-my-nick "-"
|
||
"What to show before the current user's nick."
|
||
:type 'string)
|
||
|
||
(defcustom acdw-irc/post-my-nick "-> "
|
||
"What to show after the current user's nick."
|
||
:type 'string)
|
||
|
||
(defcustom acdw-irc/ellipsis "~"
|
||
"The ellipsis for when a string is too long."
|
||
:type 'string)
|
||
|
||
|
||
;;; Convenience functions (I don't want to /depend/ on s.el)
|
||
|
||
(if (fboundp 's-repeat)
|
||
(defalias 'repeat-string 's-repeat)
|
||
(defun repeat-string (num s)
|
||
"Make a string of STR repeated NUM times.
|
||
Stolen from s.el."
|
||
(declare (pure t) (side-effect-free t))
|
||
(let (ss)
|
||
(while (> num 0)
|
||
(setq ss (cons s ss))
|
||
(setq num (1- num)))
|
||
(apply 'concat ss))))
|
||
|
||
|
||
;;; IRC stuff
|
||
|
||
(defun acdw-irc/margin-format (str &optional before after alignment)
|
||
"Print STR to fit in `acdw-irc/left-margin'.
|
||
Optional arguments BEFORE and AFTER specify strings to go
|
||
... before and after the string. ALIGNMENT aligns left on nil
|
||
and right on t."
|
||
(let* ((before (or before ""))
|
||
(after (or after ""))
|
||
(str-length (length str))
|
||
(before-length (length before))
|
||
(after-length (length after))
|
||
(max-length (- acdw-irc/left-margin 1 (+ before-length after-length)))
|
||
(left-over (max 0 (- max-length str-length))))
|
||
(format "%s%s%s%s%s"
|
||
before
|
||
(if alignment (repeat-string left-over " ") "")
|
||
(truncate-string max-length str acdw-irc/ellipsis)
|
||
(if alignment "" (repeat-string left-over " "))
|
||
after)))
|
||
|
||
|
||
(provide 'acdw-irc)
|
||
;;; acdw-irc.el ends here
|