Wanted editor feature: synchronized horizontal split
Amit Aronovitch <[email protected]> Sat, 25 Sep 2010 17:01:39 +0200
| Newsgroups | gmane.culture.hackers.israel |
|---|---|
| Message-ID | <[email protected]> |
--000325574d66c22f34049116c50a
Content-Type: text/plain; charset=ISO-8859-1
When reading (or editing) long textual documents, especially source code,
you always have to compromise between viewing larger portions of the code at
once (to get a wider context), and having reasonably sized fonts (long
documents take long time to read, you wouldn't want to stress your eyes too
much).
Since code typically has a fixed, relatively short, line width, there is no
point in stretching your window horizontally. Only vertical stretching
helps, and you are limited by the height of your screen.
The problem became even worse with the increased popularity of wide-screens
(for a given screen area, you now get shorter screens, and either have to
settle for less lines to display or strain the eyes with smaller sized
fonts).
I think that the best way to use screen area in modern wide screens would be
to "cut" a "virtual" tall window into two halves and have them displayed
side by side. In other words, have a wide window for your editor, which is
horizontally split in two halves, where lines from the top of the right pane
scroll into the bottom of the left pane and vice versa.
In Emacs I can simulate a crude version of this by carefully resizing and
scrolling two views of the same buffer, such that the top line of the right
view follows the bottom line of the left one
(see screenshot in http://dl.dropbox.com/u/6960989/horizsplit.png ), and
then turn on "scroll-all-mode" to force synchronized scrolling.
However:
* It is a bit tricky to set up.
* You loose synchronization if you try to scroll beyond the top or bottom of
your file.
* I would like to have a single scrollbar, cursor and status line, rather
than two (which is confusing).
(well, maybe there is a special emacs mode for what I want, but I do not
know of such).
Now the question:
Is such a feature available in your favorite editor? Do you know of a good
editor that supports this?
If not - should not be hard to implement - maybe somebody already wrote such
an extension...
AA
--000325574d66c22f34049116c50a
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/htm=
l4/strict.dtd">
<html>
<head>
</head>
<body style=3D"background-color: #fff;">
<span style=3D"display:none"> </span>
<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id=3D"ygrp-mlmsg" style=3D"position:relative;">
<div id=3D"ygrp-msg" style=3D"z-index: 1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->
<div id=3D"ygrp-text" >
=20=20=20=20=20=20
=20=20=20=20=20=20
<p><div dir=3D"ltr">When reading (or editing) long textual documents,=
especially source code, you always have to compromise=A0between viewing la=
rger portions of the code at once (to get a wider context), and having reas=
onably sized fonts (long documents take long time to read, you wouldn't=
want to stress your eyes too much).<div>
Since code typically has a fixed, relatively short, line width, there is no=
point in stretching your window horizontally. Only vertical stretching hel=
ps, and you are limited by the height of your screen.</div><div>The problem=
became even worse with the increased popularity of wide-screens (for a giv=
en screen area, you now get shorter screens, and either have to settle for =
less lines to display or strain the eyes with smaller sized fonts).</div>
<div><br></div><div>I think that the best way to use screen area in modern =
wide screens would be to "cut" a "virtual" tall window =
into two halves and have them displayed side by side. In other words, have =
a wide window for your editor, which is horizontally split in two halves, w=
here lines from the top of the right pane scroll into the bottom of the lef=
t pane and vice versa.</div>
<div>In Emacs I can simulate a crude version of this by carefully resizing =
and scrolling two views of the same buffer, such that the top line of the r=
ight view follows the bottom line of the left one</div><div>(see screenshot=
in =A0<a href=3D"http://dl.dropbox.com/u/6960989/horizsplit.png">http://dl=
.dropbox.com/u/6960989/horizsplit.png</a>=A0), and then turn on "scrol=
l-all-mode" to force synchronized scrolling.</div>
<div>However:=A0</div><div>* It is a bit tricky to set up.</div><div>* You =
loose synchronization if you try to scroll beyond the top or bottom of your=
file.</div><div>* I would like to have a single scrollbar, cursor and stat=
us line, rather than two (which is confusing).</div>
<div>(well, maybe there is a special emacs mode for what I want, but I do n=
ot know of such).</div><div><br></div><div>Now the question:=A0</div><div>I=
s such a feature available in your favorite editor? Do you know of a good e=
ditor that supports this?</div>
<div>If not - should not be hard to implement - maybe somebody already wrot=
e such an extension...</div><div><br></div><div>=A0=A0 =A0AA</div><div><br>=
</div></div>
</p>
</div>
=20=20=20=20=20
<!--~-|**|PrettyHtmlStart|**|-~-->
<div style=3D"color: #fff; height: 0;">__._,_.___</div>
=20=20=20=20=20=20=20=20
=20=20
=20=20=20
<div id=3D"ygrp-actbar" style=3D"clear: both; margin-bottom: 10px; whit=
e-space: nowrap; color: #666; padding-top: 15px;">
<div>
<a href=3D"mailto:[email protected]?subject=3DWanted editor feat=
ure: synchronized horizontal split" style=3D"margin-right: 0; padding-right=
: 0;">
Reply to <span style=3D"font-weight: 700;">sender</span></a> |
<a href=3D"mailto:[email protected]?subject=3DWanted edito=
r feature: synchronized horizontal split">
Reply to <span style=3D"font-weight: 700;">group</span></a> |
<a href=3D"http://groups.yahoo.com/group/hackers-il/post;_ylc=3D=
X3oDMTJwbGI3YmhlBF9TAzk3MzU5NzE0BGdycElkAzE4NTczMzIEZ3Jwc3BJZAMxNzA1MDA2NzY=
0BG1zZ0lkAzUxMzQEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMjg1NDkyNjU1?act=3Dreply&m=
essageNum=3D5134">Reply <span style=3D"font-weight: 700;">via web post</spa=
n></a> |
<a href=3D"http://groups.yahoo.com/group/hackers-il/post;_ylc=
=3DX3oDMTJlMGo3aDJyBF9TAzk3MzU5NzE0BGdycElkAzE4NTczMzIEZ3Jwc3BJZAMxNzA1MDA2=
NzY0BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTI4NTQ5MjY1NQ--" style=3D"font-weight:=
700;">Start a New Topic</a>
</div>
<a href=3D"http://groups.yahoo.com/group/hackers-il/message=
/5134;_ylc=3DX3oDMTM0OWtyM2I5BF9TAzk3MzU5NzE0BGdycElkAzE4NTczMzIEZ3Jwc3BJZA=
MxNzA1MDA2NzY0BG1zZ0lkAzUxMzQEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMjg1NDkyNjU1B=
HRwY0lkAzUxMzQ-">Messages in this topic</a>
(<span style=3D"font-weight: 700;">1</span>)
</div>=20
<!------- Start Nav Bar ------>
<!-- |**|begin egp html banner|**| -->
<div id=3D"ygrp-vital" style=3D"background-color: #e0ecee; font-family: Ver=
dana; font-size: 10px; margin-bottom: 10px; padding: 10px;">
<span id=3D"vithd" style=3D"font-weight: bold; color: #333; text-tran=
sform: uppercase; ">Recent Activity:</span>
<ul style=3D"list-style-type: none; margin: 0; padding: 0; display: inl=
ine;">
</ul>
=20=20=20=20
<div style=3D"clear: both; padding-top: 2px; color: #1e66ae;">
<a href=3D"http://groups.yahoo.com/group/hackers-il;_ylc=3DX3oDMTJldTFs=
dWNiBF9TAzk3MzU5NzE0BGdycElkAzE4NTczMzIEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwN2dGw=
Ec2xrA3ZnaHAEc3RpbWUDMTI4NTQ5MjY1NQ--" style=3D"text-decoration: none;">Vis=
it Your Group</a>
</div>
</div>
<div id=3D"ygrp-mkp" style=3D"border: 1px solid #d8d8d8; clea=
r: both; float: left; font-family: Arial; margin: 5px 0 10px 0; padding: 0 =
10px;">
<div id=3D"hd" style=3D"color: #628c2a; font-size: 85%; font-weight: =
700; line-height: 122%; margin: 10px 0;">MARKETPLACE</div>
<div id=3D"ads" style=3D"margin-bottom: 10px;">
<div class=3D"ad" style=3D"color: #628C2A; font-family: A=
rial; font-weight: 700; padding: 0 0;">
<p><a href=3D"http://us.ard.yahoo.com/SIG=3D15oj5iddt/M=3D49306=
4.13983314.14041046.13298430/D=3Dgroups/S=3D1705006764:MKP1/Y=3DYAHOO/EXP=
=3D1285499856/L=3De6cfb450-c94e-11df-97d9-bf74f9693529/B=3DfuKHHEoGYrA-/J=
=3D1285492656152632/K=3DpanhNMc4hwZyy5qTsiKHWw/A=3D6060255/R=3D0/SIG=3D1194=
m4keh/*http://us.toolbar.yahoo.com/?.cpdl=3Dgrpj">Stay on top of your group=
activity without leaving the page you're on - Get the Yahoo! Toolbar now.<=
/a></p> <script language=3Djavascript>
if(window.yzq_d=3D=3Dnull)window.yzq_d=3Dnew Object();
window.yzq_d['fuKHHEoGYrA-']=3D'&U=3D13c88pdu2%2fN%3dfuKHHEoGYrA-%2fC%3d493=
064.13983314.14041046.13298430%2fD%3dMKP1%2fB%3d6060255%2fV%3d1';
</script><noscript><img width=3D1 height=3D1 alt=3D"" src=3D"http://us.bc.y=
ahoo.com/b?P=3De6cfb450-c94e-11df-97d9-bf74f9693529&T=3D1d97d6q8n%2fX%3d128=
5492656%2fE%3d1705006764%2fR%3dgroups%2fK%3d5%2fV%3d2.1%2fW%3dH%2fY%3dYAHOO=
%2fF%3d1933381432%2fH%3dY29udGVudD0iR287UG9kY2FzdHM7V2Vic2l0ZV9TZXJ2aWNlczt=
XaWRnZXRzO1lhaG9vX1NlYXJjaF9NYXJrZXRpbmc7RmxpY2tyO0JyaWVmY2FzZTtGaW5hbmNlO0=
Jvb2ttYXJrO01vYmlsZTsiIGRpc2FibGVzaHVmZmxpbmc9IjEiIHNlcnZlSWQ9ImU2Y2ZiNDUwL=
WM5NGUtMTFkZi05N2Q5LWJmNzRmOTY5MzUyOSIgc2l0ZUlkPSI0NDUyNTUxIiB0U3RtcD0iMTI4=
NTQ5MjY1NjE0MDk2MSIg%2fQ%3d-1%2fS%3d1%2fJ%3d28228962&U=3D13c88pdu2%2fN%3dfu=
KHHEoGYrA-%2fC%3d493064.13983314.14041046.13298430%2fD%3dMKP1%2fB%3d6060255=
%2fV%3d1"></noscript> </div>
<div class=3D"ad" style=3D"color: #628C2A; font-f=
amily: Arial; font-weight: 700; padding: 0 0;">
<hr style=3D"border: 1px solid #d8d8d8;">
<p><a href=3D"http://us.ard.yahoo.com/SIG=3D15o15dc=
ep/M=3D493064.14012770.13963757.13298430/D=3Dgroups/S=3D1705006764:MKP1/Y=
=3DYAHOO/EXP=3D1285499856/L=3De6cfb450-c94e-11df-97d9-bf74f9693529/B=3DgOKH=
HEoGYrA-/J=3D1285492656152632/K=3DpanhNMc4hwZyy5qTsiKHWw/A=3D6015306/R=3D0/=
SIG=3D11vlkvigg/*http://advision.webevents.yahoo.com/hobbiesandactivitieszo=
ne/">Hobbies & Activities Zone: Find others who share your passions! Explor=
e new interests.</a></p><script language=3Djavascript>
if(window.yzq_d=3D=3Dnull)window.yzq_d=3Dnew Object();
window.yzq_d['gOKHHEoGYrA-']=3D'&U=3D13c0nvefp%2fN%3dgOKHHEoGYrA-%2fC%3d493=
064.14012770.13963757.13298430%2fD%3dMKP1%2fB%3d6015306%2fV%3d1';
</script><noscript><img width=3D1 height=3D1 alt=3D"" src=3D"http://us.bc.y=
ahoo.com/b?P=3De6cfb450-c94e-11df-97d9-bf74f9693529&T=3D1d9bi7b6k%2fX%3d128=
5492656%2fE%3d1705006764%2fR%3dgroups%2fK%3d5%2fV%3d2.1%2fW%3dH%2fY%3dYAHOO=
%2fF%3d1928230814%2fH%3dY29udGVudD0iR287UG9kY2FzdHM7V2Vic2l0ZV9TZXJ2aWNlczt=
XaWRnZXRzO1lhaG9vX1NlYXJjaF9NYXJrZXRpbmc7RmxpY2tyO0JyaWVmY2FzZTtGaW5hbmNlO0=
Jvb2ttYXJrO01vYmlsZTsiIGRpc2FibGVzaHVmZmxpbmc9IjEiIHNlcnZlSWQ9ImU2Y2ZiNDUwL=
WM5NGUtMTFkZi05N2Q5LWJmNzRmOTY5MzUyOSIgc2l0ZUlkPSI0NDUyNTUxIiB0U3RtcD0iMTI4=
NTQ5MjY1NjE0MDk2MSIg%2fQ%3d-1%2fS%3d1%2fJ%3d28228962&U=3D13c0nvefp%2fN%3dgO=
KHHEoGYrA-%2fC%3d493064.14012770.13963757.13298430%2fD%3dMKP1%2fB%3d6015306=
%2fV%3d1"></noscript> </div>
<div class=3D"ad" style=3D"color: #628C2A; font-f=
amily: Arial; font-weight: 700; padding: 0 0;">
<hr style=3D"border: 1px solid #d8d8d8;">
<p><a href=3D"http://us.ard.yahoo.com/SIG=3D15oga52=
02/M=3D493064.13814537.14041040.10835568/D=3Dgroups/S=3D1705006764:MKP1/Y=
=3DYAHOO/EXP=3D1285499856/L=3De6cfb450-c94e-11df-97d9-bf74f9693529/B=3Df.KH=
HEoGYrA-/J=3D1285492656152632/K=3DpanhNMc4hwZyy5qTsiKHWw/A=3D6078812/R=3D0/=
SIG=3D114ae4ln1/*http://dogandcatanswers.yahoo.com/">Get great advice about=
dogs and cats. Visit the Dog & Cat Answers Center.</a></p><script languag=
e=3Djavascript>
if(window.yzq_d=3D=3Dnull)window.yzq_d=3Dnew Object();
window.yzq_d['f.KHHEoGYrA-']=3D'&U=3D13cfoa1k0%2fN%3df.KHHEoGYrA-%2fC%3d493=
064.13814537.14041040.10835568%2fD%3dMKP1%2fB%3d6078812%2fV%3d1';
</script><noscript><img width=3D1 height=3D1 alt=3D"" src=3D"http://us.bc.y=
ahoo.com/b?P=3De6cfb450-c94e-11df-97d9-bf74f9693529&T=3D1d923op3m%2fX%3d128=
5492656%2fE%3d1705006764%2fR%3dgroups%2fK%3d5%2fV%3d2.1%2fW%3dH%2fY%3dYAHOO=
%2fF%3d1461896609%2fH%3dY29udGVudD0iR287UG9kY2FzdHM7V2Vic2l0ZV9TZXJ2aWNlczt=
XaWRnZXRzO1lhaG9vX1NlYXJjaF9NYXJrZXRpbmc7RmxpY2tyO0JyaWVmY2FzZTtGaW5hbmNlO0=
Jvb2ttYXJrO01vYmlsZTsiIGRpc2FibGVzaHVmZmxpbmc9IjEiIHNlcnZlSWQ9ImU2Y2ZiNDUwL=
WM5NGUtMTFkZi05N2Q5LWJmNzRmOTY5MzUyOSIgc2l0ZUlkPSI0NDUyNTUxIiB0U3RtcD0iMTI4=
NTQ5MjY1NjE0MDk2MSIg%2fQ%3d-1%2fS%3d1%2fJ%3d28228962&U=3D13cfoa1k0%2fN%3df.=
KHHEoGYrA-%2fC%3d493064.13814537.14041040.10835568%2fD%3dMKP1%2fB%3d6078812=
%2fV%3d1"></noscript> </div>
</div>
</div>
=20=20
<div id=3D"ft" style=3D"font-family: Arial; font-size: 11px; margin-top: 5p=
x; padding: 0 2px 0 0; clear: both;">
<a href=3D"http://groups.yahoo.com/;_ylc=3DX3oDMTJkdjh2c3U2BF9TAzk3NDc2NT=
kwBGdycElkAzE4NTczMzIEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwNmdHIEc2xrA2dmcARzdGltZ=
QMxMjg1NDkyNjU1" style=3D"float: left;"><img src=3D"http://l.yimg.com/a/i/u=
s/yg/logo/us.gif" height=3D"15" width=3D"137" alt=3D"Yahoo! Groups" style=
=3D"border: 0;"/></a>
<div style=3D"color: #747575; float: right;">Switch to: <a href=3D"mailto=
:[email protected]?subject=3DChange Delivery Format: T=
raditional" style=3D"text-decoration: none;">Text-Only</a>, <a href=3D"mail=
to:[email protected]?subject=3DEmail Delivery: Digest" clas=
s=3D"margin-rt" style=3D"text-decoration: none;">Daily Digest</a> • <a=
href=3D"mailto:[email protected]?subject=3DUnsubscrib=
e" style=3D"text-decoration: none;">Unsubscribe</a> • <a href=3D"http:=
//docs.yahoo.com/info/terms/" style=3D"text-decoration: none;">Terms of Use=
</a></div>
</div>
<!-- |**|end egp html banner|**| -->
</div> <!-- ygrp-msg -->
<!-- Sponsor -->
<!-- |**|begin egp html banner|**| -->
<div id=3D"ygrp-sponsor" style=3D"width:160px; float:right; clear:none; m=
argin:0 0 25px 0; background: #fff;">
<!-- Start Recommendations -->
<div id=3D"ygrp-reco">
</div>
<!-- End Recommendations -->
</div> <!-- |**|end egp html banner|**| -->
<div style=3D"clear:both; color: #FFF; font-size:1px;">.</div>
</div>
<img src=3D"http://geo.yahoo.com/serv?s=3D97359714/grpId=3D1857332/grpspI=
d=3D1705006764/msgId=3D5134/stime=3D1285492655/nc1=3D4507179/nc2=3D3848640/=
nc3=3D5191955" width=3D"1" height=3D"1"> <br>
<div style=3D"color: #fff; height: 0;">__,_._,___</div>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</body>
<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
<style type=3D"text/css">
<!--
#ygrp-mkp {
border: 1px solid #d8d8d8;
font-family: Arial;
margin: 10px 0;
padding: 0 10px;
}
#ygrp-mkp hr {
border: 1px solid #d8d8d8;
}
#ygrp-mkp #hd {
color: #628c2a;
font-size: 85%;
font-weight: 700;
line-height: 122%;
margin: 10px 0;
}
#ygrp-mkp #ads {
margin-bottom: 10px;
}
#ygrp-mkp .ad {
padding: 0 0;
}
#ygrp-mkp .ad p {
margin: 0;
}
#ygrp-mkp .ad a {
color: #0000ff;
text-decoration: none;
}
#ygrp-sponsor #ygrp-lc {
font-family: Arial;
}
#ygrp-sponsor #ygrp-lc #hd {
margin: 10px 0px;
font-weight: 700;
font-size: 78%;
line-height: 122%;
}
#ygrp-sponsor #ygrp-lc .ad {
margin-bottom: 10px;
padding: 0 0;
}
a {
color: #1e66ae;
}
#actions {
font-family: Verdana;
font-size: 11px;
padding: 10px 0;
}
#activity {
background-color: #e0ecee;
float: left;
font-family: Verdana;
font-size: 10px;
padding: 10px;
}
#activity span {
font-weight: 700;
}
#activity span:first-child {
text-transform: uppercase;
}
#activity span a {
color: #5085b6;
text-decoration: none;
}
#activity span span {
color: #ff7900;
}
#activity span .underline {
text-decoration: underline;
}
.attach {
clear: both;
display: table;
font-family: Arial;
font-size: 12px;
padding: 10px 0;
width: 400px;
}
.attach div a {
text-decoration: none;
}
.attach img {
border: none;
padding-right: 5px;
}
.attach label {
display: block;
margin-bottom: 5px;
}
.attach label a {
text-decoration: none;
}
=20=20
blockquote {
margin: 0 0 0 4px;
}
.bold {
font-family: Arial;
font-size: 13px;
font-weight: 700;
}
.bold a {
text-decoration: none;
}
dd.last p a {
font-family: Verdana;
font-weight: 700;
}
dd.last p span {
margin-right: 10px;
font-family: Verdana;
font-weight: 700;
}
dd.last p span.yshortcuts {
margin-right: 0;
}
div.attach-table div div a {
text-decoration: none;
}
div.attach-table {
width: 400px;
}
div.file-title a, div.file-title a:active, div.file-title a:hover, div.fi=
le-title a:visited {
text-decoration: none;
}
div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div=
.photo-title a:visited {
text-decoration: none;
}
div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
font-family: Verdana;
font-size: 10px;
font-weight: normal;
}
.green {
color: #628c2a;
}
.MsoNormal {
margin: 0 0 0 0;
}
o {
font-size: 0;
}
#photos div {
float: left;
width: 72px;
}
#photos div div {
border: 1px solid #666666;
height: 62px;
overflow: hidden;
width: 62px;
}
#photos div label {
color: #666666;
font-size: 10px;
overflow: hidden;
text-align: center;
white-space: nowrap;
width: 64px;
}
#reco-category {
font-size: 77%;
}
#reco-desc {
font-size: 77%;
}
.replbq {
margin: 4px;
}
#ygrp-actbar div a:first-child {
/* border-right: 0px solid #000;*/
margin-right: 2px;
padding-right: 5px;
}
#ygrp-mlmsg {
font-size: 13px;
font-family: Arial, helvetica,clean, sans-serif;
*font-size: small;
*font: x-small;
}
#ygrp-mlmsg table {
font-size: inherit;
font: 100%;
}
#ygrp-mlmsg select, input, textarea {
font: 99% Arial, Helvetica, clean, sans-serif;
}
#ygrp-mlmsg pre, code {
font:115% monospace;
*font-size:100%;
}
#ygrp-mlmsg * {
line-height: 1.22em;
}
#ygrp-mlmsg #logo {
padding-bottom: 10px;
}
#ygrp-mlmsg a {
color: #1E66AE;
}
#ygrp-msg p a {
font-family: Verdana;
}
#ygrp-msg p#attach-count span {
color: #1E66AE;
font-weight: 700;
}
#ygrp-reco #reco-head {
color: #ff7900;
font-weight: 700;
}
#ygrp-reco {
margin-bottom: 20px;
padding: 0px;
}
#ygrp-sponsor #ov li a {
font-size: 130%;
text-decoration: none;
}
#ygrp-sponsor #ov li {
font-size: 77%;
list-style-type: square;
padding: 6px 0;
}=20
#ygrp-sponsor #ov ul {
margin: 0;
padding: 0 0 0 8px;
}
#ygrp-text {
font-family: Georgia;
}
#ygrp-text p {
margin: 0 0 1em 0;
}
#ygrp-text tt {
font-size: 120%;
}
#ygrp-vital ul li:last-child {
border-right: none !important;=20
}=20
-->
</style>
</head>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</html>
<!-- end group email -->
--000325574d66c22f34049116c50a--