Fossil SCM

Shortcut "," (comma) to tick/untick the node of the currently focused entry. This has the same effect as mouse clicks, i.e. as soon as two nodes are ticked, the corresponding diff page is opened.

florian 2022-08-04 03:45 timeline-keyboard-navigation
Commit 15f943f0c2f062c676e14fc37381e0f5ec544a9d04b2b9c0dfd64cc8e53f0c5e
1 file changed +15 -7
+15 -7
--- src/graph.js
+++ src/graph.js
@@ -927,10 +927,11 @@
927927
mSHIFT = 1<<13,
928928
kFRST = mSHIFT | 78 /* SHIFT+N */,
929929
kNEXT = 78 /* N */,
930930
kPREV = 77 /* M */,
931931
kLAST = mSHIFT | 77 /* SHIFT+M */,
932
+ kTICK = 188 /* , */,
932933
kTMLN = 74 /* J */,
933934
kVIEW = 75 /* K */,
934935
kDONE = 76 /* L */,
935936
mod = evt.altKey<<15 | evt.ctrlKey<<14 | evt.shiftKey<<13,
936937
key = ( evt.which || evt.keyCode ) | mod;
@@ -938,10 +939,11 @@
938939
switch( key ){
939940
case kFRST: dx = -2; break;
940941
case kNEXT: dx = -1; break;
941942
case kPREV: dx = +1; break;
942943
case kLAST: dx = +2; break;
944
+ case kTICK: break;
943945
case kTMLN: break;
944946
case kVIEW: break;
945947
case kDONE: break;
946948
default: return;
947949
}
@@ -953,17 +955,23 @@
953955
return;
954956
}
955957
document.cookie = 'fossil_timeline_kbnav=1;path=/';
956958
var id = focusCacheGet();
957959
if( id && dx==0 ){
958
- var ri = timelineGetRowInfo(id);
959
- if( ri ){
960
- var page = key==kVIEW ? '/info/' : '/timeline?c=';
961
- var href = ri.baseurl + page + encodeURIComponent(ri.hash);
962
- if( href!=location.href.slice(-href.length) ){
963
- location.href = href;
964
- return;
960
+ if( key==kTICK ){
961
+ var gn = document.getElementById('tln'+id.slice(1));
962
+ if( gn ) gn.click();
963
+ }
964
+ else/* if( key==kTMLN || key==kVIEW )*/{
965
+ var ri = timelineGetRowInfo(id);
966
+ if( ri ){
967
+ var page = key==kVIEW ? '/info/' : '/timeline?c=';
968
+ var href = ri.baseurl + page + encodeURIComponent(ri.hash);
969
+ if( href!=location.href.slice(-href.length) ){
970
+ location.href = href;
971
+ return;
972
+ }
965973
}
966974
}
967975
}
968976
else if ( id && dx!=0 ){
969977
id = focusNextId(id,dx);
970978
--- src/graph.js
+++ src/graph.js
@@ -927,10 +927,11 @@
927 mSHIFT = 1<<13,
928 kFRST = mSHIFT | 78 /* SHIFT+N */,
929 kNEXT = 78 /* N */,
930 kPREV = 77 /* M */,
931 kLAST = mSHIFT | 77 /* SHIFT+M */,
 
932 kTMLN = 74 /* J */,
933 kVIEW = 75 /* K */,
934 kDONE = 76 /* L */,
935 mod = evt.altKey<<15 | evt.ctrlKey<<14 | evt.shiftKey<<13,
936 key = ( evt.which || evt.keyCode ) | mod;
@@ -938,10 +939,11 @@
938 switch( key ){
939 case kFRST: dx = -2; break;
940 case kNEXT: dx = -1; break;
941 case kPREV: dx = +1; break;
942 case kLAST: dx = +2; break;
 
943 case kTMLN: break;
944 case kVIEW: break;
945 case kDONE: break;
946 default: return;
947 }
@@ -953,17 +955,23 @@
953 return;
954 }
955 document.cookie = 'fossil_timeline_kbnav=1;path=/';
956 var id = focusCacheGet();
957 if( id && dx==0 ){
958 var ri = timelineGetRowInfo(id);
959 if( ri ){
960 var page = key==kVIEW ? '/info/' : '/timeline?c=';
961 var href = ri.baseurl + page + encodeURIComponent(ri.hash);
962 if( href!=location.href.slice(-href.length) ){
963 location.href = href;
964 return;
 
 
 
 
 
 
965 }
966 }
967 }
968 else if ( id && dx!=0 ){
969 id = focusNextId(id,dx);
970
--- src/graph.js
+++ src/graph.js
@@ -927,10 +927,11 @@
927 mSHIFT = 1<<13,
928 kFRST = mSHIFT | 78 /* SHIFT+N */,
929 kNEXT = 78 /* N */,
930 kPREV = 77 /* M */,
931 kLAST = mSHIFT | 77 /* SHIFT+M */,
932 kTICK = 188 /* , */,
933 kTMLN = 74 /* J */,
934 kVIEW = 75 /* K */,
935 kDONE = 76 /* L */,
936 mod = evt.altKey<<15 | evt.ctrlKey<<14 | evt.shiftKey<<13,
937 key = ( evt.which || evt.keyCode ) | mod;
@@ -938,10 +939,11 @@
939 switch( key ){
940 case kFRST: dx = -2; break;
941 case kNEXT: dx = -1; break;
942 case kPREV: dx = +1; break;
943 case kLAST: dx = +2; break;
944 case kTICK: break;
945 case kTMLN: break;
946 case kVIEW: break;
947 case kDONE: break;
948 default: return;
949 }
@@ -953,17 +955,23 @@
955 return;
956 }
957 document.cookie = 'fossil_timeline_kbnav=1;path=/';
958 var id = focusCacheGet();
959 if( id && dx==0 ){
960 if( key==kTICK ){
961 var gn = document.getElementById('tln'+id.slice(1));
962 if( gn ) gn.click();
963 }
964 else/* if( key==kTMLN || key==kVIEW )*/{
965 var ri = timelineGetRowInfo(id);
966 if( ri ){
967 var page = key==kVIEW ? '/info/' : '/timeline?c=';
968 var href = ri.baseurl + page + encodeURIComponent(ri.hash);
969 if( href!=location.href.slice(-href.length) ){
970 location.href = href;
971 return;
972 }
973 }
974 }
975 }
976 else if ( id && dx!=0 ){
977 id = focusNextId(id,dx);
978

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button