This is a link to a response I made on the Elinks users list (A desolate, tumbleweed inhabited place). It’s something I’d noticed on certain websites in Elinks, but I never figured out why until this email gave me another concrete case to compare against the one I already knew about.

I realised that if text was occurring in <pre> elements then that would cause ELinks not to wrap it. So my hacky fix was to use Lua to change the <pre> elements to something else.

function additional_pre_format_html_hook (url, html)
	--Fix non-wrapping pages. For now, just this one
	if string.find(url, "://antirez.") then
		--Change <pre> to <div> this is very hacky and prone to failure
		html = string.gsub (html, '<pre(.-)</pre>', '<div%1</div>')
		--But since we only want to do this for pre not followed by code, change any divs followed by code back to pre
		html = string.gsub (html, '<div(.-<code.-</code>.-)</div>', '<pre%1</pre>')
		return html
	end
end

Since I have an existing pre_format_html_hook I use for Pinboard I initially had to include the above code within that. However, I then found out you can redefine lua functions (hence why the above is called additional_pre_format_html_hook). When I originally wrote this post (and I swear I had this working) I used the following code:

do
	local existing_pre_format_html_hook = pre_format_html_hook
	pre_format_html_hook = function(url, html) existing_pre_format_html_hook(url, html) additional_pre_format_html_hook(url, html) end
end

But then this redefining technique stopped working (or I was mad and it never worked in the first place?) and so I’ve had to amend it like follows (which adds in a bit of duplication since I already have these or similar if statements in each pre_format_html_hook):

do
	local existing_pre_format_html_hook = pre_format_html_hook
	pre_format_html_hook = function (url, html)
		if string.find(url, "://m.pinboard") then
			return existing_pre_format_html_hook (url, html)
		elseif string.find(url, "://antirez.") then
			return additional_pre_format_html_hook (url, html)
		end
	end
end

The only downside of all this is that it didn’t fully fix the original posters problem, but at least it did mine.


[EDIT: 2015-08-15] Fix this terrible post. I had the wrong link in for “found out you can redefine lua functions”. Also, the Lua code for the additional_pre_format_html_hook was wrong. Not sure how I managed to make such a mess of this post. Also, for reasons I cannot figure out, the redfefining of lua functions is not working for me right now even though I definitely had this working at one point. I can’t figure out what I’ve broken. When I do figure it out I’ll update here again.

[EDIT: 2015-08-16] Add redefining code that actually works. For sure, this time.