Alexander Plavin <me@aplavin.ru> [Thu, 04 Jul 2013 14:18:44 +0400] rev 19387
hgweb: code selection without line numbers in file source view
All the source lines are put in a <pre> tag, which gives correct display and
copy&paste in both Chromium (WebKit) and FireFox: line numbers are not copied,
all the tabs and spaces are kept. This doesn't change the visual appearance
of the view compared to current hgweb version and doesn't use any JS code.
Also, stripes in this view are now generated clientside with CSS.
This implementation is chosen because other variants have important issues:
Strategy FF Chrome
current D,LT,E,T,L D,L
pre S,NW S,NW
pre/div/nbsp LT,E,T,TS,NW TS,NW
pre/div/br LT,E,T,NW NW
ol/li/nbsp LT,E,T,TS,AJ TS,AJ
ol/li/br LT,E,T,AJ AJ
pre/span LV LV
Legend
Strategies:
- current: implemented in hgweb before this patch, i.e. divs for each line,
and line numbers links in the div too
- pre: the whole code in one pre tag with newlines, all line numbers
in another one with 'float: left'
- pre/div/{nbsp,br}: same as just 'pre', but separate divs for each line and
or <br> instead of empty lines (otherwise they are not copied at all)
- ol/li/{nbsp,br}: a single ol with li's and divs for each line,
or <br> same as in previous strategy
- pre/span: this patch
Problems:
D = (very minor) display problems, like wrong width of leading tabs
LT = loses leading/trailing whitespace
E = loses embedded whitespace
B = loses blank lines
T = loses tabs
L = selects line numbers
LV = (only) visually selects line numbers
LVE = (only) visually selects line numbers at empty lines
S = no stripes (and no ability to easily highlight
lines-which-are-linked-at in the future)
TS = space copied instead of empty line
AJ = get anchor links only with JS (they work even without)
NW = no linewrap easily possible (in future)
As for browser versions compatibility, the CSS tricks used are supported in
(according to caniuse.com):
a) line numbers generation with 'content:' property and CSS counters:
IE 8+, all other popular browsers (in pre-WebKit Opera numbers are being copied)
b) stripes ('nth-child' selector):
IE 8+, FF 3.5+, Safari 3.2+, Opera 9.5+, all other popular browsers
c) line numbers are not visually selected ('user-select:' property):
IE 10+, Opera 15.0+, all other popular browsers
This patch is based on a demo implementation by
Martin Geisler <martin@geisler.net>.
Simon Heimberg <simohe@besonet.ch> [Sat, 06 Jul 2013 21:48:07 +0200] rev 19386
tests: print line numbers when checking code
When an exception will be listed the line numbers can be replaced with glob
as it is done in test-check-pyflakes.t
Simon Heimberg <simohe@besonet.ch> [Sat, 06 Jul 2013 21:48:01 +0200] rev 19385
tests: rename files to py extension instead of copying a 2nd time
Simon Heimberg <simohe@besonet.ch> [Sat, 06 Jul 2013 21:47:56 +0200] rev 19384
tests: check-code all python files in one run
Shun-ichi GOTO <shunichi.goto@gmail.com> [Thu, 04 Jul 2013 23:05:59 +0900] rev 19383
win32mbcs: wrap util.split()
util.split() should be wrapped because it is an alias of unsafe
os.path.split().
Simon Heimberg <simohe@besonet.ch> [Mon, 01 Jul 2013 06:50:58 +0200] rev 19382
check-code: concatenate "check-code" on compile time
The python compiler concatenates two string constants. Use this instead of
doing it on run time or instruct the user how to do it.
The strings "no-check-code" and "check-code-ignore" has to be specially written
for not skipping some checking of the code of this file.
Simon Heimberg <simohe@besonet.ch> [Mon, 01 Jul 2013 06:50:58 +0200] rev 19381
tests: do not skip code-checking on some whole files
In filterpyflakes the term no-check-code was probably by accident.
In the test the intention was not to skip the entire file but only one
line. But any skipping seems to be unnecessary since a longer time.
Simon Heimberg <simohe@besonet.ch> [Mon, 01 Jul 2013 06:50:58 +0200] rev 19380
check-code: do not warn on printf \\x or \\[1-9]
When there is a double backslash the following char does not have any special
meaning. So do not warn on this.
Remove the now obsolete no-check-code statement. (It was used wrongly anyway, it
skipped checking the entire file.)
Simon Heimberg <simohe@besonet.ch> [Tue, 06 Nov 2012 00:22:56 +0100] rev 19379
summary: remove passing of rev because summary does not have this
The command summary does not have a rev argument, so passing this results
is None always. Therefore pass None explicitly.
Simon Heimberg <simohe@besonet.ch> [Mon, 01 Jul 2013 20:48:56 +0200] rev 19378
cleanup: drop unused variables and an unused import