emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 2b69a4d: Add support for italic text in ERC


From: Amin Bandali
Subject: master 2b69a4d: Add support for italic text in ERC
Date: Wed, 12 Aug 2020 13:39:34 -0400 (EDT)

branch: master
commit 2b69a4df78fcca44387368583e170db860f0013b
Author: Amin Bandali <bandali@gnu.org>
Commit: Amin Bandali <bandali@gnu.org>

    Add support for italic text in ERC
    
    * lisp/erc/erc-goodies.el (erc-italic-face): New face for italic text.
    (erc-controls-interpret), (erc-controls-highlight): Add `italicp'.
    (erc-controls-remove-regexp),
    (erc-controls-highlight-regexp): Handle C-] for italic.
    (erc-controls-propertize): Add `italicp' argument and use it to
    conditionally propertize text with the new `erc-italic-face'.
    * etc/NEWS: Announce italic text support.
---
 etc/NEWS                |  4 ++++
 lisp/erc/erc-goodies.el | 27 +++++++++++++++++++++------
 2 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index b25e43b..2be9743 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -717,6 +717,10 @@ https://www.w3.org/TR/xml/#charsets).  Now it rejects such 
strings.
 *** The /ignore command will now ask for a timeout to stop ignoring the user.
 Allowed inputs are seconds or ISO8601-like periods like "1h" or "4h30m".
 
+---
+*** ERC now recognizes C-] for italic text.
+Italic text is displayed in the new 'erc-italic-face'.
+
 ** Battery
 
 ---
diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el
index 94d5de2..ff7a77f 100644
--- a/lisp/erc/erc-goodies.el
+++ b/lisp/erc/erc-goodies.el
@@ -232,6 +232,10 @@ The value `erc-interpret-controls-p' must also be t for 
this to work."
   "ERC bold face."
   :group 'erc-faces)
 
+(defface erc-italic-face '((t :slant italic))
+  "ERC italic face."
+  :group 'erc-faces)
+
 (defface erc-inverse-face
   '((t :foreground "White" :background "Black"))
   "ERC inverse face."
@@ -383,6 +387,7 @@ See `erc-interpret-controls-p' and 
`erc-interpret-mirc-color' for options."
               (erc-controls-strip s))
              (erc-interpret-controls-p
               (let ((boldp nil)
+                    (italicp nil)
                     (inversep nil)
                     (underlinep nil)
                     (fg nil)
@@ -401,6 +406,8 @@ See `erc-interpret-controls-p' and 
`erc-interpret-mirc-color' for options."
                            (setq bg bg-color))
                           ((string= control "\C-b")
                            (setq boldp (not boldp)))
+                          ((string= control "\C-]")
+                           (setq italicp (not italicp)))
                           ((string= control "\C-v")
                            (setq inversep (not inversep)))
                           ((string= control "\C-_")
@@ -413,13 +420,14 @@ See `erc-interpret-controls-p' and 
`erc-interpret-mirc-color' for options."
                              (ding)))
                           ((string= control "\C-o")
                            (setq boldp nil
+                                 italicp nil
                                  inversep nil
                                  underlinep nil
                                  fg nil
                                  bg nil))
                           (t nil))
                     (erc-controls-propertize
-                     start end boldp inversep underlinep fg bg s)))
+                     start end boldp italicp inversep underlinep fg bg s)))
                 s))
              (t s)))))
 
@@ -432,13 +440,13 @@ See `erc-interpret-controls-p' and 
`erc-interpret-mirc-color' for options."
       s)))
 
 (defvar erc-controls-remove-regexp
-  "\C-b\\|\C-_\\|\C-v\\|\C-g\\|\C-o\\|\C-c[0-9]?[0-9]?\\(,[0-9][0-9]?\\)?"
+  
"\C-b\\|\C-]\\|\C-_\\|\C-v\\|\C-g\\|\C-o\\|\C-c[0-9]?[0-9]?\\(,[0-9][0-9]?\\)?"
   "Regular expression which matches control characters to remove.")
 
 (defvar erc-controls-highlight-regexp
-  (concat "\\(\C-b\\|\C-v\\|\C-_\\|\C-g\\|\C-o\\|"
+  (concat "\\(\C-b\\|\C-]\\|\C-v\\|\C-_\\|\C-g\\|\C-o\\|"
           "\C-c\\([0-9][0-9]?\\)?\\(,\\([0-9][0-9]?\\)\\)?\\)"
-          "\\([^\C-b\C-v\C-_\C-c\C-g\C-o\n]*\\)")
+          "\\([^\C-b\C-]\C-v\C-_\C-c\C-g\C-o\n]*\\)")
   "Regular expression which matches control chars and the text to highlight.")
 
 (defun erc-controls-highlight ()
@@ -451,6 +459,7 @@ Also see `erc-interpret-controls-p' and 
`erc-interpret-mirc-color'."
            (replace-match "")))
         (erc-interpret-controls-p
          (let ((boldp nil)
+               (italicp nil)
                (inversep nil)
                (underlinep nil)
                (fg nil)
@@ -467,6 +476,8 @@ Also see `erc-interpret-controls-p' and 
`erc-interpret-mirc-color'."
                       (setq bg bg-color))
                      ((string= control "\C-b")
                       (setq boldp (not boldp)))
+                     ((string= control "\C-]")
+                      (setq italicp (not italicp)))
                      ((string= control "\C-v")
                       (setq inversep (not inversep)))
                      ((string= control "\C-_")
@@ -479,16 +490,17 @@ Also see `erc-interpret-controls-p' and 
`erc-interpret-mirc-color'."
                         (ding)))
                      ((string= control "\C-o")
                       (setq boldp nil
+                            italicp nil
                             inversep nil
                             underlinep nil
                             fg nil
                             bg nil))
                      (t nil))
                (erc-controls-propertize start end
-                                        boldp inversep underlinep fg bg)))))
+                                        boldp italicp inversep underlinep fg 
bg)))))
         (t nil)))
 
-(defun erc-controls-propertize (from to boldp inversep underlinep fg bg
+(defun erc-controls-propertize (from to boldp italicp inversep underlinep fg bg
                                      &optional str)
   "Prepend properties from IRC control characters between FROM and TO.
 If optional argument STR is provided, apply to STR, otherwise prepend 
properties
@@ -500,6 +512,9 @@ to a region in the current buffer."
    (append (if boldp
                '(erc-bold-face)
              nil)
+           (if italicp
+               '(erc-italic-face)
+             nil)
            (if inversep
                '(erc-inverse-face)
              nil)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]