pypi.el
author Oleksandr Gavenko <gavenkoa@gmail.com>
Wed, 11 Oct 2017 00:28:06 +0300
changeset 1541 dca10cecc9e2
parent 1516 ad7b40d1f520
permissions -rw-r--r--
Set font size depending on DPI.
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
1251
a1f5b0d02e72 Fix: Warning: reference to free variable `url-http-response-status'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
     9
(eval-when-compile
a1f5b0d02e72 Fix: Warning: reference to free variable `url-http-response-status'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
    10
  (defvar url-http-response-status))
a1f5b0d02e72 Fix: Warning: reference to free variable `url-http-response-status'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
    11
1211
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
;;; Code:
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    13
1516
ad7b40d1f520 Private functions use '/' delimiter, public as usual '-' delimiter.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1251
diff changeset
    14
(defvar pypi/buffer-name "*Pip*")
1211
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    15
1516
ad7b40d1f520 Private functions use '/' delimiter, public as usual '-' delimiter.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1251
diff changeset
    16
(defvar pypi/pkg-history nil)
1211
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    17
1516
ad7b40d1f520 Private functions use '/' delimiter, public as usual '-' delimiter.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1251
diff changeset
    18
(defvar pypi/url "https://pypi.python.org/pypi/%s/json")
1211
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    19
1516
ad7b40d1f520 Private functions use '/' delimiter, public as usual '-' delimiter.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1251
diff changeset
    20
(defun pypi/pkg-callback (status)
1211
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    21
  (let ( (buffer (current-buffer)) content-type status )
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    22
    (setq content-type (mail-fetch-field "Content-Type"))
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    23
    (setq status url-http-response-status)
1516
ad7b40d1f520 Private functions use '/' delimiter, public as usual '-' delimiter.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1251
diff changeset
    24
    (switch-to-buffer pypi/buffer-name)
1211
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    25
    (erase-buffer)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
    (url-insert buffer)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    27
    (fundamental-mode)
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    28
    (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
    29
      (js-mode))))
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    30
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
;;;###autoload
1516
ad7b40d1f520 Private functions use '/' delimiter, public as usual '-' delimiter.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1251
diff changeset
    32
(defun pypi-pkg (pkg)
1214
f9baff417868 If region active - use it content as default value.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1213
diff changeset
    33
  (interactive (list
f9baff417868 If region active - use it content as default value.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1213
diff changeset
    34
                (read-string "Python package: "
f9baff417868 If region active - use it content as default value.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1213
diff changeset
    35
                             (if (region-active-p) (buffer-substring (mark) (point)) (thing-at-point 'symbol))
1516
ad7b40d1f520 Private functions use '/' delimiter, public as usual '-' delimiter.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1251
diff changeset
    36
                             'pypi/pkg-history)))
ad7b40d1f520 Private functions use '/' delimiter, public as usual '-' delimiter.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1251
diff changeset
    37
  (url-retrieve (format pypi/url pkg) #'pypi/pkg-callback))
1211
c8cb83742738 Handle work with Python pypi site.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    38
1212
745c136f8398 Forget add provide.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1211
diff changeset
    39
(provide 'pypi)
745c136f8398 Forget add provide.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1211
diff changeset
    40
745c136f8398 Forget add provide.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1211
diff changeset
    41
;;; pypi.el ends here