Merge with git+ssh://pasky.or.cz/srv/git/elinks.git
[elinks.git] / doc / events.txt
blob92cc6235dbafd775814c4dd3ba446359e3b41238
1                                 Events
3 This file lists the events currently in use, when they are called, what they
4 do and what arguments they expect.
6 Events are a mechanism for communication between ELinks parts --- any ELinks
7 subsystem (module) can register an event, hook at an event or trigger an event.
8 Events are designed to allow transition to a completely message-passing model
9 internally, with modules talking to each other through the events.
11 Events are currently used primarily as a generic way to trigger event handlers
12 in various scripting backends.
14 Therefore, so far this reference sheet is useful mainly to scripting backends
15 developers and also scripting power users - it looks at the C side but usually
16 you get most (if not all) of it passed to the hook functions in your scripts.
20 Below is a template showing how to read the event information
22 Name:           <event name>
23 Managed By:     <what part of the code registers and unregister the event>
24 Arguments:
26  <the order and type of the arguments>
28 Triggered When:
30  <short description of when the event is triggered>
32 Description:
34  <description of the arguments, what the event does etc.>
36 Please keep in alphabetical order!
40 The list of events itself:
42 -------------------------------------------------------------------------------
43 Name:           bookmark-delete
44 Managed By:     The bookmarks subsystem
45 Triggered When:
47  A bookmark is being deleted.
49 Arguments:
51  struct bookmark *bookmark
53 Description:
55  Currently only used by the tab snapshotting code to avoid a dangling pointer
56  should the deleted bookmark be the folder to which it made the last snapshot.
58 -------------------------------------------------------------------------------
59 Name:           bookmark-move
60 Managed By:     The bookmarks subsystem
61 Triggered When:
63  A bookmark is being moved.
65 Arguments:
67  struct bookmark *bookmark
68  struct bookmark *destination
70 Description:
72  The bookmark is moved immediately after the destination bookmark.
74  This is currently only used by the tab snapshotting code, which assumes
75  that when a user moves a bookmark, the user does not want the snapshotting
76  code to delete it when it makes the next snapshot.
78 -------------------------------------------------------------------------------
79 Name:           bookmark-update
80 Managed By:     The bookmarks subsystem
81 Triggered When:
83  The user finishes editing a bookmark.
85 Arguments:
87  struct bookmark *bookmark
88  unsigned char *new_title
89  unsigned char *new_url
91 Description:
93  This is triggered before the new title and URL are assigned to the bookmark.
94  Therefore, handlers can get the old title and URL from the bookmark structure
95  and the new title and URL from the event arguments.
97  This is currently only used by the tab snapshotting code, which assumes
98  that when a user edits a bookmark, the user does not want the snapshotting
99  code to delete it when it makes the next snapshot.
101 -------------------------------------------------------------------------------
102 Name:           dialog-lua-console
103 Managed By:     The Lua scripting subsystem/backend
104 Triggered When:
106  The user hits a key associated with 'lua-console' action.
108 Arguments:
110  struct session *ses
112 Description:
114  Open Lua console dialog.
116 -------------------------------------------------------------------------------
117 Name:           free-history
118 Managed By:     The scripting subsystem/backends
119 Triggered When:
121  ELinks exits
123 Arguments:
125  None
127 Description:
129  Allow a subsystem to free its history lists.
131 -------------------------------------------------------------------------------
132 Name:           goto-url
133 Managed By:     The scripting subsystem/backends
134 Triggered When:
136  The user enters something into the goto URL dialog.
138 Arguments:
140  unsigned char **url, struct session *ses
142 Description:
144  If a URL other than @url should be followed, the old one should be freed
145  and the new one should be assigned to @url. @url must not be assigned
146  NULL and must remain freeable.
147  Valid values for @url are:
148  - unchanged, if the original URL should be followed;
149  - a new, dynamically allocated URL to be followed instead; or
150  - an empty string, if no URL should be followed.
152  @ses is usually used for deciding based on the current URI or for reporting
153  potential errors during the hook processing through the UI. With @ses being
154  NULL the hook handler should assume no current URI and no suitable UI set up
155  (i.e., starting up yet or -dump).
157 -------------------------------------------------------------------------------
158 Name:           follow-url
159 Managed By:     The scripting subsystem/backends
160 Triggered When:
162  The user decides to load some document by following a link, entering an URL
163  in the goto URL dialog, loading frames from a frameset (?) etc.
165 Arguments:
167  unsigned char **url, struct session *ses
169 Description:
171  If another URL than @url should be followed it is passed by setting @url.
172  If @url is changed the event propagation should be ended.
173  Valid values for @url includes:
174  - leaving @url unchanged if the original URL should be followed;
175  - NULL if no URL should be followed; or
176  - a dynamically allocated new URL to be followed instead.
178 -------------------------------------------------------------------------------
179 Name:           get-proxy
180 Managed By:     The scripting subsystem/backends
181 Triggered When:
183  Determining what proxy, if any, should be used to load a requested URL.
185 Arguments:
187  unsigned char **new_proxy_url, unsigned char *url
189 Description:
191  Possible values for @new_proxy_url includes:
192  - a dynamically allocated string with the format proxy:port;
193  - an empty string (dynamically allocated!) to use no proxy; or
194  - NULL to use the default proxies.
196 -------------------------------------------------------------------------------
197 Name:           periodic-saving
198 Managed By:     No maintainer but used by lowlevel/timer.*
199 Triggered When:
201  The interval timer configured through option goes off.
203 Arguments:
205  none
207 Description:
209  Makes it possible to periodically save files in ~/.elinks to disk.
211 -------------------------------------------------------------------------------
212 Name:           pre-format-html
213 Managed By:     The scripting subsystem/backends
214 Triggered When:
216  A HTML document has been loaded - before the document rendering begins.
218 Arguments:
220  struct session *ses
221  struct cache_entry *cached
223 Description:
225  Makes it possible to fix up bad HTML code, remove tags etc. The parameter
226  cached is guaranteed to have a single fragment. The HTML source is changed
227  by replacing this fragment:
229         add_fragment(cached, 0, new_string, new_len);
230         normalize_cache_entry(cached, new_len);
232 -------------------------------------------------------------------------------
233 Name:           quit
234 Managed By:     The scripting subsystem/backends
235 Triggered When:
237  ELinks quits
239 Arguments:
241  None
243 Description:
245  Allows a subsystem to do whatever clean-up is required when ELinks quits.
247 -------------------------------------------------------------------------------