pypi.el
author Oleksandr Gavenko <gavenkoa@gmail.com>
Thu, 19 Feb 2015 19:30:32 +0200
changeset 1213 e0de9be5c1ee
parent 1212 745c136f8398
child 1214 f9baff417868
permissions -rw-r--r--
Fix typo.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1211
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
;;; pypi.el --- Handle work with Python pypi site.
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
;;; Commentary:
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
;;
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
(require 'url-handlers)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
(require 'thingatpt)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     9
;;; Code:
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    10
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
(defvar pypi.buffer-name "*Pip*")
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    13
(defvar pypi.pkg-history nil)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    14
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    15
(defvar pypi.url "https://pypi.python.org/pypi/%s/json")
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    16
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    17
(defun pypi.pkg-callback (status)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    18
  (let ( (buffer (current-buffer)) content-type status )
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    19
    (setq content-type (mail-fetch-field "Content-Type"))
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    20
    (setq status url-http-response-status)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    21
    (switch-to-buffer pypi.buffer-name)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    22
    (erase-buffer)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    23
    (url-insert buffer)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    24
    (fundamental-mode)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    25
    (when (and (eq status 200) (string-match "application/json" content-type))
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
      (js-mode))))
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    27
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    28
;;;###autoload
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    29
(defun pypi.pkg (pkg)
1213
e0de9be5c1ee Fix typo.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1212
diff changeset
    30
  (interactive (list (read-string "Python package: " "" 'pypi.pkg-history (thing-at-point 'symbol))))
1211
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
  (url-retrieve (format pypi.url pkg) #'pypi.pkg-callback))
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    32
1212
745c136f8398 Forget add provide.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1211
diff changeset
    33
(provide 'pypi)
745c136f8398 Forget add provide.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1211
diff changeset
    34
745c136f8398 Forget add provide.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1211
diff changeset
    35
;;; pypi.el ends here