mylisp/pypi.el
changeset 1666 06937ff1ec5f
parent 1516 ad7b40d1f520
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mylisp/pypi.el	Sat Jan 02 00:33:04 2021 +0200
@@ -0,0 +1,41 @@
+;;; pypi.el --- Handle work with Python pypi site.
+
+;;; Commentary:
+;;
+
+(require 'url-handlers)
+(require 'thingatpt)
+
+(eval-when-compile
+  (defvar url-http-response-status))
+
+;;; Code:
+
+(defvar pypi/buffer-name "*Pip*")
+
+(defvar pypi/pkg-history nil)
+
+(defvar pypi/url "https://pypi.python.org/pypi/%s/json")
+
+(defun pypi/pkg-callback (status)
+  (let ( (buffer (current-buffer)) content-type status )
+    (setq content-type (mail-fetch-field "Content-Type"))
+    (setq status url-http-response-status)
+    (switch-to-buffer pypi/buffer-name)
+    (erase-buffer)
+    (url-insert buffer)
+    (fundamental-mode)
+    (when (and (eq status 200) (string-match "application/json" content-type))
+      (js-mode))))
+
+;;;###autoload
+(defun pypi-pkg (pkg)
+  (interactive (list
+                (read-string "Python package: "
+                             (if (region-active-p) (buffer-substring (mark) (point)) (thing-at-point 'symbol))
+                             'pypi/pkg-history)))
+  (url-retrieve (format pypi/url pkg) #'pypi/pkg-callback))
+
+(provide 'pypi)
+
+;;; pypi.el ends here