pypi.el
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sat, 28 Feb 2015 14:10:39 +0200
changeset 1232 8c3600d2317d
parent 1214 f9baff417868
child 1251 a1f5b0d02e72
permissions -rw-r--r--
css-eldoc-enable
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)
1214
f9baff417868 If region active - use it content as default value.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1213
diff changeset
    30
  (interactive (list
f9baff417868 If region active - use it content as default value.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1213
diff changeset
    31
                (read-string "Python package: "
f9baff417868 If region active - use it content as default value.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1213
diff changeset
    32
                             (if (region-active-p) (buffer-substring (mark) (point)) (thing-at-point 'symbol))
f9baff417868 If region active - use it content as default value.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1213
diff changeset
    33
                             'pypi.pkg-history)))
1211
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    34
  (url-retrieve (format pypi.url pkg) #'pypi.pkg-callback))
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    35
1212
745c136f8398 Forget add provide.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1211
diff changeset
    36
(provide 'pypi)
745c136f8398 Forget add provide.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1211
diff changeset
    37
745c136f8398 Forget add provide.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1211
diff changeset
    38
;;; pypi.el ends here