;;; +finger.el --- Finger bugfix -*- lexical-binding: t; -*- ;;; Commentary: ;; `net-utils' defines `finger', which purportedly consults ;; `finger-X.500-host-regexps' to determine what hosts to only send a username ;; to. I've found that that is not the case, and so I've patched it. At some ;; point I'll submit this to Emacs itself. ;;; Code: (require 'net-utils) ; this requires everything else I'll need. (require 'seq) (defun finger (user host) "Finger USER on HOST. This command uses `finger-X.500-host-regexps' and `network-connection-service-alist', which see." ;; One of those great interactive statements that's actually ;; longer than the function call! The idea is that if the user ;; uses a string like "pbreton@cs.umb.edu", we won't ask for the ;; host name. If we don't see an "@", we'll prompt for the host. (interactive (let* ((answer (read-from-minibuffer "Finger User: " (net-utils-url-at-point))) (index (string-match (regexp-quote "@") answer))) (if index (list (substring answer 0 index) (substring answer (1+ index))) (list answer (read-from-minibuffer "At Host: " (net-utils-machine-at-point)))))) (let* ((user-and-host (concat user "@" host)) (process-name (concat "Finger [" user-and-host "]")) (regexps finger-X.500-host-regexps) ) ;; found (when (seq-some (lambda (r) (string-match-p r host)) regexps) (setq user-and-host user)) (run-network-program process-name host (cdr (assoc 'finger network-connection-service-alist)) user-and-host))) (provide '+finger) ;;; +finger.el ends here