mirror of
https://github.com/rkd77/elinks.git
synced 2025-02-02 15:09:23 -05:00
Python: Give goto_url_hook only one argument, like follow_url_hook.
On Dec 31, 2006, at 11:30am, Kalle Olavi Niemitalo writes: >src/scripting/python/hooks.c (script_hook_url) calls hooks as >goto_url_hook(new-url, current-url) and follow_url_hook(new-url). >It has a comment saying that the current-url parameter exists >only for compatibility and that the script can instead use >elinks.current_url(). However, the current-url parameter was >added in commit 87e27b9b3e47671484c7eb77d61b75fffc89624f and is >not in ELinks 0.11.2, so any compatibility problems would only >hit people who have been using 0.12.GIT snapshots. Can we remove >the second parameter now before releasing ELinks 0.12pre1? The decision isn't up to me, but I think this is a good idea. Here's a patch that would update the documentation and hooks.py, as well as hooks.c. FYI, if this patch is applied then anyone who's still trying to use a goto_url_hook that expects a second argument will get a "Browser scripting error" dialog box that says: An error occurred while running a Python script: TypeError: goto_url_hook() takes exactly 2 arguments (1 given)
This commit is contained in:
parent
e45f5a8915
commit
26473f72f5
@ -46,7 +46,7 @@ dumbprefixes = {
|
|||||||
"sd" : "http://www.slashdot.org/"
|
"sd" : "http://www.slashdot.org/"
|
||||||
}
|
}
|
||||||
|
|
||||||
def goto_url_hook(url, current_url):
|
def goto_url_hook(url):
|
||||||
"""Rewrite a URL that was entered in a "Go to URL" dialog box.
|
"""Rewrite a URL that was entered in a "Go to URL" dialog box.
|
||||||
|
|
||||||
This function should return a URL for ELinks to follow, or None if
|
This function should return a URL for ELinks to follow, or None if
|
||||||
@ -55,8 +55,6 @@ def goto_url_hook(url, current_url):
|
|||||||
Arguments:
|
Arguments:
|
||||||
|
|
||||||
url -- The URL provided by the user.
|
url -- The URL provided by the user.
|
||||||
current_url -- The URL of the document being viewed, or None if no
|
|
||||||
document is being viewed.
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if url in dumbprefixes:
|
if url in dumbprefixes:
|
||||||
@ -136,13 +134,12 @@ class goto_url_in_new_tab:
|
|||||||
"""Prompter that opens a given URL in a new tab."""
|
"""Prompter that opens a given URL in a new tab."""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
"""Prompt for a URL."""
|
"""Prompt for a URL."""
|
||||||
self.current_location = elinks.current_url()
|
|
||||||
elinks.input_box("Enter URL", self._callback, title="Go to URL")
|
elinks.input_box("Enter URL", self._callback, title="Go to URL")
|
||||||
def _callback(self, url):
|
def _callback(self, url):
|
||||||
"""Open the given URL in a new tab."""
|
"""Open the given URL in a new tab."""
|
||||||
if 'goto_url_hook' in globals():
|
if 'goto_url_hook' in globals():
|
||||||
# Mimic the standard "Go to URL" dialog by calling goto_url_hook().
|
# Mimic the standard "Go to URL" dialog by calling goto_url_hook().
|
||||||
url = goto_url_hook(url, self.current_location) or url
|
url = goto_url_hook(url) or url
|
||||||
if url:
|
if url:
|
||||||
elinks.open(url, new_tab=True)
|
elinks.open(url, new_tab=True)
|
||||||
# The elinks.bind_key() function can be used to create a keystroke binding
|
# The elinks.bind_key() function can be used to create a keystroke binding
|
||||||
|
@ -44,7 +44,7 @@ FUNCTIONS
|
|||||||
|
|
||||||
url -- The URL of the link.
|
url -- The URL of the link.
|
||||||
|
|
||||||
goto_url_hook(url, current_url)
|
goto_url_hook(url)
|
||||||
Rewrite a URL that was entered in a "Go to URL" dialog box.
|
Rewrite a URL that was entered in a "Go to URL" dialog box.
|
||||||
|
|
||||||
This function should return a URL for ELinks to follow, or None if
|
This function should return a URL for ELinks to follow, or None if
|
||||||
@ -53,8 +53,6 @@ FUNCTIONS
|
|||||||
Arguments:
|
Arguments:
|
||||||
|
|
||||||
url -- The URL provided by the user.
|
url -- The URL provided by the user.
|
||||||
current_url -- The URL of the document being viewed, or None if no
|
|
||||||
document is being viewed.
|
|
||||||
|
|
||||||
pre_format_html_hook(url, html)
|
pre_format_html_hook(url, html)
|
||||||
Rewrite the body of a document before it's formatted.
|
Rewrite the body of a document before it's formatted.
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#include "main/event.h"
|
#include "main/event.h"
|
||||||
#include "protocol/uri.h"
|
#include "protocol/uri.h"
|
||||||
#include "scripting/python/core.h"
|
#include "scripting/python/core.h"
|
||||||
#include "session/location.h"
|
|
||||||
#include "session/session.h"
|
#include "session/session.h"
|
||||||
#include "util/memory.h"
|
#include "util/memory.h"
|
||||||
#include "util/string.h"
|
#include "util/string.h"
|
||||||
@ -64,28 +63,7 @@ script_hook_url(va_list ap, void *data)
|
|||||||
|
|
||||||
python_ses = ses;
|
python_ses = ses;
|
||||||
|
|
||||||
/*
|
result = PyObject_CallMethod(python_hooks, method, "s", *url);
|
||||||
* Historical note: The only reason the goto and follow hooks are
|
|
||||||
* treated differently is to maintain backwards compatibility for
|
|
||||||
* people who already have a goto_url_hook() function in hooks.py
|
|
||||||
* that expects a second argument. If we were starting over from
|
|
||||||
* scratch, we could treat the goto and follow hooks identically and
|
|
||||||
* simply pass @url as the sole argument in both cases; the Python
|
|
||||||
* code for the goto hook no longer needs its @current_url argument
|
|
||||||
* since it could instead determine the current URL by calling the
|
|
||||||
* Python interpreter's elinks.current_url() function.
|
|
||||||
*/
|
|
||||||
if (!strcmp(method, "goto_url_hook")) {
|
|
||||||
unsigned char *current_url = NULL;
|
|
||||||
|
|
||||||
if (python_ses && have_location(python_ses))
|
|
||||||
current_url = struri(cur_loc(ses)->vs.uri);
|
|
||||||
|
|
||||||
result = PyObject_CallMethod(python_hooks, method, "ss", *url,
|
|
||||||
current_url);
|
|
||||||
} else {
|
|
||||||
result = PyObject_CallMethod(python_hooks, method, "s", *url);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!result || !replace_with_python_string(url, result))
|
if (!result || !replace_with_python_string(url, result))
|
||||||
alert_python_error();
|
alert_python_error();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user