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.
Commit
15f943f0c2f062c676e14fc37381e0f5ec544a9d04b2b9c0dfd64cc8e53f0c5e
Parent
145df5a3e10a7fb…
1 file changed
+15
-7
+15
-7
| --- src/graph.js | ||
| +++ src/graph.js | ||
| @@ -927,10 +927,11 @@ | ||
| 927 | 927 | mSHIFT = 1<<13, |
| 928 | 928 | kFRST = mSHIFT | 78 /* SHIFT+N */, |
| 929 | 929 | kNEXT = 78 /* N */, |
| 930 | 930 | kPREV = 77 /* M */, |
| 931 | 931 | kLAST = mSHIFT | 77 /* SHIFT+M */, |
| 932 | + kTICK = 188 /* , */, | |
| 932 | 933 | kTMLN = 74 /* J */, |
| 933 | 934 | kVIEW = 75 /* K */, |
| 934 | 935 | kDONE = 76 /* L */, |
| 935 | 936 | mod = evt.altKey<<15 | evt.ctrlKey<<14 | evt.shiftKey<<13, |
| 936 | 937 | key = ( evt.which || evt.keyCode ) | mod; |
| @@ -938,10 +939,11 @@ | ||
| 938 | 939 | switch( key ){ |
| 939 | 940 | case kFRST: dx = -2; break; |
| 940 | 941 | case kNEXT: dx = -1; break; |
| 941 | 942 | case kPREV: dx = +1; break; |
| 942 | 943 | case kLAST: dx = +2; break; |
| 944 | + case kTICK: break; | |
| 943 | 945 | case kTMLN: break; |
| 944 | 946 | case kVIEW: break; |
| 945 | 947 | case kDONE: break; |
| 946 | 948 | default: return; |
| 947 | 949 | } |
| @@ -953,17 +955,23 @@ | ||
| 953 | 955 | return; |
| 954 | 956 | } |
| 955 | 957 | document.cookie = 'fossil_timeline_kbnav=1;path=/'; |
| 956 | 958 | var id = focusCacheGet(); |
| 957 | 959 | 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 | + } | |
| 965 | 973 | } |
| 966 | 974 | } |
| 967 | 975 | } |
| 968 | 976 | else if ( id && dx!=0 ){ |
| 969 | 977 | id = focusNextId(id,dx); |
| 970 | 978 |
| --- 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 |