diff options
author | Tom Willemsen | 2011-03-23 11:14:27 +0100 |
---|---|---|
committer | Tom Willemsen | 2011-03-23 11:14:27 +0100 |
commit | 0d342f0aee3f2f800e486c0051dabe718a7b2841 (patch) | |
tree | 1f55afabb8f4876dbe564f7ed5d8e573ddc78df3 /emacs.d/nxhtml/util/ediff-url.el | |
parent | d4510153b17625a3dd2f1852cc6392fc26efecf6 (diff) | |
download | dotfiles-0d342f0aee3f2f800e486c0051dabe718a7b2841.tar.gz dotfiles-0d342f0aee3f2f800e486c0051dabe718a7b2841.zip |
I don't like nxhtml
Diffstat (limited to 'emacs.d/nxhtml/util/ediff-url.el')
-rw-r--r-- | emacs.d/nxhtml/util/ediff-url.el | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/emacs.d/nxhtml/util/ediff-url.el b/emacs.d/nxhtml/util/ediff-url.el deleted file mode 100644 index 12329bd..0000000 --- a/emacs.d/nxhtml/util/ediff-url.el +++ /dev/null @@ -1,188 +0,0 @@ -;;; ediff-url.el --- Diffing buffer against downloaded url -;; -;; Author: Lennart Borgman (lennart O borgman A gmail O com) -;; Created: Sat Nov 24 2007 -;; Version: 0.56 -;; Last-Updated: 2010-03-18 Thu -;; URL: http://bazaar.launchpad.net/~nxhtml/nxhtml/main/annotate/head%3A/util/ediff-url.el -;; -;; Features that might be required by this library: -;; - ;; `mail-prsvr', `mm-util', `timer', `url-parse', `url-util', - ;; `url-vars'. -;; -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Commentary: -;; -;; This file contains a simple function, `ediff-url', to help you -;; update a single file from the web. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Change log: -;; -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2, or -;; (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth -;; Floor, Boston, MA 02110-1301, USA. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Code: - -(require 'url-util) -(eval-when-compile (require 'cl)) - -(defvar ediff-url-read-url-history nil) - -(defun ediff-url-redir-launchpad (url) - "Check if bazaar list page on Launchpad. -If URL is a description page for a file uploaded to EmacsWiki -suggest to use the download URL instead." - (let* ((bazaar-url "http://bazaar.launchpad.net/") - (bazaar-len (length bazaar-url))) - (if (and (< bazaar-len (length url)) - (string= bazaar-url (substring url 0 bazaar-len))) - (let* ((url-show-status nil) ;; just annoying showing status here - (buffer (url-retrieve-synchronously url)) - (handle nil) - (http-status nil) - ;; Fix-me: better more flexible pattern? - (dl-patt "<a href=\"\\(.*?\\)\">download file</a>") - dl-url) - (unless buffer - (message "Got empty buffer for %s" url) - (throw 'command-level nil)) - (with-current-buffer buffer - (if (= 0 (buffer-size)) - (progn - (message "Got empty page for %s" url) - (throw 'command-level nil)) - (require 'url-http) - (setq http-status (url-http-parse-response)) - (if (memq http-status '(200 201)) - (progn - (goto-char (point-min)) - (unless (search-forward "\n\n" nil t) - (error "Could not find header end in buffer for %s" url)) - (unless (re-search-forward dl-patt nil t) - (error "Could not find download link")) - (setq dl-url (match-string 1)) - (set-buffer-modified-p nil) - (kill-buffer buffer) - dl-url) - (kill-buffer buffer) - (setq buffer nil) - (setq http-status - (concat (number-to-string http-status) - (case http-status - (401 " (unauthorized)") - (403 " (forbidden)") - (404 " (not found)") - (408 " (request timeout)") - (410 " (gone)") - (500 " (internal server error)") - (503 " (service unavailable)") - (504 " (gateway timeout)") - (530 " (user access denied)") - ))) - (message "Got status %s for %s" http-status url) - (throw 'command-level nil))))) - url))) - -(defun ediff-url-redir-emacswiki-description-page (url) - "Check if description page on EmacsWiki. -If URL is a description page for a file uploaded to EmacsWiki -suggest to use the download URL instead." - ;;(let* ((desc-url "http://www.emacswiki.org/emacs/") - (let* ((emacswiki-url "http://www.emacswiki.org/") - (emacswiki-len (length emacswiki-url))) - (if (and (< emacswiki-len (length url)) - (string= emacswiki-url (substring url 0 emacswiki-len)) - (not (string-match-p "/download/" url))) - (let ((prompt - (concat "This seem to be the description page on EmacsWiki," - "\n\tdo you want the download url instead? "))) - (when (y-or-n-p prompt) - ;;(let ((start (+ 6 (string-match "/wiki/" url)))) - (let ((start (+ 7 (string-match "/emacs/" url)))) - (concat (substring url 0 start) - "download/" - (substring url start))))) - ;; Not on the wiki, just return the url: - url))) - -(defcustom ediff-url-redirects '(ediff-url-redir-emacswiki-description-page - ediff-url-redir-launchpad - ) - "List of functions checking url given to `ediff-url'. -Each function should take an URL as argument and return this URL -or a new URL." - :type '(repeat function) - :group 'ediff) - -;;;###autoload -(defun ediff-url (url) - "Compare current buffer to a web URL using `ediff-buffers'. -Check URL using `ediff-url-redirects' before fetching the file. - -This is for checking downloaded file. A the file may have a comment -telling the download URL of thise form in the header: - - ;; URL: http://the-server.net/the-path/the-file.el - -If not the user is asked for the URL." - (interactive (let ((url-init (url-get-url-at-point))) - (unless url-init - (when (eq major-mode 'emacs-lisp-mode) - (save-excursion - (goto-char (point-min)) - (when (re-search-forward "URL:[ \t]*" nil t) - (setq url-init (url-get-url-at-point)))))) - (list (read-from-minibuffer "Url for download file: " - (cons (or url-init "") 1) ;nil - nil nil - 'ediff-url-read-url-history - ;;url-init - )))) - (catch 'command-level ;; Fix-me: remove and let go to top later - (unless (> (length url) 0) - (message "No URL given, aborted by user") - (throw 'command-level nil)) - ;; Check if URL seems reasonable - (dolist (fun ediff-url-redirects) - (setq url (funcall fun url))) - ;; Fetch URL and run ediff - (let* ((url-buf-name (concat "URL=" url)) - (url-buf (get-buffer url-buf-name))) - (when url-buf - (unless (y-or-n-p "Use previously downloaded url? ") - (kill-buffer url-buf) - (setq url-buf nil))) - (unless url-buf - (setq url-buf (get-buffer-create url-buf-name)) - (let ((current-major major-mode)) - (with-current-buffer url-buf - (url-insert-file-contents url) - ;; Assume same modes: - (funcall current-major)))) - (ediff-buffers url-buf (current-buffer))))) - -(provide 'ediff-url) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; ediff-url.el ends here |