branch: externals/eev commit 615e83260a14eed914cc31f34364cc05527c7efc Author: Eduardo Ochs <eduardoo...@gmail.com> Commit: Eduardo Ochs <eduardoo...@gmail.com>
Make "eev-rcirc.el" support the LiberaChat server. --- ChangeLog | 18 ++++++++++++++ VERSION | 4 +-- eev-blinks.el | 1 + eev-intro.el | 69 +++++++++++++++++++++++++++++++-------------------- eev-pdflike.el | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- eev-rcirc.el | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- eev-tla.el | 18 +++++++++++++- eev.el | 2 +- 8 files changed, 223 insertions(+), 42 deletions(-) diff --git a/ChangeLog b/ChangeLog index c5c698c..3d42334 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2021-05-28 Eduardo Ochs <eduardoo...@gmail.com> + + * eev-pdflike.el (find-pdf-page): make it an alias to + `find-xpdf-page'. Also, the comments in "eev-pdflike.el" now say + that the recommened a way to change the default viewer is with a + `defalias'; before this change the recommended way was with a + `code-pdfbackend', that was much harder to understand. + + * eev-rcirc.el (ee-libera-server, ee-libera-ichannels) + (ee-libera-achannels): new variables. + (find-libera, find-libera-2a, find-libera-3a, eepitch-libera): new + functions. + + * eev-intro.el (find-rcirc-intro): use LiberaChat insted of + Freenode. + + * eev-tla.el: new file. + 2021-05-16 Eduardo Ochs <eduardoo...@gmail.com> * eev-blinks.el (ee-insert): use `characterp' instead of diff --git a/VERSION b/VERSION index 455d5fb..0bdc9ca 100644 --- a/VERSION +++ b/VERSION @@ -1,2 +1,2 @@ -Sat May 22 19:36:43 GMT 2021 -Sat May 22 16:36:43 -03 2021 +Sat May 29 04:31:39 GMT 2021 +Sat May 29 01:31:39 -03 2021 diff --git a/eev-blinks.el b/eev-blinks.el index c1d870e..4a2b803 100644 --- a/eev-blinks.el +++ b/eev-blinks.el @@ -1021,6 +1021,7 @@ Example: (ee-insert '(?a ?z) 10 \"Foo!\")" ;; Tests: (find-einsert '((32 1000) 10 (8000 12000))) ;; (find-einsert '("Greek:\n" (913 969) 10 "Bold:\n" (120276 120327))) +;; (find-einsert (list (char-from-name "MUSICAL SYMBOL C CLEF"))) (defun find-einsert (what &rest rest) "Show characters, strings, and ranges of characters in a temporary buffer. Example of use: (find-einsert '((32 1000) 10 (8000 12000)))" diff --git a/eev-intro.el b/eev-intro.el index 31a72be..8ab764a 100644 --- a/eev-intro.el +++ b/eev-intro.el @@ -19,7 +19,7 @@ ;; ;; Author: Eduardo Ochs <eduardoo...@gmail.com> ;; Maintainer: Eduardo Ochs <eduardoo...@gmail.com> -;; Version: 20210512 +;; Version: 20210529 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-intro.el> @@ -8914,8 +8914,13 @@ support for rcirc (and no support for ERC). The eev support for rcirc consists mainly of three high-level functions that connect to Freenode (the IRC server where most -discussion of free software projects happen), called -`find-freenode', `find-freenode-2a' and `find-freenode-3a'. +discussion of free software projects USED TO happen), and three +high-level functions that connect to LiberaChat (the IRC server +where most discussion of free software projects were moved to). +These functions are called: + + `find-freenode', `find-freenode-2a' and `find-freenode-3a', + `find-libera', `find-libera-2a' and `find-libera-3a'. For a good explanation of what IRC is, see: @@ -8929,21 +8934,21 @@ For a good explanation of what IRC is, see: Let's start with an example. In (setq rcirc-default-nick \"hakuryo\") - (setq ee-freenode-ichannels \"#eev\") - (find-freenode-3a \"#eev\") + (setq ee-libera-ichannels \"#eev\") + (find-libera-3a \"#eev\") the first sexp tells rcirc to use the nickname \"hakuryo\" when connecting to an IRC server; the second sets the set of \"initial -channels\" on Freenode to just one channel, #eev - a channel that -is usually empty, but that doesn't require authentication; the -third sexp is a \"sexp hyperlink to the Freenode channel #eev\". -The third sexp: +channels\" on LiberaChat to just one channel, #eev - a channel +that is usually empty, but that doesn't require authentication; +the third sexp is a \"sexp hyperlink to the LiberaChat channel +#eev\". The third sexp: 1) creates a window setting like this, _________________________ | | | - | | Freenode | + | | LiberaChat | | | server | | | messages | | current |_____________| @@ -8953,7 +8958,7 @@ The third sexp: | | | |___________|_____________| - 2) tells rcirc to connect to Freenode and to the channel #eev + 2) tells rcirc to connect to LiberaChat and to the channel #eev in it, 3) makes the window at the left - window \"A\" in the @@ -8979,7 +8984,7 @@ the other users in #eev, and to experiment with commands. See: ========================= Try this: - (find-freenode-2a \"#eev\") + (find-libera-2a \"#eev\") It creates a window setting like @@ -9015,6 +9020,10 @@ and how to use it as a one-window setting. Also: (global-set-key [f2] 'rcirc-next-active-buffer) + (find-eev \"eev-elinks.el\" \"find-esetkey-links\") + (find-eev \"eev-elinks.el\" \"find-esetkey-links\" \"video\") + (find-esetkey-links (kbd \"<f2>\") 'rcirc-next-active-buffer) + @@ -9030,39 +9039,39 @@ to rcirc. If you connect occasionally to the channels #eev, your .emacs: (setq rcirc-default-nick \"hakuryo\") - (defun e2 () (interactive) (find-freenode-2a \"#eev\")) - (defun e3 () (interactive) (find-freenode-3a \"#eev\")) - (defun m2 () (interactive) (find-freenode-2a \"#emacs\")) - (defun m3 () (interactive) (find-freenode-3a \"#emacs\")) - (defun g2 () (interactive) (find-freenode-2a \"#git\")) - (defun g3 () (interactive) (find-freenode-3a \"#git\")) - (defun r2 () (interactive) (find-freenode-2a \"#ruby\")) - (defun r3 () (interactive) (find-freenode-3a \"#ruby\")) + (defun e2 () (interactive) (find-libera-2a \"#eev\")) + (defun e3 () (interactive) (find-libera-3a \"#eev\")) + (defun m2 () (interactive) (find-libera-2a \"#emacs\")) + (defun m3 () (interactive) (find-libera-3a \"#emacs\")) + (defun g2 () (interactive) (find-libera-2a \"#git\")) + (defun g3 () (interactive) (find-libera-3a \"#git\")) + (defun r2 () (interactive) (find-libera-2a \"#ruby\")) + (defun r3 () (interactive) (find-libera-3a \"#ruby\")) -5. `find-freenode-links' +5. `find-libera-links' ======================== You can generate lines like the ones above by running -`find-freenode-links'. For example: +`find-libera-links'. For example: - (find-freenode-links \"e\" \"#eev\") - (find-freenode-links \"r\" \"#ruby\") + (find-libera-links \"e\" \"#eev\") + (find-libera-links \"r\" \"#ruby\") 6. Other servers ================ TODO: explain how to use find-rcirc-buffer and how to adapt -find-freenode-* to other servers. Example: +find-libera-* to other servers. Example: (find-rcirc-buffer-2a \"irc.debian.org\" \"#debian-live\" nil \"#debian-live\") (find-rcirc-buffer-3a \"irc.debian.org\" \"#debian-live\" nil \"#debian-live\") See: - (find-eev \"eev-rcirc.el\" \"find-freenode\") + (find-eev \"eev-rcirc.el\" \"find-libera\") " pos-spec-list))) @@ -13181,10 +13190,18 @@ The functions in the `code-c-d' family produce code that is first 8. `let' and `let*' =================== +See: (find-elnode \"Local Variables\" \"Special Form: let \") (find-elnode \"Local Variables\" \"Special Form: let* \") +Try: + + (setq y 2) + (let ((y 1) (z y)) (list y z)) + (let* ((y 1) (z y)) (list y z)) + + diff --git a/eev-pdflike.el b/eev-pdflike.el index cc77e8b..690bd3b 100644 --- a/eev-pdflike.el +++ b/eev-pdflike.el @@ -172,6 +172,7 @@ ;; «.code-xxxpdf-alias» (to "code-xxxpdf-alias") ;; ;; «.find-pdf-page» (to "find-pdf-page") +;; «.change-default-viewer» (to "change-default-viewer") ;; «.find-pdf-page-windows» (to "find-pdf-page-windows") ;; «.find-pdf-text» (to "find-pdf-text") ;; @@ -514,22 +515,81 @@ newline are spurious - and replaces them by \"(ff)\"." ;;; |_| |_| |___/ ;; ;; «find-pdf-page» (to ".find-pdf-page") -;; (find-code-pdfbackendalias "pdf-page" "xpdf-page") - (code-pdfbackendalias "pdf-page" "xpdf-page") +;; (find-code-pdfbackend "pdf-page") + (code-pdfbackend "pdf-page") -;; You can change the backend that `find-pdf-page' uses by running -;; something like this: +;; Make all functions in the `find-pdf-page' family use +;; `find-xpdf-page' by default, in way that makes this default easy to +;; change. This defalias will OVERRIDE the `find-pdf-page' defined by +;; the `code-pdfbackend' above. ;; -;; ;; (find-code-pdfbackendalias "pdf-page" "googlechrome-page") -;; (code-pdfbackendalias "pdf-page" "googlechrome-page") +(defalias 'find-pdf-page 'find-xpdf-page) +;; A VERY TECHNICAL DETAIL: apparently it would be cleaner to do +;; something like this, +;; +;; (defalias 'ee-find-pdf-page 'ee-find-xpdf-page) +;; +;; instead of: +;; +;; (defalias 'find-pdf-page 'find-xpdf-page) +;; +;; but if we changed the `ee-find-pdf-page' instead of `find-pdf-page' +;; then it would be much more difficult to change the default to +;; `find-pdftools-page', and then later change it back to, say, +;; `find-xpdf-page'... + + + +;;; ____ __ _ _ _ +;;; | _ \ ___ / _| __ _ _ _| | |_ __ _(_) _____ _____ _ __ +;;; | | | |/ _ \ |_ / _` | | | | | __| \ \ / / |/ _ \ \ /\ / / _ \ '__| +;;; | |_| | __/ _| (_| | |_| | | |_ \ V /| | __/\ V V / __/ | +;;; |____/ \___|_| \__,_|\__,_|_|\__| \_/ |_|\___| \_/\_/ \___|_| +;;; +;; «change-default-viewer» (to ".change-default-viewer") +;; To make `find-pdf-page' use another default viewer +;; you just have to use a `defalias', like this: +;; +;; (defalias 'find-pdf-page 'find-xpdf-page) +;; (defalias 'find-pdf-page 'find-evince-page) +;; (defalias 'find-pdf-page 'find-pdftools-page) +;; (defalias 'find-pdf-page 'find-texworkspdf-page) +;; (defalias 'find-pdf-page 'find-googlechrome-page) +;; +;; You can inspect the current definition of `find-pdf-page' by +;; looking at its "function cell". Function cells are explained here: +;; +;; (find-elisp-intro "6. Defining functions") +;; (find-elisp-intro "11. Byte-compiled functions") +;; +;; When a function is defined with `defalias' its function cell +;; contains a symbol - the "name" of the function that it points to. +;; Try: +;; +;; (find-efunctionpp 'find-pdf-page) +;; (symbol-function 'find-pdf-page) +;; (find-efunctionpp (symbol-function 'find-pdf-page)) +;; (find-efunctionpp 'find-xpdf-page) +;; (find-efunctionpp 'find-evince-page) +;; (find-efunctionpp 'find-pdftools-page) +;; (find-efunctionpp 'find-texworkspdf-page) +;; (find-efunctionpp 'find-googlechrome-page) + + +;;; ____ __ _ _ __ ___ +;;; | _ \ ___ / _| __ _ _ _| | |_ ___ _ __ \ \ / / | +;;; | | | |/ _ \ |_ / _` | | | | | __| / _ \| '_ \ \ \ /\ / / __) +;;; | |_| | __/ _| (_| | |_| | | |_ | (_) | | | | \ V V /\__ \ +;;; |____/ \___|_| \__,_|\__,_|_|\__| \___/|_| |_| \_/\_/ ( / +;;; |_| ;; «find-pdf-page-windows» (to ".find-pdf-page-windows") ;; (find-elnode "System Environment" "windows-nt") ;; (find-evardescr 'system-type) +;; (to "find-texworkspdf-page") ;; (if (eq system-type 'windows-nt) - ;; (find-code-pdfbackendalias "pdf-page" "texworkspdf-page") - (code-pdfbackendalias "pdf-page" "texworkspdf-page") + (defalias 'find-pdf-page 'find-texworkspdf-page) ) @@ -546,8 +606,6 @@ newline are spurious - and replaces them by \"(ff)\"." ;; (find-code-pdfbackendalias "pdf-text" "pdftotext-text") (code-pdfbackendalias "pdf-text" "pdftotext-text") -;; «aliases-windows» (to ".aliases-windows") - diff --git a/eev-rcirc.el b/eev-rcirc.el index d1b483d..286bfc2 100644 --- a/eev-rcirc.el +++ b/eev-rcirc.el @@ -1,6 +1,6 @@ ;;; eev-rcirc.el -- rcirc-related elisp hyperlinks. -;; Copyright (C) 2012-2019 Free Software Foundation, Inc. +;; Copyright (C) 2012-2021 Free Software Foundation, Inc. ;; ;; This file is part of GNU eev. ;; @@ -19,7 +19,7 @@ ;; ;; Author: Eduardo Ochs <eduardoo...@gmail.com> ;; Maintainer: Eduardo Ochs <eduardoo...@gmail.com> -;; Version: 20190511 +;; Version: 20210528 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-rcirc.el> @@ -33,6 +33,7 @@ ;; «.find-rcirc-buffer-2a» (to "find-rcirc-buffer-2a") ;; «.find-rcirc-buffer-3a» (to "find-rcirc-buffer-3a") ;; «.find-freenode» (to "find-freenode") +;; «.find-libera» (to "find-libera") ;; «.find-freenode-links» (to "find-freenode-links") ;;; Commentary: @@ -344,6 +345,76 @@ This is like `find-rcirc-buffer-3a' but uses +;;; _ _ _ ____ _ _ +;;; | | (_) |__ ___ _ __ __ _ / ___| |__ __ _| |_ +;;; | | | | '_ \ / _ \ '__/ _` | | | '_ \ / _` | __| +;;; | |___| | |_) | __/ | | (_| | |___| | | | (_| | |_ +;;; |_____|_|_.__/ \___|_| \__,_|\____|_| |_|\__,_|\__| +;;; +;; «find-libera» (to ".find-libera") +;; In may/2021 many important Free Software channels migrated from +;; Freenode to LiberaChat. These functions are similar to the ones +;; that start with `find-freenode', but they use LiberaChat instead. + +(defvar ee-libera-server "irc.libera.chat") + +(defvar ee-libera-ichannels "#eev #rcirc" + "The list of initial channels to connect to at libera.") + +(defvar ee-libera-achannels nil + "The list of channels that `find-libera' always reconnects to. +When this is nil act as if this was a copy of `ee-libera-ichannels'.") + +(defun find-libera (&optional channel &rest pos-spec-list) + "Connect to libera and switch to the buffer for channel CHANNEL. +This is like `find-rcirc-buffer', but uses the variables +`ee-libera-ichannels' and `ee-libera-achannels'." + (apply 'find-rcirc-buffer + ee-libera-server + ee-libera-ichannels + ee-libera-achannels channel pos-spec-list)) + +(defun find-libera-2a (channel) + "Connect to libera and create this window setup: + _________ ________ + | | | + | current | irc | + | buffer | buffer | + |_________|________| + +This is like `find-rcirc-buffer-2a' but uses +`ee-libera-ichannels' and `ee-libera-achannels'." + (find-2a nil '(find-libera channel))) + +(defun find-libera-3a (channel) + "Connect to libera and create this window setup: + _________ _________ + | | | + | | irc | + | | server | + | current |_________| + | buffer | | + | | irc | + | | channel | + |_________|_________| + +This is like `find-rcirc-buffer-3a' but uses +`ee-libera-ichannels' and `ee-libera-achannels'." + (find-3a nil '(find-libera) '(find-libera channel))) + + +;; See: (find-efunction 'eepitch) +;; (find-efunction 'eepitch-to-buffer) +(defun eepitch-libera (channel) + (interactive) (eepitch '(find-libera channel))) + + + + + + + + ;;; __ _ _ _ _ ;;; / _|_ __ ___ ___ _ __ ___ __| | ___ | (_)_ __ | | _____ ;;; | |_| '__/ _ \/ _ \ '_ \ / _ \ / _` |/ _ \_____| | | '_ \| |/ / __| diff --git a/eev-tla.el b/eev-tla.el index 0a1b895..b1450bb 100644 --- a/eev-tla.el +++ b/eev-tla.el @@ -19,7 +19,7 @@ ;; ;; Author: Eduardo Ochs <eduardoo...@gmail.com> ;; Maintainer: Eduardo Ochs <eduardoo...@gmail.com> -;; Version: 20210522 +;; Version: 20210524 ;; Keywords: e-scripts ;; ;; Latest version: <http://angg.twu.net/eev-current/eev-tla.el> @@ -148,6 +148,7 @@ (defun ee-tla-canonicalize (o) (if (stringp o) (ee-shorten-file-name (ee-expand o)) o)) +;; Here the argument tla has to be a symbol. (defun ee-tla-set (tla fname) (setq fname (ee-tla-canonicalize fname)) (puthash fname tla ee-tla-table) @@ -173,6 +174,7 @@ collect (format "%S -> %S\n" k (ee-tla-get k))))) (apply 'concat (sort lines 'string<)))) +;; Tests: ;; (code-tla "ats" "~/LATEX/2020ats.tex") ;; (code-tla "pyt" "~/LATEX/2020pythontex.tex") ;; (code-tla "dnv" "~/LATEX/2020dednat6-video.tex") @@ -198,7 +200,11 @@ ;; «code-tla» (to ".code-tla") ;; Skel: (find-code-xxx-links "tla" "tla fname" "") ;; Tests: (find-code-tla "qux" "~/LATEX/2019J-ops-algebra.tex") +;; (find-code-tla 'qux "~/LATEX/2019J-ops-algebra.tex") ;; (find-code-tla "qux" "~/LATEX/2019J-ops-algebra.txt") +;; (find-code-tla 'qux "~/LATEX/2019J-ops-algebra.txt") +;; Note that here the first argument can be either a string or a +;; symbol - try the tests above! (defun code-tla (tla fname) (eval (ee-read (ee-code-tla tla fname)))) @@ -357,6 +363,16 @@ See: (find-eevfile \"eev-tla.el\" \";; Commentary:\")" +;; Let's make `tla' point to this file, +(code-tla 'tla (ee-eevfile "eev-tla.el")) +;; so that people will start with a non-empty +;; `ee-tla-table'. Try: +;; (find-estring (ee-tla-table-to-string) "tla ->") +;; (find-estring (ee-tla-table-to-string) "-> tla") + + + + (provide 'eev-tla) diff --git a/eev.el b/eev.el index b804498..765287f 100644 --- a/eev.el +++ b/eev.el @@ -6,7 +6,7 @@ ;; Package-Requires: ((emacs "24.4")) ;; Keywords: lisp e-scripts ;; URL: http://angg.twu.net/#eev -;; Version: 20210522 +;; Version: 20210529 ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by