Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
;;; eev-wrap.el --- wrap the current line into a hyperlink -*- lexical-binding: nil; -*- ;; Copyright (C) 2013,2016,2017,2019,2020,2023 Free Software Foundation, Inc. ;; ;; This file is part of GNU eev. ;; ;; GNU eev is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; ;; GNU eev is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. ;; ;; Author: Eduardo Ochs <[email protected]> ;; Maintainer: Eduardo Ochs <[email protected]> ;; Version: 20241012 ;; Keywords: e-scripts ;; ;; Latest version: <http://anggtwu.net/eev-current/eev-wrap.el> ;; htmlized: <http://anggtwu.net/eev-current/eev-wrap.el.html> ;; See also: <http://anggtwu.net/eev-current/eev-beginner.el.html> ;; <http://anggtwu.net/eev-intros/find-eev-intro.html> ;; <http://anggtwu.net/eev-intros/find-wrap-intro.html> ;; (find-eev-intro) ;; (find-wrap-intro) ;;; Commentary: ;; 2019: all the `define-key's in this file are now commented out. ;; They were moved to: ;; (find-eevfile "eev-mode.el" "eewrap-anchor") ;; «.ee-template0» (to "ee-template0") ;; «.ee-S» (to "ee-S") ;; «.ee-this-line-wrapn» (to "ee-this-line-wrapn") ;; «.eewrap-anchor» (to "eewrap-anchor") ;; «.eewrap-escript-block» (to "eewrap-escript-block") ;; «.eewrap-code-c-d» (to "eewrap-code-c-d") ;; «.eewrap-debian» (to "eewrap-debian") ;; «.eewrap-find-fline» (to "eewrap-find-fline") ;; «.eewrap-eejump» (to "eewrap-eejump") ;; «.eewrap-man» (to "eewrap-man") ;; «.eewrap-pdflike» (to "eewrap-pdflike") ;; «.eewrap-rm/mkdir/cd» (to "eewrap-rm/mkdir/cd") ;; «.eewrap-sh» (to "eewrap-sh") ;; «.eepitch» (to "eepitch") ;; «.eewrap-audiovideo» (to "eewrap-audiovideo") ;; «.eewrap-zsh» (to "eewrap-zsh") ;; «.eewrap-two-eepitches» (to "eewrap-two-eepitches") ;; «.ee-wrap-eewrap» (to "ee-wrap-eewrap") ;; «.find-eewrap-links» (to "find-eewrap-links") ;; «.find-eewraptest-links» (to "find-eewraptest-links") (require 'eev-template0) ; (find-eev "eev-template0.el") (defvar ee-hyperlink-prefix "# " "Hyperlinks created by `ee-HS' are prefixed with this. The best way to change this variable interactively is by running `M-x ee-hyperlink-prefix'.") (defvaralias 'ee-H 'ee-hyperlink-prefix) ;;; ____ ;;; ___ ___ / ___| ;;; / _ \/ _ \____\___ \ ;;; | __/ __/_____|__) | ;;; \___|\___| |____/ ;;; ;;; «ee-S» (to ".ee-S") ;; `ee-S' and `ee-HS', for pretty-printing of sexps (mainly for use in ;; `ee-template0'). ;; Tests: ;; (find-estring (ee-S '(foo "bar\nplic"))) ;; (find-estring (ee-HS '(foo "bar\nplic"))) ;; (find-estring (ee-H "Some string")) ;; `(setq a ,(ee-add-quote "foo")) ;; `(setq a ,(ee-add-quote '(+ 1 2))) ;; (ee-S `(setq a ,(ee-add-quote '(+ 1 2)))) ;; (defun ee-S (object) "Convert OBJECT (usually a sexp) into a string, for use in hyperlinks. Quote newlines to make it fit in a single line. The result of this function is always a string that can be `read' as Lisp. The name of this function comes from the \"S\" in `(format \"%S\" <obj>)'." (let ((str (let ((print-escape-newlines t) (print-escape-nonascii t) ; isn't escaping esc, \r, etc (print-quoted t)) (prin1-to-string object)))) (replace-regexp-in-string "\r" "\\\\r" str))) (defun ee-HS (object) (concat ee-hyperlink-prefix (ee-S object))) (defun ee-H (str) (format "%s%s" ee-hyperlink-prefix str)) (defun ee-needs-quote (obj) "Return t when OBJ needs a \"'\"." (not (or (numberp obj) (stringp obj) (eq obj nil) (eq obj t) (keywordp obj)))) (defun ee-add-quote (obj) "Return OBJ is OBJ is constant; else return 'OBJ." (if (ee-needs-quote obj) (list 'quote obj) obj)) (defun ee-Q (obj) (if (ee-needs-quote obj) (format "'%s" (ee-S obj)) (ee-S obj))) (defun ee-Qrest (rest) (mapconcat (lambda (obj) (format " %s" (ee-Q obj))) rest "")) (defalias 'ee-pp0 'ee-S) (defun ee-ppp00 (list) (mapconcat 'ee-pp0 list "\n")) (defun ee-ppp0 (list) (concat "(" (mapconcat 'ee-pp0 list "\n ") ")\n")) ;; «ee-template0» (to ".ee-template0") ;; Moved to: (find-eev "eev-template0.el") ;;; _ _ _ _ _ ;;; | |_| |__ (_)___ | (_)_ __ ___ ;;; | __| '_ \| / __|_____| | | '_ \ / _ \ ;;; | |_| | | | \__ \_____| | | | | | __/ ;;; \__|_| |_|_|___/ |_|_|_| |_|\___| ;;; ;; «ee-this-line-wrapn» (to ".ee-this-line-wrapn") ;; The main function in this block is `ee-this-line-wrapn' - ;; all the `eewrap-*' functions defined below call it. (defun ee-splitn (n str) "Example: (ee-splitn 3 \"aa bb cc dd ee\") --> (\"aa\" \"bb\" \"cc dd ee\")" (if (= n 1) (list str) (if (string-match "^\\`[ \t]*\\([^ \t]+\\)[ \t]*" str) (cons (match-string 1 str) (ee-splitn (- n 1) (substring str (match-end 0)))) (cons "" (ee-splitn (- n 1) ""))))) (defun ee-this-line-extract () "Delete the contents of the current line and return it as a string." (delete-and-extract-region (ee-bol) (ee-eol))) (defun ee-this-line-extractn (n) "Delete the contents of the current line and return it as a list." (ee-splitn n (ee-no-properties (ee-this-line-extract)))) (defun ee-this-line-wrapn (n f) "Run F on the current line, after splitting it into N strings. F is a function that receives N arguments and returns a string. This function extracts the contents of the curren line, splits it, runs F on the result of the splitting, inserts the result in the place of what was deleted, and moves down one line. If an error happens the original contents are not restored; you have to run an \"undo\"." (insert (apply f (ee-this-line-extractn n))) (ee-next-line 1)) ;;; -------------------- ;;; All the standard wrapping functions, bound to M-UPPERCASE keys. ;;; Note that they are listed in alphabetical order below, and that in ;;; each section the higher level functions come first. ;;; __ __ _ _ ;;; | \/ | / \ _ __ _ _ __ ___| |__ ___ _ __ ;;; | |\/| |_____ / _ \ (_) / _` | '_ \ / __| '_ \ / _ \| '__| ;;; | | | |_____/ ___ \ _ | (_| | | | | (__| | | | (_) | | ;;; |_| |_| /_/ \_(_) \__,_|_| |_|\___|_| |_|\___/|_| ;;; ;; «eewrap-anchor» (to ".eewrap-anchor") ;; See: (find-eev-quick-intro "8.3. Creating index/section anchor pairs") ;; (find-anchors-intro "Creating index/section anchor pairs") ;; Skel: (find-eewrap-links "A" "anchor" "prefix anchor") ;; Test: (find-eewraptest-links "anchor" "# <foo>") (defun eewrap-anchor () (interactive) (ee-this-line-wrapn 1 'ee-wrap-anchor)) (defun ee-wrap-anchor (line) "An internal function used by `eewrap-anchor'." (if (string-match "^\\(.*\\)<\\([^<>]*\\)>" line) (ee-wrap-anchor0 (match-string 1 line) (match-string 2 line)) (error "Does not match"))) (defun ee-wrap-anchor0 (prefix anchor) "An internal function used by `ee-wrap-anchor'." (ee-template0 (ee-tolatin1 "\ {prefix}«.{anchor}»\t(to \"{anchor}\") {prefix}«{anchor}» (to \".{anchor}\")"))) ;;; __ __ _ _ _ _ _ _ ;;; | \/ | | |__ _ ___ ___ ___ _ __(_)_ __ | |_ | |__ | | | __ ;;; | |\/| |_____| '_ (_) / _ \/ __|/ __| '__| | '_ \| __| | '_ \| | |/ / ;;; | | | |_____| |_) | | __/\__ \ (__| | | | |_) | |_ | |_) | | < ;;; |_| |_| |_.__(_) \___||___/\___|_| |_| .__/ \__| |_.__/|_|_|\_\ ;;; |_| ;; «eewrap-escript-block» (to ".eewrap-escript-block") ;; See: (find-eev-quick-intro "8.4. Creating e-script blocks") ;; Skel: (find-eewrap-links "B" "escript-block" "anchor title") ;; Tests: (find-eewraptest-links "escript-block" "ANCHOR") ;; (find-eewraptest-links "escript-block" "ANCHOR Some title") ;; (define-key eev-mode-map "\M-B" 'eewrap-escript-block) (defun eewrap-escript-block () (interactive) (ee-this-line-wrapn 2 'ee-wrap-escript-block)) (defun ee-wrap-escript-block (anchor title &optional date) "An internal function used by `ee-wrap-escript-block'." (setq date (or date (downcase (format-time-string "%Y%b%d")))) (if (equal title "") (setq title anchor)) (ee-template0 (ee-tolatin1 "\ ##### # # {title} # {date} # ##### # «.{anchor}»\t(to \"{anchor}\") # «{anchor}» (to \".{anchor}\")"))) ;;; __ __ ____ _ _ ;;; | \/ | / ___|_ ___ ___ __| | ___ ___ __| | ;;; | |\/| |_____| | (_) / __/ _ \ / _` |/ _ \_____ / __|____ / _` | ;;; | | | |_____| |___ _ | (_| (_) | (_| | __/_____| (_|_____| (_| | ;;; |_| |_| \____(_) \___\___/ \__,_|\___| \___| \__,_| ;;; ;; «eewrap-code-c-d» (to ".eewrap-code-c-d") ;; See: (find-eev-quick-intro "`M-C'") ;; Skel: (find-eewrap-links "C" "code-c-d" "c d") ;; Test: (find-eewraptest-links "code-c-d" "CCC /DIR/") (defun eewrap-code-c-d () (interactive) (ee-this-line-wrapn 2 'ee-wrap-code-c-d)) (defun ee-wrap-code-c-d (c d) "An internal function used by `eewrap-code-c-d'." (ee-template0 "\ \(code-c-d \"{c}\" \"{d}\"\) ;; (find-{c}file \"\")")) ;;; __ __ ____ _ _ _ ;;; | \/ | | _ \ _ __| | ___| |__ (_) __ _ _ __ ;;; | |\/| |_____| | | (_) / _` |/ _ \ '_ \| |/ _` | '_ \ ;;; | | | |_____| |_| |_ | (_| | __/ |_) | | (_| | | | | ;;; |_| |_| |____/(_) \__,_|\___|_.__/|_|\__,_|_| |_| ;;; ;; «eewrap-debian» (to ".eewrap-debian") ;; See: (find-wrap-intro "M-D") ;; Skel: (find-eewrap-links "D" "debian" "stem") ;; Test: (find-eewraptest-links "debian" "bash") (defun eewrap-debian () (interactive) (ee-this-line-wrapn 1 'ee-wrap-debian)) (defun ee-wrap-debian (stem) (ee-template0 "\ {ee-H}(find-status \"{stem}\") {ee-H}(find-vldifile \"{stem}.list\") {ee-H}(find-udfile \"{stem}/\")")) ;;; __ __ _____ __ _ _ ;;; | \/ | | ___| / _(_) | ___ ;;; | |\/| |_____| |_ (_) | |_| | |/ _ \ ;;; | | | |_____| _| _ | _| | | __/ ;;; |_| |_| |_| (_) |_| |_|_|\___| ;;; ;; «eewrap-find-fline» (to ".eewrap-find-fline") ;; See: (find-wrap-intro "<M-F>") ;; Skel: (find-eewrap-links "F" "find-fline" "fname") ;; Test: (find-eewraptest-links "find-fline" "/tmp/foo") (defun eewrap-find-fline () (interactive) (ee-this-line-wrapn 1 'ee-wrap-find-fline)) (defun ee-wrap-find-fline (fname) "An internal function used by `eewrap-find-fline'." (ee-HS `(find-fline ,fname))) ;;; __ __ _ _ ;;; | \/ | | |_ ___ ___ (_)_ _ _ __ ___ _ __ ;;; | |\/| |_____ _ | (_) / _ \/ _ \| | | | | '_ ` _ \| '_ \ ;;; | | | |_____| |_| |_ | __/ __/| | |_| | | | | | | |_) | ;;; |_| |_| \___/(_) \___|\___|/ |\__,_|_| |_| |_| .__/ ;;; |__/ |_| ;; ;; «eewrap-eejump» (to ".eewrap-eejump") ;; See: (find-eev-quick-intro "7.1. `eejump'") ;; (find-eev-quick-intro "7.1. `eejump'" "meta-uppercase-j") ;; Old: (find-eejump-intro "Producing `eejump-nnn's and `eejump-nnn*'s") ;; Skel: (find-eewrap-links "J" "eejump" "n sexp") ;; Tests: (find-eewraptest-links "eejump" "42 (find-fline \"~/TODO\")") ;; (find-eewraptest-links "eejump" "todo (find-fline \"~/TODO\")") (defun eewrap-eejump () (interactive) (ee-this-line-wrapn 2 'ee-wrap-eejump)) (defun ee-wrap-eejump (n sexp) "An internal function used by `eewrap-eejump'." (if (string-match-p "^[0-9]+$" n) (if (equal sexp "") (ee-template0 "(defun eejump-{n}* () (find-efunction 'eejump-{n}*))") (ee-template0 "(defun eejump-{n} () {sexp})")) (ee-template0 "(defun {n} () (interactive) {sexp})"))) ;;; __ __ __ __ ;;; | \/ | | \/ |_ _ __ ___ __ _ _ __ ;;; | |\/| |_____| |\/| (_) | '_ ` _ \ / _` | '_ \ ;;; | | | |_____| | | |_ | | | | | | (_| | | | | ;;; |_| |_| |_| |_(_) |_| |_| |_|\__,_|_| |_| ;;; ;; «eewrap-man» (to ".eewrap-man") ;; See: (find-wrap-intro "<M-M>") ;; Skel: (find-eewrap-links "M" "man" "str") ;; Test: (find-eewraptest-links "man" "1 tac") (defun eewrap-man () (interactive) (ee-this-line-wrapn 1 'ee-wrap-man)) (defun ee-wrap-man (str) "An internal function used by `eewrap-man'." (ee-HS `(find-man ,str))) ;;; __ __ ____ _ __ _ _ _ ;;; | \/ | | _ \ _ _ __ __| |/ _| (_) | _____ ;;; | |\/| |_____| |_) (_) | '_ \ / _` | |_| | | |/ / _ \ ;;; | | | |_____| __/ _ | |_) | (_| | _| | | < __/ ;;; |_| |_| |_| (_) | .__/ \__,_|_| |_|_|_|\_\___| ;;; |_| ;; ;; «eewrap-pdflike» (to ".eewrap-pdflike") ;; See: (find-pdf-like-intro) ;; (find-pdf-like-intro "`M-P'") ;; Skel: (find-eewrap-links "P" "pdflike" "stem fname") ;; Test: (find-eewraptest-links "pdflike" "o /tmp/o.pdf") (defun eewrap-pdflike () (interactive) (ee-this-line-wrapn 2 'ee-wrap-pdflike)) (defun ee-wrap-pdflike (stem fname) "An internal function used by `eewrap-pdflike'." (ee-template0 "\ ;; (find-fline {(ee-S (file-name-directory fname))}) \(code-pdf-page \"{stem}\" \"{fname}\") \(code-pdf-text \"{stem}\" \"{fname}\") ;; \(find-{stem}page) ;; \(find-{stem}text) ")) ;;; __ __ ___ _ __ _ _ _ _ _ _ ;;; | \/ | / _ \ _ _ __ __| |/ _| (_) | _____ | (_)_ __ | | __ ;;; | |\/| |_____| | | (_) | '_ \ / _` | |_| | | |/ / _ \_____| | | '_ \| |/ / ;;; | | | |_____| |_| |_ | |_) | (_| | _| | | < __/_____| | | | | | < ;;; |_| |_| \__\_(_) | .__/ \__,_|_| |_|_|_|\_\___| |_|_|_| |_|_|\_\ ;;; |_| ;; ;; See: (find-pdf-like-intro) ;; (define-key eev-mode-map "\M-Q" 'eewrap-pdflike-link) ;; OBSOLETE. (defun eewrap-pdflike-link () (interactive) (ee-this-line-wrapn 2 'ee-wrap-pdflike-link)) (defun ee-wrap-pdflike-link (n text) "An internal function used by `eewrap-pdflike-link'." (format "%s\n%s" (ee-wrap-pdflike-link1 "page" n text) (ee-wrap-pdflike-link1 "text" n text))) (defun ee-wrap-pdflike-link1 (what n text) "An internal function used by `eewrap-pdflike-link'." (ee-template0 "{ee-H}(find-{ee-page-c}{what} (+ {ee-page-offset} {n}) {(ee-S text)})")) ;;; __ __ ____ __ _ _ _ ;;; | \/ | | _ \ _ _ __ _ __ ___ / / __ ___ | | ____| (_)_ __ ;;; | |\/| |_____| |_) (_) | '__| '_ ` _ \ / / '_ ` _ \| |/ / _` | | '__| ;;; | | | |_____| _ < _ | | | | | | | |/ /| | | | | | < (_| | | | ;;; |_| |_| |_| \_(_) |_| |_| |_| |_/_/ |_| |_| |_|_|\_\__,_|_|_| ;;; ;; «eewrap-rm/mkdir/cd» (to ".eewrap-rm/mkdir/cd") ;; See: (find-escripts-intro "`M-R'") ;; Skel: (find-eewrap-links "R" "rm/mkdir/cd" "dir") ;; Test: (find-eewraptest-links "rm/mkdir/cd" "/tmp/foo/") (defun eewrap-rm/mkdir/cd () (interactive) (ee-this-line-wrapn 1 'ee-wrap-rm/mkdir/cd)) (defun ee-wrap-rm/mkdir/cd (dir) "An internal function used by `eewrap-rm/mkdir/cd'." (ee-template0 "\ # (find-fline \"{dir}\") rm -Rv {dir} mkdir {dir} cd {dir}")) ;;; __ __ ____ __ _ _ _ ;;; | \/ | / ___|_ / _(_)_ __ __| | ___| |__ ;;; | |\/| |____\___ (_) | |_| | '_ \ / _` |_____/ __| '_ \ ;;; | | | |_____|__) | | _| | | | | (_| |_____\__ \ | | | ;;; |_| |_| |____(_) |_| |_|_| |_|\__,_| |___/_| |_| ;;; ;; «eewrap-sh» (to ".eewrap-sh") ;; See: (find-wrap-intro "<M-S>") ;; Skel: (find-eewrap-links "R" "sh" "str") ;; Test: (find-eewraptest-links "sh" "dict smop") (defun eewrap-sh () (interactive) (ee-this-line-wrapn 1 'ee-wrap-sh)) (defun ee-wrap-sh (str) "An internal function used by `eewrap-sh'." (ee-HS `(find-sh ,str))) (defun eewrap-sh0 () (interactive) (ee-this-line-wrapn 1 'ee-wrap-sh0)) (defun ee-wrap-sh0 (str) "An internal function used by `eewrap-sh0'." (ee-HS `(find-sh0 ,str))) ;;; __ __ _____ _ _ _ ;;; | \/ | |_ _| ___ ___ _ __ (_) |_ ___| |__ ;;; | |\/| |_____| |(_) / _ \/ _ \ '_ \| | __/ __| '_ \ ;;; | | | |_____| | _ | __/ __/ |_) | | || (__| | | | ;;; |_| |_| |_|(_) \___|\___| .__/|_|\__\___|_| |_| ;;; |_| ;; ;; «eepitch» (to ".eepitch") ;; Moved to: (find-eev "eepitch.el" "eewrap-eepitch") ;;; __ __ __ __ _ _ _ _ ;;; | \/ | \ \ / / __ _ _ _ __| (_) _____ _(_) __| | ___ ___ ;;; | |\/| |____\ \ / (_) / _` | | | |/ _` | |/ _ \ \ / / |/ _` |/ _ \/ _ \ ;;; | | | |_____\ V / _ | (_| | |_| | (_| | | (_) \ V /| | (_| | __/ (_) | ;;; |_| |_| \_/ (_) \__,_|\__,_|\__,_|_|\___/ \_/ |_|\__,_|\___|\___/ ;;; ;; «eewrap-audiovideo» (to ".eewrap-audiovideo") ;; See: (find-audiovideo-intro) ;; Skel: (find-eewrap-links "V" "audiovideo" "stem fname") ;; Test: (find-eewraptest-links "audiovideo" "ovideo /tmp/o.mp4") (defun eewrap-audiovideo () (interactive) (ee-this-line-wrapn 2 'ee-wrap-audiovideo)) (defun ee-wrap-audiovideo (stem fname) "An internal function used by `eewrap-audiovideo'." (ee-template0 "\ ;; (find-fline {(ee-S (file-name-directory fname))}) ;; (find-audio \"{fname}\") ;; (find-video \"{fname}\") (code-audio \"{stem}\" \"{fname}\") (code-video \"{stem}\" \"{fname}\") ;; (find-{stem}) ;; (find-{stem} \"0:00\") ;; (find-{stem} t) ;; (eev-avadj-mode 1) ")) ;;; __ __ _____ __ _ _ _ ;;; | \/ | |__ /_ / _(_)_ __ __| | _______| |__ ;;; | |\/| |_____ / /(_) | |_| | '_ \ / _` |____|_ / __| '_ \ ;;; | | | |_____/ /_ _ | _| | | | | (_| |_____/ /\__ \ | | | ;;; |_| |_| /____(_) |_| |_|_| |_|\__,_| /___|___/_| |_| ;;; ;; «eewrap-zsh» (to ".eewrap-zsh") ;; (define-key eev-mode-map "\M-Z" 'eewrap-zsh) ;; Skel: (find-eewrap-links "Z" "zsh" "str") ;; Test: (find-eewraptest-links "zsh" "echo $SHELL") (defun eewrap-zsh () (interactive) (ee-this-line-wrapn 1 'ee-wrap-zsh)) (defun ee-wrap-zsh (str) "An internal function used by `eewrap-zsh'." (ee-HS `(find-zsh ,str))) ;;; __ __ _ _ ____ _ _ _ ;;; | \/ | _| || |_ _ |___ \ ___ ___ _ __ (_) |_ ___| |__ ___ ___ ;;; | |\/| |_____|_ .. _(_) __) | / _ \/ _ \ '_ \| | __/ __| '_ \ / _ \/ __| ;;; | | | |_____|_ _|_ / __/ | __/ __/ |_) | | || (__| | | | __/\__ \ ;;; |_| |_| |_||_| (_) |_____| \___|\___| .__/|_|\__\___|_| |_|\___||___/ ;;; |_| ;; ;; «eewrap-two-eepitches» (to ".eewrap-two-eepitches") ;; See: (find-multiwindow-intro "4. Several eepitch targets") ;; (find-multiwindow-intro "7. Eepitch blocks for two targets") ;; Skel: (find-eewrap-links "#" "two-eepitches" "b c") ;; Test: (find-eewraptest-links "two-eepitches" "shell python") (defun eewrap-two-eepitches () (interactive) (ee-this-line-wrapn 2 'ee-wrap-two-eepitches)) (defun ee-wrap-two-eepitches (b c) "An internal function used by `eewrap-two-eepitches'." (ee-template0 "\ * (find-3EE '(eepitch-{b}) '(eepitch-{c})) * (find-3ee '(eepitch-{b}) '(eepitch-{c})) * (eepitch-{b}) * (eepitch-{c}) ")) ;;; /\ ____ ;;; ___ _____ ___ __ __ _ _ __|/\|___ \ ;;; / _ \/ _ \ \ /\ / / '__/ _` | '_ \ __) | ;;; | __/ __/\ V V /| | | (_| | |_) | / __/ ;;; \___|\___| \_/\_/ |_| \__,_| .__/ |_____| ;;; |_| ;; ;; «ee-wrap-eewrap» (to ".ee-wrap-eewrap") ;; See: (find-eev "eev-tlinks.el" "find-find-links-links-new") ;; (find-wrap-intro "eewrap-eewrap") ;; This is somewhat similar to `find-find-links-links', ;; but it is MUCH more primitive - consider it a demo! (defun eewrap-eewrap () (interactive) "Obsolete! Superseded by `find-eewrap-links'!" (ee-this-line-wrapn 3 'ee-wrap-eewrap)) (defun ee-wrap-eewrap (C stem args) "An internal function used by `find-eewrap-links'." (let ((n (length (ee-split args)))) (ee-template0 " ;; (find-efunction 'eewrap-{stem}) ;; M-{C}: {stem} ;; (find-eev \"eev-mode.el\" \"eev-mode-map-set\") ;; (find-eev \"eev-mode.el\" \"eev-mode-map-set\" \"M-{C}\") ;; (find-eev \"eev-mode.el\" \"eev-mode-map-set\" \"M-{C}\" \"eewrap-{stem}\") ;; (define-key eev-mode-map \"\\M-{C}\" 'eewrap-{stem}) ;; <eewrap-{stem}> ;; Skel: (find-eewrap-links \"{C}\" \"{stem}\" \"{args}\") ;; Test: (find-eewraptest-links \"{stem}\" \"{args}\") (defun eewrap-{stem} () (interactive) (ee-this-line-wrapn {n} 'ee-wrap-{stem})) (defun ee-wrap-{stem} ({args}) \"An internal function used by `eewrap-{stem}'.\" (ee-template0 \"\\ {<}(ee-HS `(find-{stem} ,{args})){>}\"))\n"))) ;; «find-eewrap-links» (to ".find-eewrap-links") ;; A more standard way to create `eewrap-*' functions. ;; Skel: (find-find-links-links-new "eewrap" "C stem args" "n") ;; Test: (find-eewrap-links) ;; (defun find-eewrap-links (&optional C stem args &rest pos-spec-list) "Visit a temporary buffer containing hyperlinks for eewrap." (interactive) (setq C (or C "{C}")) (setq stem (or stem "{stem}")) (setq args (or args "{args}")) (apply 'find-elinks-elisp `((find-eewrap-links ,C ,stem ,args ,@pos-spec-list) ;; Convention: the first sexp always regenerates the buffer. (find-efunction 'find-eewrap-links) ,(ee-wrap-eewrap C stem args) ) pos-spec-list)) ;; «find-eewraptest-links» (to ".find-eewraptest-links") ;; See: (find-wrap-intro "6. All wrapping functions") ;; Skel: (find-find-links-links-new "eewraptest" "stem line" "") ;; Tests: (find-eewraptest-links "eejump" "42 (find-fline \"~/TODO\")") ;; (find-eewraptest-links "eejump" "todo (find-fline \"~/TODO\")") ;; (defun find-eewraptest-links (&optional stem line &rest pos-spec-list) "Visit a temporary buffer containing hyperlinks for eewraptest." (interactive) (setq stem (or stem "{stem}")) (setq line (or line "{line}")) (apply 'find-elinks-elisp `((find-eewraptest-links ,stem ,line ,@pos-spec-list) ;; Convention: the first sexp always regenerates the buffer. (find-efunction 'find-eewraptest-links) "" ,(ee-template0 "\ ;; (eek \"2*<down> <<eewrap-{stem}>>\") ;; (find-efunction 'eewrap-{stem}) {line} ") ) pos-spec-list)) ;;; _ ;;; ___ ___ _ __ ___ _ __ __ _| |_ ;;; / __/ _ \| '_ ` _ \| '_ \ / _` | __| ;;; | (_| (_) | | | | | | |_) | (_| | |_ ;;; \___\___/|_| |_| |_| .__/ \__,_|\__| ;;; |_| ;; (defalias 'ee-H 'ee-hyperlink-prefix) ;; (defalias 'ee-S 'ee-pp0) (provide 'eev-wrap) ;; Local Variables: ;; coding: utf-8-unix ;; no-byte-compile: t ;; End: