Jesse Duffield
003e45d2f5
allow creating branches off of remote branches
2020-05-19 09:57:37 +10:00
Jesse Duffield
04e93317b8
fix https://github.com/jesseduffield/lazygit/issues/848
2020-05-19 09:57:37 +10:00
Jesse Duffield
f8dedb710b
additional password prompt regex
2020-05-15 22:18:07 +10:00
Jesse Duffield
1c259f69f6
check if user has configured to push to current by default
2020-05-15 21:41:23 +10:00
Jesse Duffield
913f17ee3e
prevent flicker from bolding background of selected line
2020-05-15 21:12:12 +10:00
Jesse Duffield
267730bc00
standardise how we handle background colours
2020-05-13 21:24:25 +10:00
Gary Yendell
7ed8ee160d
Add option to split patch into a new commit
...
Add GetHeadCommitMessage to read the subject of the HEAD commit
Create PullPatchIntoNewCommit based heavily on PullPatchIntoIndex to
split the current patch from its commit and apply it in a separate
commit immediately after.
WIP to Squash - Fill format string with format string
WIP
2020-05-09 11:59:37 +10:00
Tyler Davis
b5404c6159
fix issue #640 add catCmd and OS-specific values
...
Add a catCmd to the Platform struct and set the value to "cat" for
non-windows builds and "type" for windows builds.
2020-04-27 19:14:18 +10:00
Jesse Duffield
cc13ae252a
totally screwed up the last commit
2020-04-22 11:21:20 +10:00
Jesse Duffield
b97f844a3e
handle comments in todo files
2020-04-22 11:15:41 +10:00
Glenn Vriesman
1d6eb015c1
fix: fixed yaml typo
...
Signed-off-by: Glenn Vriesman <glenn.vriesman@gmail.com>
2020-04-22 08:52:08 +10:00
Jesse Duffield
07a8ae8c3e
add handler for searching in menu
2020-04-21 19:28:31 +10:00
Jesse Duffield
f05a5e531e
warnings for stash actions
2020-04-20 18:57:08 +10:00
Kristijan Husak
68586ec49a
Handle regex compilation errors and show them to the user.
2020-04-20 18:47:50 +10:00
Kristijan Husak
6cf75af0af
Add option to set predefined commit message prefix. Fixes #760 .
2020-04-20 18:47:50 +10:00
Jesse Duffield
304607ae5d
support configurable merge args
2020-04-20 18:40:49 +10:00
Jesse Duffield
e9f28855a2
add bugfix git flow option
2020-04-20 18:31:13 +10:00
Glenn Vriesman
66d7d5f312
fix: fixed gpg breaking terminal
...
Signed-off-by: Glenn Vriesman <glenn.vriesman@gmail.com>
2020-04-20 18:30:57 +10:00
Jesse Duffield
59734f1069
whoops
2020-04-17 09:27:23 +10:00
Jesse Duffield
2974a57943
support copying stuff to clipboard
2020-04-15 10:44:56 +00:00
Jesse Duffield
97d7a8ad0c
add reverse patch option
2020-03-29 21:53:25 +00:00
Jesse Duffield
b89ba365d0
unbold diff info
2020-03-29 18:31:19 +11:00
Jesse Duffield
47ff388549
some more UI logic
2020-03-29 18:26:24 +11:00
Jesse Duffield
647ab9bf0f
better keybinding
2020-03-29 18:26:24 +11:00
Jesse Duffield
76431b4673
simplify things
2020-03-29 18:26:24 +11:00
Jesse Duffield
be0dd29e3a
don't support files until we understand the use case
2020-03-29 18:26:24 +11:00
Jesse Duffield
40fbce91ce
add new diff mode
...
WIP
WIP
WIP
WIP
WIP
WIP
WIP
2020-03-29 18:26:24 +11:00
Jesse Duffield
33d287d2f0
remove old diff mode code
2020-03-29 18:26:24 +11:00
Jesse Duffield
9eb1cbc514
reset main's origin when cycling views
2020-03-29 02:36:01 +00:00
Jesse Duffield
40b173118a
fix conflict race condition
2020-03-29 02:36:01 +00:00
Jesse Duffield
8822c409e2
split reflog commits into ReflogCommits and FilteredReflogCommits
2020-03-29 11:37:29 +11:00
Jesse Duffield
aa750c0819
load reflog commits manually when in filter mode for branches panel
2020-03-29 11:37:29 +11:00
Jesse Duffield
d90d9d7330
reset state on each Run() call
2020-03-29 11:37:29 +11:00
Jesse Duffield
a8db672ffb
refactor gui.go
2020-03-29 11:37:29 +11:00
Jesse Duffield
76b66ae26f
properly reset gui state when restarting or coming back from a subprocess
2020-03-29 11:37:29 +11:00
Jesse Duffield
a2790cfe8e
rename to filtered mode
2020-03-29 11:37:29 +11:00
Jesse Duffield
624ae45ebb
allow scoped mode where the commits/reflog/stash panels are scoped to a file
...
WIP
restrict certain actions in scoped mode
WIP
2020-03-29 11:37:29 +11:00
Jesse Duffield
2756b82f57
fix width of half screen mode
2020-03-29 11:37:29 +11:00
Jesse Duffield
52f41ab0d5
update cheatsheet
2020-03-28 03:16:44 +00:00
Jesse Duffield
fbb767893e
support lazyloading in commits view
2020-03-28 14:02:53 +11:00
Jesse Duffield
229f5ee48c
add keybindings for paging in list panels and jumping to top/bottom
2020-03-28 14:02:53 +11:00
Jesse Duffield
517b7d0283
fix up some things with the patch handling stuff
2020-03-28 13:19:35 +11:00
Jesse Duffield
0c0231c3e8
autostash changes when pulling file into index
2020-03-28 13:19:35 +11:00
Jesse Duffield
a9559a5c87
move working tree state function into git.go
2020-03-28 13:19:35 +11:00
Jesse Duffield
814ee24c8d
better error handling
2020-03-28 11:59:45 +11:00
Jesse Duffield
7876cddf4a
remove dead code
2020-03-28 11:59:45 +11:00
Jesse Duffield
e9051355a1
fix test
2020-03-28 11:59:45 +11:00
Jesse Duffield
29316a528a
better documentation
2020-03-28 11:59:45 +11:00
Jesse Duffield
036b53acf8
in fact we don't need any of these options
2020-03-28 11:59:45 +11:00
Jesse Duffield
919463ff02
actually don't even bother limiting
2020-03-28 11:59:45 +11:00
Jesse Duffield
3f7ec3f3b8
load reflog commits in two stages to speed up startup time
2020-03-28 11:59:45 +11:00
Jesse Duffield
19604214d7
discard old reflog commits when in new context
2020-03-28 11:59:45 +11:00
Jesse Duffield
f7add8d788
smarter refreshing for tags and remotes
2020-03-28 11:59:45 +11:00
Jesse Duffield
d97c230747
stop switching focus to commit files view while staging line by line
2020-03-28 11:59:45 +11:00
Jesse Duffield
906a49049e
smart refreshing files
2020-03-28 11:59:45 +11:00
Jesse Duffield
c1a4bd0482
more smart refreshing
...
WIP
WIP
WIP
WIP
WIP
fix how diff entries are handled
WIP
WIP
WIP
WIP
WIP
WIP
2020-03-28 11:59:45 +11:00
Jesse Duffield
d0336fe16f
better presentation of remotes
2020-03-28 11:59:45 +11:00
Jesse Duffield
61b4bbf74e
clean up signature
2020-03-28 11:59:45 +11:00
Jesse Duffield
384c2e13d7
better refreshing for stash
2020-03-28 11:59:45 +11:00
Jesse Duffield
198d237679
more centralised handling of refreshing
2020-03-28 11:59:45 +11:00
Jesse Duffield
39315ca1e2
use wait groups when refreshing
2020-03-28 11:59:45 +11:00
Jesse Duffield
efb51eee96
more efficient refreshing
2020-03-28 11:59:45 +11:00
Jesse Duffield
fbbd16bd82
use reflogs from state to work out branch recencies
2020-03-28 11:59:45 +11:00
Jesse Duffield
bd2c1eef53
remove redundant fetch of reflog
2020-03-28 11:59:45 +11:00
Jesse Duffield
d1395b15bb
use GIT_EDITOR
2020-03-27 19:26:14 +11:00
Máximo Cuadros
2d8ed5e274
*: update go-git import
2020-03-27 19:06:21 +11:00
Jesse Duffield
95b147079f
allow applying patch directly
2020-03-26 21:44:45 +11:00
Jesse Duffield
83757f1065
limit size of menu panel
2020-03-26 21:44:33 +11:00
Jesse Duffield
f2036b42e5
only load new reflog entries
2020-03-26 21:44:33 +11:00
Jesse Duffield
21b7d41845
relax limit on commit list and reset on branch change
2020-03-26 21:44:33 +11:00
Jesse Duffield
91a404d033
separate commits from cherry pick state
2020-03-26 21:44:33 +11:00
Jesse Duffield
d027cf969c
better handling of current branch name
2020-03-26 20:37:06 +11:00
Jesse Duffield
37acc17cf3
more lenient getting of short shas
2020-03-26 18:30:02 +11:00
Dawid Dziurla
c831ad39c9
pkg: use upstream pty package
2020-03-25 21:26:15 +11:00
Jesse Duffield
bbcc4b7b70
just disallow undo/redo while rebasing because you need more info than just the reflog
2020-03-25 09:39:04 +11:00
Jesse Duffield
45bba0a3c5
ignore redundant actions when undoing and redoing
2020-03-25 09:39:04 +11:00
Jesse Duffield
d105e2690a
vastly improve the logic for undo and redo
2020-03-25 09:39:04 +11:00
Jesse Duffield
32d3e497c3
fix tests
2020-03-25 09:39:04 +11:00
Jesse Duffield
30a5d1b486
move into undoing file
2020-03-25 09:39:04 +11:00
Jesse Duffield
6b3ea56add
refactor undo and redo
2020-03-25 09:39:04 +11:00
Jesse Duffield
c3aefdb98e
stateless undos and redos
2020-03-25 09:39:04 +11:00
Jesse Duffield
094939451d
more explicit env vars
2020-03-25 09:39:04 +11:00
Jesse Duffield
0e23f44b84
support reflog action prefix
2020-03-25 09:39:04 +11:00
Jesse Duffield
daecdd7c2b
redoing
2020-03-25 09:39:04 +11:00
Jesse Duffield
7c8df28d01
add waiting status to checkout ref handler
2020-03-25 09:39:04 +11:00
Jesse Duffield
65917272a2
undoing status
2020-03-25 09:39:04 +11:00
Jesse Duffield
137fd80fdb
note that undo functionality is experimental
2020-03-25 09:39:04 +11:00
Jesse Duffield
98fbc61221
better formatted reflog list
2020-03-25 09:39:04 +11:00
Jesse Duffield
f80d15062b
use reflog undo history pointer
2020-03-25 09:39:04 +11:00
Jesse Duffield
b1b0219f04
autostash changes when hard resetting
2020-03-25 09:39:04 +11:00
Jesse Duffield
b1941c33f7
undo via rebase
2020-03-25 09:39:04 +11:00
Jesse Duffield
5d460e1e5e
add tab keybindings
2020-03-23 23:25:00 +11:00
Jesse Duffield
3d3e0be7bd
more compatible commands
2020-03-23 22:33:17 +11:00
Jesse Duffield
3aab37611a
show status of selected cherry picked commits
2020-03-19 21:42:21 +11:00
Jesse Duffield
8fbcc36331
allow resetting cherry picked commits selection
2020-03-19 21:42:21 +11:00
Jesse Duffield
dadb646252
fix branch building
2020-03-19 12:04:17 +11:00
Jesse Duffield
0227b93409
fix branch parser
2020-03-18 23:26:02 +11:00
Jesse Duffield
b0ec0821d5
fix docs
2020-03-18 22:50:35 +11:00
hitsuji_no_shippo
13a7806cac
add opne menu keybindings in docs
2020-03-18 22:50:35 +11:00
hitsuji_no_shippo
41c76fb748
add close menu keybindings in docs
2020-03-18 22:50:35 +11:00
hitsuji_no_shippo
ac0c3b9f92
fix search keybindings in docs
2020-03-18 22:50:35 +11:00
Jesse Duffield
1be0ff8da7
better upstream tracking and allow renaming a branch
2020-03-18 21:29:06 +11:00
hitsuji_no_shippo
2169b5109f
add search keybings in docs
2020-03-11 19:43:22 +11:00
Jesse Duffield
7df4b736cf
be a bit more lenient
2020-03-09 12:41:41 +11:00
Jesse Duffield
e47ad846c4
big golangci-lint cleanup
2020-03-09 12:23:13 +11:00
Jesse Duffield
19146d61b1
use selected branch as base when creating a new branch
2020-03-08 18:44:15 +11:00
skwerlman
e541b809ce
update tests to match changed command
2020-03-06 09:25:31 +11:00
skwerlman
6ca08c6519
make branches and files non-ambiguous for git-log
...
fixes #694
2020-03-06 09:25:31 +11:00
Jesse Duffield
31e201ca52
allow configuring side panel width
2020-03-04 00:12:23 +11:00
Jesse Duffield
b3522c48d9
refactor
2020-03-04 00:12:23 +11:00
Jesse Duffield
0fc58a7986
fix test
2020-03-04 00:12:23 +11:00
Jesse Duffield
54241d8ab9
more generic way of supporting custom pagers
2020-03-04 00:12:23 +11:00
Jesse Duffield
355f1615ab
supporing custom pagers step 1
2020-03-04 00:12:23 +11:00
William Wagner Moraes Artero
3ce2b9b79a
chore: keeping coverage up :D
2020-03-01 10:57:12 +11:00
William Wagner Moraes Artero
a79182e50d
fix: accidentally escaped %s
2020-03-01 10:57:12 +11:00
William Wagner Moraes Artero
0eb3090ad6
fix: owner groups (GitLab)
2020-03-01 10:57:12 +11:00
William Wagner Moraes Artero
6ea25bd259
feat: flexible service configuration
2020-03-01 10:57:12 +11:00
William Wagner Moraes Artero
fe5f087f9c
feat: configurable services
2020-03-01 10:57:12 +11:00
Jesse Duffield
79299be3b2
better keybindings for patch building mode
2020-02-29 18:48:10 +11:00
Jesse Duffield
4c9b620bd0
better keybindings for staging by line
2020-02-29 18:48:10 +11:00
Jesse Duffield
a7508a5dfd
fix cheatsheet script to support different contexts
2020-02-29 17:46:00 +11:00
David Chen
a9fe0b8000
set --abbrev-commit to return 8-digit hash strings
2020-02-27 18:05:41 +11:00
David Chen
5af7b0235e
fix #680 : unpushed commits still appear to be green instead of red
2020-02-27 18:05:41 +11:00
Corentin Rossignon
bf946200e9
Fix OutOfBound array access when looking for ReflogCommits
...
refs #679
2020-02-27 09:34:40 +11:00
Jesse Duffield
890cc87724
fix bug where commits appeared as green despite not being pushed
2020-02-27 09:33:09 +11:00
Jesse Duffield
8eb0b0f4ca
do not close over variables in a function
2020-02-25 22:09:43 +11:00
Jesse Duffield
e6a8dc0bcf
better logic for checking if we're rebasing
2020-02-25 22:09:43 +11:00
Jesse Duffield
02c497fad6
show file list when diffing commits
2020-02-25 21:38:38 +11:00
Jesse Duffield
d0ab747479
color active frames green by default
2020-02-25 21:27:50 +11:00
Jesse Duffield
f94d0be2c9
refactor the way we render lists
2020-02-25 21:21:07 +11:00
Jesse Duffield
9fd9fd6816
better commit lines in fullscreen mode
2020-02-25 21:21:07 +11:00
Jesse Duffield
8ad01fe32f
refresh commits when adding a tag
2020-02-25 09:10:23 +11:00
Jesse Duffield
fdb543fa7d
add half and fullscreen modes
2020-02-25 08:45:30 +11:00
Jesse Duffield
52b5a6410c
show item counts in frames
2020-02-25 07:19:46 +11:00
Jesse Duffield
0034cfef5c
show tags in commits panel
2020-02-24 23:13:54 +11:00
Jesse Duffield
78b62be96f
better handling of clearing the search
2020-02-24 22:18:04 +11:00
Jesse Duffield
1f5ccab1ce
eagerload commits when searching
2020-02-24 22:18:04 +11:00
Jesse Duffield
46be280c92
support searching in side panels
...
For now we're just doing side panels, because it will take more work
to support this in the various main panel contexts
2020-02-24 22:18:04 +11:00
Jesse Duffield
2a5763a771
switch custom command keybinding to ':'
2020-02-24 22:04:39 +11:00
Jesse Duffield
370cec098b
show diff stat
2020-02-24 09:20:50 +11:00
Dawid Dziurla
49a2f0191f
tasks: don't use a function that requires Go 1.12
2020-02-24 09:09:27 +11:00
Jesse Duffield
fabdda0492
allow customizing background color in staging mode
2020-02-23 18:37:19 +11:00
Glenn Vriesman
6fc3290a05
Reflog: Use 20 sha digits instead of 7
...
Signed-off-by: Glenn Vriesman <glenn.vriesman@gmail.com>
2020-02-20 08:34:01 +11:00
Jesse Duffield
66e6369c28
allow fastforwarding the current branch
2020-02-18 23:07:38 +11:00
Jesse Duffield
0f0da9c32a
fix wording
2020-02-16 09:57:49 +11:00
Jesse Duffield
0a69c1a02d
add reset to reflog commit menu
2020-02-16 09:57:49 +11:00
Jesse Duffield
feaf98bd01
add reset to upstream option on files panel
2020-02-16 09:57:49 +11:00
Jesse Duffield
0fe9c15ce8
add mixed option to HEAD resetting, remove @{upstream}
2020-02-16 09:57:49 +11:00
Jesse Duffield
f528e12c83
allow resetting to tag
2020-02-16 09:57:49 +11:00
Jesse Duffield
8ca9f93ccf
allow resetting to remote branch
2020-02-16 09:57:49 +11:00
Jesse Duffield
73d8064837
allow resetting to branch
2020-02-16 09:57:49 +11:00
Jesse Duffield
5b1f60b7eb
refactor create reset menu logic
2020-02-16 09:57:49 +11:00
Jesse Duffield
2e1344f611
fix specs
2020-02-15 08:47:36 +11:00
Jesse Duffield
5b9996b16f
remove old createMenu function
2020-02-15 08:47:36 +11:00
Jesse Duffield
6fdc1791e4
refactor stash options menu
2020-02-15 08:47:36 +11:00
Jesse Duffield
fd4f37b5c3
refactor git flow menu
2020-02-15 08:47:36 +11:00
Jesse Duffield
d76e8887e5
refactor patch options menu panel
2020-02-15 08:47:36 +11:00
Jesse Duffield
eb9134685a
refactor rebase menu panel
2020-02-15 08:47:36 +11:00
Jesse Duffield
d929b84786
refactor recent repos menu panel
2020-02-15 08:47:36 +11:00
Jesse Duffield
8ef3297b11
refactor reflog reset options panel
2020-02-15 08:47:36 +11:00
Jesse Duffield
27c7aeb117
refactor workspace reset options panel
2020-02-15 08:47:36 +11:00
Jesse Duffield
c9714600e8
refactor commit reset menu
2020-02-15 08:47:36 +11:00
Jesse Duffield
665fdded14
continue refactor of menu panel
2020-02-15 08:47:36 +11:00
Jesse Duffield
814a0ea36f
begin refactor of menu panel
2020-02-15 08:47:36 +11:00
Jesse Duffield
71e018a3dd
get whole commit SHA from rebase commits
2020-02-13 18:10:14 +11:00
Jesse Duffield
efb26f8b60
refresh current branch graph when side panels refresh
2020-02-10 19:05:55 +11:00
Glenn Vriesman
d9eb6e2682
Fixed tests
...
Signed-off-by: Glenn Vriesman <glenn.vriesman@gmail.com>
2020-02-09 23:47:22 +11:00
Glenn Vriesman
b74107f2ba
Use 8 instead of 7 digit long sha
...
Signed-off-by: Glenn Vriesman <glenn.vriesman@gmail.com>
2020-02-09 23:47:22 +11:00
Glenn Vriesman
0cd91a10c6
Increase internal sha size
...
This does not change the sha size that is displayed to the user
Signed-off-by: Glenn Vriesman <glenn.vriesman@gmail.com>
2020-02-09 23:47:22 +11:00
Jesse Duffield
f062e1dcda
ignore carriage returns
2020-02-09 16:43:02 +11:00
Glenn Vriesman
9f5397a2d4
Moved function to git.go
...
Signed-off-by: Glenn Vriesman <glenn.vriesman@gmail.com>
2020-02-06 23:19:29 +11:00
Glenn Vriesman
0164abbd4a
Added feature to ignore tracked files
...
Signed-off-by: Glenn Vriesman <glenn.vriesman@gmail.com>
2020-02-06 23:19:29 +11:00
Glenn Vriesman
047c3cf880
Added more keybinds
...
* Commit with editor
* Commit without hook
Signed-off-by: Glenn Vriesman <glenn.vriesman@gmail.com>
2020-02-04 23:21:51 +11:00
Glenn Vriesman
47d7d87c82
Added commit keybinding to staging views
2020-02-04 23:21:51 +11:00
Glenn Vriesman
5f53d50492
Check cached when showing new file diffs
...
Signed-off-by: Glenn Vriesman <glenn.vriesman@gmail.com>
2020-02-04 08:41:41 +11:00
Jesse Duffield
5f71f87496
correctly compare new main height to previous
2020-02-03 21:50:31 +11:00
Chris Taylor
c6cb90e8ca
verify that VISUAL,EDITOR,LGCC envvars are set for non-interactive commands
2020-02-02 11:29:22 +11:00
Chris Taylor
fb156bcaac
add a helper to search a list for a pattern
2020-02-02 11:29:22 +11:00
Chris Taylor
75ba2196ba
perpetuate this style of dependency injection
2020-02-02 11:29:22 +11:00
Chris Taylor
4cb50b15e4
make amend more non-interactive
2020-02-02 11:29:22 +11:00
Jesse Duffield
df050472a1
more ticker improvements
2020-02-02 11:26:24 +11:00
Jesse Duffield
434582b5f5
explicitly tell gocui when to start animating the loader
2020-02-01 00:23:22 +11:00
Jesse Duffield
cf6be928a3
only rerender app status when we need to
2020-02-01 00:23:22 +11:00
Jesse Duffield
c907c55144
close more things when switching repos or to a subprocess
2020-01-31 20:53:08 +11:00
Jesse Duffield
64782a433e
fix segfault on line by line panel
...
The state object is sometimes undefined in the onclick method of the
line by line panel. Because we set it to nil in a bunch of places,
I've decided to just change the main context to 'normal' before setting
it to nil anywhere. That way the keybindings for the line by line panel
won't get executed and we won't get a segfault.
2020-01-31 08:27:49 +11:00
Jesse Duffield
44edb49a6e
handle files that were deleted downstream but modified upstream
2020-01-29 19:07:47 +11:00
Jesse Duffield
1a6d269063
split main view vertically
...
When staging lines (or doing anything that requires the main view to split into two)
we want to split vertically if there's not much width available in the window.
If there is enough width we will split horizontally. The aim here is to allow for
sufficient room in the side panel. We might need to tweak this or make it configurable
but I think it's set to a pretty reasonable default i.e. switching to split vertically
when the window width falls under 220
2020-01-29 18:44:50 +11:00
Jesse Duffield
b64953ebdb
safely unstage lines
2020-01-29 18:19:11 +11:00
Jesse Duffield
deaa2bcb15
remove rollbar
2020-01-29 17:29:36 +11:00
Jesse Duffield
c166c57c5d
make use of branch config when pushing/pulling
2020-01-29 15:19:19 +11:00
Jesse Duffield
6b77e4ee4a
fix comment
2020-01-28 22:18:55 +11:00
Jesse Duffield
e5534f060d
use reflog timestamps rather than commit timestamps to show commit recency
2020-01-28 22:12:48 +11:00
Jamie Brynes
810adab957
handle case where file watcher is disabled
2020-01-16 00:30:53 +00:00
Jesse Duffield
83a3c9fc8d
handle when fsnotify doesn't work
2020-01-12 14:46:23 +11:00
Jesse Duffield
5e95019b3f
Missed a spot with this new string task thing
...
The issue here was that we were using a string task
but expecting to be able to set the origin straight after
to point at the conflict, but because it's async it was
actually resetting the origin to 0 after a little bit.
The proper solution here is maybe to add a flag to that thing
asking whether you want to reset main's origin. But I'm
too lazy to do that right now so instead I'm just using
setViewContent. That will probably cause issues in the future.
2020-01-12 14:43:17 +11:00
Jesse Duffield
83a895a463
reset origin when clicking on list item
2020-01-12 13:55:14 +11:00
Jesse Duffield
77a82e9d51
use view line height to see if you should stop scrolling
2020-01-12 13:55:14 +11:00
Jesse Duffield
bd79c2e8dc
keep track of current view when pushing
2020-01-12 11:17:20 +11:00
Jesse Duffield
23bcc19180
allow fast flicking through any list panel
...
Up till now our approach to rendering things like file diffs, branch logs, and
commit patches, has been to run a command on the command line, wait for it to
complete, take its output as a string, and then write that string to the main
view (or secondary view e.g. when showing both staged and unstaged changes of a
file).
This has caused various issues. For once, if you are flicking through a list of
files and an untracked file is particularly large, not only will this require
lazygit to load that whole file into memory (or more accurately it's equally
large diff), it also will slow down the UI thread while loading that file, and
if the user continued down the list, the original command might eventually
resolve and replace whatever the diff is for the newly selected file.
Following what we've done in lazydocker, I've added a tasks package for when you
need something done but you want it to cancel as soon as something newer comes
up. Given this typically involves running a command to display to a view, I've
added a viewBufferManagerMap struct to the Gui struct which allows you to define
these tasks on a per-view basis.
viewBufferManagers can run files and directly write the output to their view,
meaning we no longer need to use so much memory.
In the tasks package there is a helper method called NewCmdTask which takes a
command, an initial amount of lines to read, and then runs that command, reads
that number of lines, and allows for a readLines channel to tell it to read more
lines. We read more lines when we scroll or resize the window.
There is an adapter for the tasks package in a file called tasks_adapter which
wraps the functions from the tasks package in gui-specific stuff like clearing
the main view before starting the next task that wants to write to the main
view.
I've removed some small features as part of this work, namely the little headers
that were at the top of the main view for some situations. For example, we no
longer show the upstream of a selected branch. I want to re-introduce this in
the future, but I didn't want to make this tasks system too complicated, and in
order to facilitate a header section in the main view we'd need to have a task
that gets the upstream for the current branch, writes it to the header, then
tells another task to write the branch log to the main view, but without
clearing inbetween. So it would get messy. I'm thinking instead of having a
separate 'header' view atop the main view to render that kind of thing (which
can happen in another PR)
I've also simplified the 'git show' to just call 'git show' and not do anything
fancy when it comes to merge commits.
I considered using this tasks approach whenever we write to a view. The only
thing is that the renderString method currently resets the origin of a view and
I don't want to lose that. So I've left some in there that I consider harmless,
but we should probably be just using tasks now for all rendering, even if it's
just strings we can instantly make.
2020-01-12 11:17:20 +11:00
Jesse Duffield
282f08df36
lazyload commits
2020-01-12 10:10:56 +11:00