From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Johannes Weiner Newsgroups: gmane.emacs.devel Subject: [PATCH 2/2] browse-url.el: elinks support Date: Wed, 22 Aug 2007 03:19:08 +0200 Message-ID: <20070822011908.GC1945@saeurebad.de> References: <20070822011418.GA1945@saeurebad.de> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="rJwd6BRFiFCcLxzm" X-Trace: sea.gmane.org 1187745570 26421 80.91.229.12 (22 Aug 2007 01:19:30 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Wed, 22 Aug 2007 01:19:30 +0000 (UTC) To: Emacs development discussions Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Aug 22 03:19:25 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1INesS-0000H5-Ig for ged-emacs-devel@m.gmane.org; Wed, 22 Aug 2007 03:19:20 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1INesR-0008AB-SE for ged-emacs-devel@m.gmane.org; Tue, 21 Aug 2007 21:19:19 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1INesO-00089e-7I for emacs-devel@gnu.org; Tue, 21 Aug 2007 21:19:16 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1INesN-00087m-4A for emacs-devel@gnu.org; Tue, 21 Aug 2007 21:19:15 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1INesM-00087j-V4 for emacs-devel@gnu.org; Tue, 21 Aug 2007 21:19:14 -0400 Original-Received: from saeurebad.de ([85.214.36.134]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1INesM-0003BH-Hf for emacs-devel@gnu.org; Tue, 21 Aug 2007 21:19:14 -0400 Original-Received: by saeurebad.de (Postfix, from userid 1000) id 2A9E72F03B2; Wed, 22 Aug 2007 03:19:08 +0200 (CEST) Mail-Followup-To: Emacs development discussions Content-Disposition: inline In-Reply-To: <20070822011418.GA1945@saeurebad.de> User-Agent: Mutt/1.5.16 (2007-06-11) X-Detected-Kernel: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:76924 Archived-At: --rJwd6BRFiFCcLxzm Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, this patch adds `browse-url-elinks'. Hannes --rJwd6BRFiFCcLxzm Content-Type: text/x-diff; charset=us-ascii Content-Disposition: inline; filename="emacs-browse-url-elinks.patch" diff -Naur emacs.orig/lisp/net/browse-url.el emacs/lisp/net/browse-url.el --- emacs.orig/lisp/net/browse-url.el 2007-08-22 02:40:40.000000000 +0200 +++ emacs/lisp/net/browse-url.el 2007-08-22 02:57:32.000000000 +0200 @@ -55,6 +55,7 @@ ;; browse-url-default-macosx-browser Mac OS X browser ;; browse-url-gnome-moz GNOME interface to Mozilla ;; browse-url-kde KDE konqueror (kfm) +;; browse-url-elinks Elinks Don't know (tried with 0.12.GIT) ;; [A version of the Netscape browser is now free software ;; , albeit not GPLed, so it is @@ -263,6 +264,7 @@ (function-item :tag "Grail" :value browse-url-grail) (function-item :tag "MMM" :value browse-url-mmm) (function-item :tag "KDE" :value browse-url-kde) + (function-item :tag "Elinks" :value browse-url-elinks) (function-item :tag "Specified by `Browse Url Generic Program'" :value browse-url-generic) (function-item :tag "Default Windows browser" @@ -611,6 +613,11 @@ :type '(repeat (string :tag "Argument")) :group 'browse-url) +(defcustom browse-url-elinks-wrapper '("xterm" "-e") + "*Wrapper command prepended to the Elinks command-line." + :type '(repeat (string :tag "Wrapper")) + :group 'browse-url) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; URL encoding @@ -1493,6 +1500,46 @@ (apply #'start-process (concat "KDE " url) nil browse-url-kde-program (append browse-url-kde-args (list url)))) +;;;###autoload +(defun browse-url-elinks (url) + "Ask the Elinks WWW browser to load URL. +Default to the URL around the point. + +The document is loaded in a new tab of a running Elinks or, if +none yet running, a newly started instance. + +The Elinks command will be prepended by the program+arguments +from `elinks-browse-url-wrapper'." + (interactive (browse-url-interactive-arg "URL: ")) + (setq url (browse-url-encode-url url)) + (let ((process-environment (browse-url-process-environment)) + (elinks-ping-process (start-process "elinks-ping" nil + "elinks" "-remote" "ping()"))) + (set-process-sentinel elinks-ping-process + `(lambda (process change) + (browse-url-elinks-sentinel process ,url))))) + +(defun browse-url-elinks-sentinel (process url) + "Determines if Elinks is running or a new one has to be started." + (let ((exit-status (process-exit-status process)) + (process-environment (browse-url-process-environment))) + ;; Try to determine if an instance is running or if we have to + ;; create a new one. + (case exit-status + (5 + ;; No instance, start a new one. + (apply #'start-process + (append (list (concat "elinks:" url) nil) + browse-url-elinks-wrapper + (list "elinks" url)))) + (0 + ;; Found an instance, open URL in new tab. + (start-process (concat "elinks:" url) nil + "elinks" "-remote" + (concat "openURL(\"" url "\",new-tab)"))) + (otherwise + (error "Undefined exit-code of process `elinks'."))))) + (provide 'browse-url) ;;; arch-tag: d2079573-5c06-4097-9598-f550fba19430 --rJwd6BRFiFCcLxzm Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel --rJwd6BRFiFCcLxzm--