|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
;;; eev-brurl.el -- `code-brxxx' functions, based on Emacs's
;;; `browse-url', and on eev's `code-c-d'; these functions generate
;;; Lisp code with definitions and evaluate it, just like `code-c-d'
;;; does. Note: this file contains protype-ish code, that is intented
;;; to replace some parts of eev in a near future - BUT THIS IS NOT
;;; YET LOADED BY DEFAULT!
;; As of 2019 this file is obsolete and has been superseded by:
;; (find-eev "eev-brxxx.el")
;; (code-brfile 'find-fline :local 'brfl)
;; (code-brfile 'find-xpdfpage :local 'brxpdf :dired 'brxpdfd)
;; (code-brurl 'find-firefox :remote 'brm :local 'brml :dired 'brmd)
;; (find-efunction 'ee-template)
;; (find-elnode "Index" "* defvaralias:")
;; ee-hp
;; (find-efunctionpp 'brm)
;; (find-efunctionpp 'brml)
;; (find-efunctionpp 'brmd)
;; (find-efunction 'ee-concat)
;; (format "%s" 'foo)
;; (format "%s" "foo")
;; (format "%s" 123)
;; (ee-intern "foo%s" 123)
;; Internal functions (generic)
;;
(defun ee-template0 (templatestr)
"Example: (ee-template0 \"a{(+ 2 3)}b\") --> \"a5b\""
(replace-regexp-in-string
"{\\([^{}]+\\)}"
(lambda (_code_) (format "%s" (eval (read (substring _code_ 1 -1)))))
templatestr 'fixedcase))
(defun ee-intern (string &rest objects)
"The result of (format STRING OBJECTS), converted to a symbol"
(intern (apply 'format string objects)))
;;; _ _
;;; ___ ___ __| | ___ | |__ _ ____/\__
;;; / __/ _ \ / _` |/ _ \_____| '_ \| '__\ /
;;; | (_| (_) | (_| | __/_____| |_) | | /_ _\
;;; \___\___/ \__,_|\___| |_.__/|_| \/
;;;
;; Internal functions (specific, low-level)
;;
(defun ee-code-brfile-:local (filefunction brxxxl)
(ee-template0 "
\(defun {brxxxl} (url &rest ignore)
\"Apply `{filefunction}' on the local file name associated to URL.\"
(interactive (browse-url-interactive-arg \"URL: \"))
(setq browse-url-browser-function '{brxxxl})
(let ((fname (eeurl-u-to-f url)))
(list '{filefunction} fname '-> ({filefunction} fname))))\n"))
(defun ee-code-brfile-:dired (filefunction brxxxd)
(ee-template0 "
\(defun {brxxxd} (&rest ignore)
\"Apply `{filefunction}' on the dired file at point.\"
(interactive)
(let ((fname (eeurl-dired-file-name-at-point)))
(message (format \"%S\" (list '{filefunction} fname '->
({filefunction} fname))))))\n"))
(defun ee-code-brurl-:remote (urlfunction brxxx)
(ee-template0 "
\(defun {brxxx} (url &rest ignore)
\"Apply `{urlfunction}' on URL.\"
(interactive (browse-url-interactive-arg \"URL: \"))
(setq browse-url-browser-function '{brxxx})
(list '{urlfunction} url '->
({urlfunction} url)))\n"))
(defun ee-code-brurl-:local (urlfunction brxxxl)
(ee-template0 "
\(defun {brxxxl} (url &rest ignore)
\"Apply `{urlfunction}' on the local url associated to URL.\"
(interactive (browse-url-interactive-arg \"URL: \"))
(setq browse-url-browser-function '{brxxxl})
(setq url (eeurl-u-to-u-l url))
(list '{urlfunction} url '->
({urlfunction} url)))\n"))
(defun ee-code-brurl-:dired (urlfunction brxxxd)
(ee-template0 "
\(defun {brxxxd} (&rest ignore)
\"Apply `{urlfunction}' on the url of the dired file at point.\"
(interactive)
(let ((url (eeurl-f-to-u (eeurl-dired-file-name-at-point))))
(message
(format \"%S\"
(list '{urlfunction} url '->
({urlfunction} url))))))\n"))
;; Internal functions (specific, high-level)
;;
(defun ee-code-brfile (f &optional key brf &rest rest)
"Generate code for a family of functions from a function that operates on files"
(if (not key) ""
(concat (funcall (ee-intern "ee-code-brfile-%s" key) f brf)
(apply 'ee-code-brfile f rest))))
(defun ee-code-brurl (f &optional key brf &rest rest)
"Generate code for a family of functions from a function that operates on URLs"
(if (not key) ""
(concat (funcall (ee-intern "ee-code-brurl-%s" key) f brf)
(apply 'ee-code-brurl f rest))))
;; Top-level functions
;;
(defun code-brfile (f &optional key brf &rest rest)
"Define a family of brxxx functions from a function that operates on files"
(eval (ee-read (apply 'ee-code-brfile f key brf rest))))
(defun code-brurl (f &optional key brf &rest rest)
"Define a family of brxxx functions from a function that operates on files"
(eval (ee-read (apply 'ee-code-brurl f key brf rest))))
(defun find-code-brfile (&rest args)
(find-estring-elisp (apply 'ee-code-brfile args)))
(defun find-code-brurl (&rest args)
(find-estring-elisp (apply 'ee-code-brurl args)))
;;; _ _ _ _
;;; ___ ___ __| | ___ | |__ _ ____/\__ | |_ ___ ___| |_ ___
;;; / __/ _ \ / _` |/ _ \_____| '_ \| '__\ / | __/ _ \/ __| __/ __|
;;; | (_| (_) | (_| | __/_____| |_) | | /_ _\ | || __/\__ \ |_\__ \
;;; \___\___/ \__,_|\___| |_.__/|_| \/ \__\___||___/\__|___/
;;;
;; (find-code-brurl 'find-w3m :remote 'brw :local 'brwl :dired 'brwd)
(code-brurl 'find-w3m :remote 'brw :local 'brwl :dired 'brwd)
;; (find-code-brurl 'find-djvupage :local 'brdjvul :dired 'brdjvud)
(code-brurl 'find-djvupage :local 'brdjvul :dired 'brdjvud)
;; (find-eev "eev-browse-url.el" "many-br-functions")
;;
(code-brfile 'find-fline
:local 'brfl)
(code-brfile 'eecd
:local 'brcdl)
(code-brfile 'find-pspage
:local 'brgvl
:dired 'brgvd)
(code-brfile 'find-dvipage
:local 'brxdvil
:dired 'brxdvid)
(code-brfile 'find-xpdfpage
:local 'brxpdfl
:dired 'brxpdfd)
(code-brfile 'find-pdftotext
:local 'brpdftxtl
:dired 'brpdftxtd)
(code-brfile 'find-djvupage
:local 'brdjvul
:dired 'brdjvud)
(code-brurl 'browse-url-firefox
:remote 'brm
:local 'brml
:dired 'brmd)
(code-brurl 'find-w3m
:remote 'brw
:local 'brwl
:dired 'brwd)
(code-brurl 'eepsne
:remote 'brp)
(code-brurl 'eetmpwget
:remote 'brtmpwget)
;; (eeurl-define-from :fname->action: 'find-djvupage
;; :local: 'brdjvul
;; :dired: 'brdjvud)
;; (eeurl-define-from :url->action: 'browse-url-firefox
;; :remote: 'brm
;; :local: 'brml
;; :dired: 'brmd)
;; (find-efunction 'eeurl-dired-file-name-at-point)
;; ee-dired-file-name-at-point
;; ee-url-to-local-file
;; ee-url-to-local-url
;; ee-url-to-local-file-url
;; ee-file-to-fileurl
;; ee-url-to-fileurl
;; snarffname
;; snarfurl
;; (find-efunctionpp 'brxpdfl)
;; (find-estring-elisp (ee-code-brfile-:local: "find-xpdfpage" "brxpdfl"))
;; (find-estring-elisp (ee-code-brfile-:local: 'find-xpdfpage 'brxpdfl))
;;
;; (find-efunctionpp 'brxpdfd)
;; (find-estring-elisp (ee-code-brfile-:dired: 'find-xpdfpage "brxpdfd"))
;;
;; (find-efunctionpp 'brm)
;; (find-code-brurl 'browse-url-firefox :remote: 'brm)
;; (find-efunctionpp 'brml)
;; (find-efunctionpp 'brmd)
;; (find-efunctionpp 'find-djvupage)
;; (find-efunctionpp 'brdjvul)
;; (find-efunctionpp 'brdjvud)
;; (find-efunctionpp 'browse-url-firefox)
;; (find-efunctionpp 'brm)
;; (find-efunctionpp 'brml)
;; (find-efunctionpp 'brmd)
;; Local Variables:
;; coding: raw-text-unix
;; ee-anchor-format: "«%s»"
;; ee-anchor-format: "defun %s "
;; no-byte-compile: t
;; End: