Jesse Duffield
4198bbae6c
ensure there is always a current context
2020-08-23 14:29:18 +10:00
Jesse Duffield
ade54b38c1
cleanup
2020-08-23 14:29:18 +10:00
Jesse Duffield
0dd2c869a8
minor refactor
2020-08-23 14:29:18 +10:00
Jesse Duffield
ed85ea69bd
cleanup of list context file
2020-08-23 14:29:18 +10:00
Jesse Duffield
953298de74
remove dead code
2020-08-23 14:29:18 +10:00
Jesse Duffield
628404e114
use actual keys
2020-08-23 14:29:18 +10:00
Jesse Duffield
5638a40007
carry more mode state across after returning from subprocess
2020-08-23 14:29:18 +10:00
Jesse Duffield
d6005dc0eb
more accurate comment
2020-08-23 14:29:18 +10:00
Jesse Duffield
b3a7acbdad
more standardising modes
2020-08-23 14:29:18 +10:00
Jesse Duffield
88ae550b93
unused method
2020-08-23 14:29:18 +10:00
Jesse Duffield
2c3f5be093
comment these things out because we're not using them yet
2020-08-23 14:29:18 +10:00
Jesse Duffield
148f601bcb
cleanup now that we're always using the same diff command
2020-08-23 14:29:18 +10:00
Jesse Duffield
43d891b8d6
support creating patches from files in diff mode
2020-08-23 14:29:18 +10:00
Jesse Duffield
2eee079d3a
minor rename
2020-08-23 14:29:18 +10:00
Jesse Duffield
8be970e688
stop loading all the diffs at once now that we load them as we go
2020-08-23 14:29:18 +10:00
Jesse Duffield
12bf851c7d
faster patch manager
2020-08-23 14:29:18 +10:00
Jesse Duffield
c837c54c39
handle diffing and filtering by file in commit files view
2020-08-23 14:29:18 +10:00
Jesse Duffield
5874529f43
deal with the fact that a nil wrapped in an interface is not equal to nil
2020-08-23 14:29:18 +10:00
Jesse Duffield
e290710f67
support drilling down into the files of a diff
2020-08-23 14:29:18 +10:00
Jesse Duffield
438abd6003
centralise code for copying to clipboard
2020-08-23 14:29:18 +10:00
Jesse Duffield
442f6cd854
more cherry picking stuff, mostly around the reflog
2020-08-23 14:29:18 +10:00
Jesse Duffield
c2b154acad
better handling of our different modes and also cherry picking
2020-08-23 14:29:18 +10:00
Jesse Duffield
fbd61fcd17
refactor how we handle different modes
2020-08-23 14:29:18 +10:00
Jesse Duffield
b1529f19ad
more cherry picking code into its own file
2020-08-23 14:29:18 +10:00
Jesse Duffield
134566ed49
move into more appropriate file
2020-08-23 14:29:18 +10:00
Jesse Duffield
8da93fd762
add description field to ListItem interface
2020-08-23 14:29:18 +10:00
Jesse Duffield
63209ef71e
try allowing creating branches off the stash too
2020-08-23 14:29:18 +10:00
Jesse Duffield
f63ec38aae
genericise creating new branches off things
2020-08-23 14:29:18 +10:00
Jesse Duffield
f858c8e750
rename to make way for a generic function name
2020-08-23 14:29:18 +10:00
Jesse Duffield
26f80087dd
when toggling files reset patch manager if patch ends up empty
2020-08-23 14:29:18 +10:00
Jesse Duffield
0ac402792b
allow getting the current item generically
2020-08-23 14:29:18 +10:00
Jesse Duffield
974c6510b8
add sub commit context
2020-08-23 14:29:18 +10:00
Jesse Duffield
41df63cdc4
show when building patch
2020-08-23 14:29:18 +10:00
Jesse Duffield
4080e9b501
only return focus if we already have it
2020-08-23 14:29:18 +10:00
Jesse Duffield
53da858c06
escape patch building mode on hitting escape at the top level
2020-08-23 14:29:18 +10:00
Jesse Duffield
50c9ae863a
remove sdump
2020-08-23 14:29:18 +10:00
Jesse Duffield
ce20d1b482
remove clipboard option for now because we need a better way of doing it
2020-08-23 14:29:18 +10:00
Jesse Duffield
fcf916d138
don't panic
2020-08-23 14:29:18 +10:00
Jesse Duffield
f3c87bde88
more
2020-08-23 14:29:18 +10:00
Jesse Duffield
3f7136fc7d
missed a spot
2020-08-23 14:29:18 +10:00
Jesse Duffield
59f5f5c1af
refactor
2020-08-23 14:29:18 +10:00
Jesse Duffield
1956301b1c
better menu item name
2020-08-23 14:29:18 +10:00
Jesse Duffield
1fd0f31682
only show rebasey commands on a local commit when patch building
2020-08-23 14:29:18 +10:00
Jesse Duffield
e6a1bd6566
generalise patch building stuff
2020-08-23 14:29:18 +10:00
Jesse Duffield
609f3f4bfa
rename Sha to parent now that we're also considering stash entries
2020-08-23 14:29:18 +10:00
Jesse Duffield
9b42cd2214
slightly better
2020-08-23 14:29:18 +10:00
Jesse Duffield
2d90e1e8ee
commit files kind of generalised
2020-08-23 14:29:18 +10:00
Jesse Duffield
ddf25e14af
allowing commit files to be viewed in reflog as well
2020-08-23 14:29:18 +10:00
Jesse Duffield
48f1adad49
stop logging stack
2020-08-23 14:29:18 +10:00
Jesse Duffield
379d37a255
remove unnecessary function
2020-08-23 14:29:18 +10:00
Jesse Duffield
a59ac064d2
statically define context keys
2020-08-23 14:29:18 +10:00
Jesse Duffield
433d54fcec
WIP constants for context keys
2020-08-23 14:29:18 +10:00
Jesse Duffield
146722beb8
rename to SelectedLineIdx
2020-08-23 14:29:18 +10:00
Jesse Duffield
eb5e54e9fd
use interface for panel state rather than pointer
2020-08-23 14:29:18 +10:00
Jesse Duffield
99707a527d
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
9ee7793782
remove comment
2020-08-23 14:29:18 +10:00
Jesse Duffield
bc410d8e4a
use camelCase
2020-08-23 14:29:18 +10:00
Jesse Duffield
7561f5aa32
some more standardisation for diffing
2020-08-23 14:29:18 +10:00
Jesse Duffield
2855b5b4d5
standardise diffmode
2020-08-23 14:29:18 +10:00
Jesse Duffield
419cb9feb8
more standardisation
2020-08-23 14:29:18 +10:00
Jesse Duffield
dbf6bb5f27
some more things
2020-08-23 14:29:18 +10:00
Jesse Duffield
f601108c5d
update naming to refer to context
2020-08-23 14:29:18 +10:00
Jesse Duffield
b77abdc5e1
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
2fac2f9f1f
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
e4beaf4de9
more stuff
2020-08-23 14:29:18 +10:00
Jesse Duffield
d4f134c6c7
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
7ebed76d16
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
2b812b01e9
more standardisation of rendering
2020-08-23 14:29:18 +10:00
Jesse Duffield
2f5d5034db
good progress
2020-08-23 14:29:18 +10:00
Jesse Duffield
a32947e7a7
prepare for OnRender prop
2020-08-23 14:29:18 +10:00
Jesse Duffield
2fdadd383a
introduce new approach to handling tab states
2020-08-23 14:29:18 +10:00
Jesse Duffield
9a2dc3fe15
stop crash due to context stack not being initialized
2020-08-23 14:29:18 +10:00
Jesse Duffield
f0c3d3fc4d
centralise setting of main views context
2020-08-23 14:29:18 +10:00
Jesse Duffield
2488e0044d
concurrent-safe handling of context state
2020-08-23 14:29:18 +10:00
Jesse Duffield
9c866fd49c
more standardisation
2020-08-23 14:29:18 +10:00
Jesse Duffield
6c270b6e26
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
ae1c4536e6
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
f5b22d94d9
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
3c87ff4eff
WIP: standardising how we render to main
2020-08-23 14:29:18 +10:00
Jesse Duffield
0f7b2c45d7
centralise split main panel code
2020-08-23 14:29:18 +10:00
Jesse Duffield
a12d18146c
better logic for taking focus away from popup panels
2020-08-23 14:29:18 +10:00
Jesse Duffield
119d5be1a4
move into list context file
2020-08-23 14:29:18 +10:00
Jesse Duffield
fcdc0174d9
rename context file
2020-08-23 14:29:18 +10:00
Jesse Duffield
4f4df8f9cc
move context specific keybindings into context file
2020-08-23 14:29:18 +10:00
Jesse Duffield
c730271e09
minor update
2020-08-23 14:29:18 +10:00
Jesse Duffield
ac0eedda91
lots more stuff
2020-08-23 14:29:18 +10:00
Jesse Duffield
e87635295a
dont check for error when sending view to bottom
2020-08-23 14:29:18 +10:00
Jesse Duffield
62a662054b
hide view if not specified in dimensions object
2020-08-23 14:29:18 +10:00
Jesse Duffield
dc183c0d82
no need to set views on top anymore
2020-08-23 14:29:18 +10:00
Jesse Duffield
08e039bea9
return nil when no file selected
2020-08-23 14:29:18 +10:00
Jesse Duffield
88d329c52a
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
fd8a455aff
small things
...
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
ed4574bda9
standardise getting selected item
2020-08-23 14:29:18 +10:00
Jesse Duffield
c9ae54a8c8
remove previous view
2020-08-23 14:29:18 +10:00
Jesse Duffield
6fb83b740b
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
7f89113245
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
0ea0c48631
WIP
2020-08-23 14:29:18 +10:00
Jesse Duffield
cec4cb48cb
centralise some list view code
2020-08-23 14:29:18 +10:00
Jesse Duffield
1716de3b59
remove space as keybinding for confirmation panel
2020-08-17 20:30:10 +10:00
Jesse Duffield
44d8b3e8f3
allow overriding default confirm/escape keybindings
2020-08-17 18:22:57 +10:00
Jesse Duffield
4f4bb40ea6
support opening lazygit outside a git directory
2020-08-16 22:59:58 +10:00
Jesse Duffield
db826b3c87
add keybinding to create new branch off of commit
...
retain focus in commits panel
surface prompt errors
better description
2020-08-16 22:24:54 +10:00
Jesse Duffield
53f06f6a4e
prefill commit reword editor
2020-08-16 20:37:24 +10:00
Jesse Duffield
c8add47fe7
move cursor to right when using auto prefix
2020-08-16 18:44:39 +10:00
Jesse Duffield
28cd827cea
better popups
2020-08-16 09:07:54 +10:00
Jesse Duffield
ffda2839e0
remove anonymous reporting popup cos we dont do it anymore anyway
2020-08-16 09:07:54 +10:00
Jesse Duffield
28208e8364
refactor list view
2020-08-15 18:01:43 +10:00
Jesse Duffield
9b7a6934b3
more removing of g
2020-08-15 18:01:43 +10:00
Jesse Duffield
15229bbdab
more removing of g and v
2020-08-15 18:01:43 +10:00
Jesse Duffield
63e6eea9ec
files view
2020-08-15 18:01:43 +10:00
Jesse Duffield
50d5b9e8e7
status view
2020-08-15 18:01:43 +10:00
Jesse Duffield
cc872b0444
menu view
2020-08-15 18:01:43 +10:00
Jesse Duffield
17b84e09c0
fix remote branches select sig
2020-08-15 18:01:43 +10:00
Jesse Duffield
43f8bae267
fix remotes select sig
2020-08-15 18:01:43 +10:00
Jesse Duffield
b0fe963f8a
fix branches select sig
2020-08-15 18:01:43 +10:00
Jesse Duffield
0822a9296c
rename
2020-08-15 18:01:43 +10:00
Jesse Duffield
d9fa02c53b
clean up interface for popup panels
2020-08-15 18:01:43 +10:00
Jesse Duffield
c44ee71ad4
update cheatsheet
2020-08-15 11:41:37 +10:00
Jesse Duffield
826d1660c9
move patch stuff into its own package
2020-08-15 11:41:37 +10:00
Jesse Duffield
291a8e4de0
allow opening files on the selected line in the staging panel
2020-08-15 11:41:37 +10:00
Jesse Duffield
f02ccca0e0
add specs to boxlayout package
2020-08-15 09:04:40 +10:00
Jesse Duffield
1e12a60b34
move box layout stuff into its own package
2020-08-15 09:04:40 +10:00
Jesse Duffield
8430b04492
allow configurable main panel split
2020-08-13 21:50:23 +10:00
Jesse Duffield
35b72420ad
support accordian mode i.e. expanding focused side panels
2020-08-13 21:50:23 +10:00
Jesse Duffield
28ba142fd6
set minimum confirmation box width
2020-08-13 21:50:23 +10:00
Jesse Duffield
b39bcd5c61
more lenient for switching into portrait mode
2020-08-13 21:50:23 +10:00
Jesse Duffield
1fd35f3824
centralise logic for information section
...
WIP
2020-08-13 21:50:23 +10:00
Jesse Duffield
e73937c2bd
more work on new layout functionality
2020-08-13 21:50:23 +10:00
Jesse Duffield
b51ad4fcea
softcode cyclable views
2020-08-13 21:50:23 +10:00
Jesse Duffield
d1a7c7283f
some more changes
2020-08-13 21:50:23 +10:00
Jesse Duffield
b641ecdc74
move some things around
2020-08-13 21:50:23 +10:00
Jesse Duffield
13f567ff4c
add portrait mode for when the window is really tall
2020-08-13 21:50:23 +10:00
Jesse Duffield
771d4b5811
refactor how we handle layouts
2020-08-13 21:50:23 +10:00
Jesse Duffield
3c944e0351
support force push after failure
2020-08-12 21:11:24 +10:00
Jesse Duffield
e26af258d6
allow rebasing onto remote branch
2020-08-12 20:58:34 +10:00
Jesse Duffield
76e5ec6d45
immediately quit when pressing q in diff or filter mode
2020-08-12 20:44:29 +10:00
Jesse Duffield
27cd12e2d9
accept umlaut keybindings
2020-08-12 20:07:56 +10:00
Jesse Duffield
bfaf1c4f70
use remote prefixed branch name when merging remote branch
2020-08-12 20:07:46 +10:00
Jesse Duffield
2d18d089ce
allow entering a password when fast forwarding another branch
2020-08-12 18:47:16 +10:00
Jesse Duffield
401f291c3b
lowercase function name
2020-08-12 18:47:16 +10:00
Jesse Duffield
bea2ae5ff5
stop pulling in general
2020-08-12 18:47:16 +10:00
Jesse Duffield
f49e4946f2
minor refactor
2020-08-12 18:47:16 +10:00
Jesse Duffield
fcd5aea04e
support multiple modes of git pull
2020-08-12 18:47:16 +10:00
Jesse Duffield
1c0da2967c
update naming
2020-08-12 18:47:16 +10:00
Jesse Duffield
1b78a42b80
pass callback directly
2020-08-12 18:47:16 +10:00
Jesse Duffield
79e73d2eff
minor cleanup
...
WIP
2020-08-12 18:47:16 +10:00
Jesse Duffield
660cc2f3d1
follow cursor when staging and unstaging a file rename
2020-08-07 18:59:56 +10:00
Jesse Duffield
469ac116ef
allow renames to be discarded
2020-08-07 18:01:26 +10:00
Axel Navarro
d49e75bd3e
Add tab keybinding in commit message
2020-07-26 16:28:01 +10:00
Jesse Duffield
f4718a9047
allow editing commit files
2020-07-21 18:24:39 +10:00
Jesse Duffield
845c80721f
Decouple escaping from quitting
...
When a user is not entering text into a prompt, the 'q' key should immediately
quit the application. On the other hand, the 'esc' key should cancel/close/go-back
to the previous context.
If we're at the surface level (nothing to cancel/close) and the user hits the
escape key, the default behaviour is to close the app, however we now have a
`quitOnTopLevelReturn` config key to override this.
I actually think from the beginning we should have made this config option
default to false rather than true which is the default this PR gives it,
but I don't want to anger too many people familiar with the existing behaviour.
2020-07-18 20:00:48 +10:00
Jesse Duffield
a9cc321981
prompt to create new branch if branch not found
2020-07-17 09:20:50 +10:00
Jesse Duffield
6349214f00
prompt to commit all files if committing with no staged files
2020-07-17 09:01:40 +10:00
Jesse Duffield
cf5cefb2d6
allow user to scroll themselves inside merge panel
2020-05-19 18:44:53 +10:00
Jesse Duffield
36ac764133
fix race condition when scrolling to merge conflict
2020-05-19 18:05:14 +10:00
Jesse Duffield
003e45d2f5
allow creating branches off of remote branches
2020-05-19 09:57:37 +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
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
e9f28855a2
add bugfix git flow option
2020-04-20 18:31:13 +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
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
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
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
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
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
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
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
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
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
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
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
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
fabdda0492
allow customizing background color in staging mode
2020-02-23 18:37:19 +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
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
efb26f8b60
refresh current branch graph when side panels refresh
2020-02-10 19:05:55 +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
Jesse Duffield
5f71f87496
correctly compare new main height to previous
2020-02-03 21:50:31 +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
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
c166c57c5d
make use of branch config when pushing/pulling
2020-01-29 15:19:19 +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
Jesse Duffield
d647a96ed5
add reflog reset options
2020-01-09 22:36:07 +11:00
Jesse Duffield
1b64ea3210
add checkout reflog commit keybinding
2020-01-09 22:36:07 +11:00
Jesse Duffield
9b32e99eb8
add reflog tab in commits panel
2020-01-09 22:36:07 +11:00
Jesse Duffield
e0015a52e5
refresh side panels when resetting to upstream
2020-01-08 22:30:54 +11:00
Jesse Duffield
80377e4716
add git flow support
2020-01-08 22:03:15 +11:00
Jesse Duffield
c3d54f3c2e
don't watch deleted files
2020-01-08 21:57:39 +11:00
Jesse Duffield
c7d367a791
minor fixup
2020-01-08 21:55:52 +11:00
Jesse Duffield
ba4253668d
reduce to 50
2020-01-08 21:41:39 +11:00
Jesse Duffield
1ce5c69cd2
improve file watching
...
By default, macs have 256 open files allowed by a given process.
This sucks when you end up with over 256 files modified in a repo
because after you've watched all of them, lots of other calls to
the command line will fail due to violating the limit.
Given there's no easy platform agnostic way to see what you've got
configured for how many files a process can have open, I'm going to
arbitrarily set the max to 200 and when we hit the limit we start
unwatching older files to make way for new ones.
WIP
2020-01-08 21:34:02 +11:00
David Chen
205d731d7b
added a seperate keybinding option for checking out commits
2020-01-07 19:14:54 -08:00
David Chen
3e875cc593
fix display of menu option keybindings
2020-01-07 13:26:29 -08:00
David Chen
de2cfc7e17
cleanup
2020-01-07 12:48:11 -08:00
David Chen
e72cab81c1
customizable keybinding for toggleDiffCommit
2020-01-07 10:03:13 -08:00
David Chen
844a2db83a
Merge branch 'master' into custom-keybindings
2020-01-07 09:57:06 -08:00
David Chen
529ba45cc7
fixed keybinding display in merge_panel.go
2020-01-07 09:50:25 -08:00
Jesse Duffield
09aabce3cd
allow commits to be checked out
2020-01-07 20:43:01 +11:00
Jesse Duffield
eb2bfd3848
allow hard resetting to upstream branch
2020-01-07 20:26:01 +11:00
Yasuhiro Matsumoto
d914d40b2e
Use ASCII on Windows with east asian locale
2020-01-07 11:32:11 +09:00
David Chen
66c7672a0c
updated keybinding config docs
2020-01-07 08:38:07 +08:00
David Chen
fd72a09d1e
if statements to map
2020-01-06 23:37:33 +08:00
David Chen
0ddf7c05c8
PickBothHunks -> pickBothHunks
2020-01-06 23:37:21 +08:00
David Chen
86b101c410
Merge branch 'master' into custom-keybindings
2020-01-04 08:12:36 +00:00
matejcik
0a31edecb6
make Ctrl+P visible
2020-01-03 15:09:59 +01:00
David Chen
029de4ac86
re-position key names so that the menu will show 'enter' instead of 'ctrl-m', or 'esc' instead of 'ctrl-['
2019-12-08 14:57:29 -08:00
David Chen
5f21f190b9
Merge branch 'master' into custom-keybindings
2019-12-08 14:40:11 -08:00
Jesse Duffield
dab78c8a63
stop the files panel from stealing focus whenever files are refreshed
2019-12-08 21:27:28 +11:00
David Chen
0d1230a959
added keybinding for fetchRemote
2019-12-07 09:26:17 -08:00
David Chen
c507e5f562
Merge branch 'master' into custom-keybindings
2019-12-07 09:19:43 -08:00
David Chen
7194dfa43c
better error messages
2019-12-06 22:39:41 -08:00
David Chen
e425f1df87
suggested keybinding improvements
2019-12-06 22:36:52 -08:00
Jesse Duffield
3f4613feb0
allow fetching remotes with 'f'
2019-12-07 16:23:04 +11:00
Jesse Duffield
033c21754b
fix commit message char count
2019-12-07 16:21:26 +11:00
David Chen
c89c35c6b3
bug fix: ctrl+combinations was not showing up in help menu
2019-12-06 10:26:39 -08:00
David Chen
1dbfea54bc
better error handling
2019-12-04 19:16:47 -08:00
David Chen
0a26050b47
fix
2019-12-04 18:33:00 -08:00
David Chen
fa6893fda9
feature: custom keybindings
2019-12-04 18:01:06 -08:00
Dawid Dziurla
1c38db1fc7
keybindings: alias V -> v
2019-11-27 20:37:07 +01:00
Jesse Duffield
bad06bb634
fix typo
2019-11-21 22:09:02 +11:00
Jesse Duffield
f905b27b00
couple of things to clean up after rebasing onto master
2019-11-21 22:07:14 +11:00
Jesse Duffield
3c13229145
add tags panel
2019-11-21 22:07:14 +11:00
Jesse Duffield
cea24c2cf9
allow editing remotes
2019-11-21 22:07:14 +11:00
Jesse Duffield
64017cf874
require double clicking menu items so you know what you're clicking
2019-11-21 22:07:14 +11:00
Jesse Duffield
b3bce8a1ba
refactor confirmation prompt code
2019-11-21 22:07:14 +11:00
Jesse Duffield
3b0cef2ec8
better handling of click events in list views
2019-11-21 22:07:14 +11:00
Jesse Duffield
07cbae4019
support setting upstream
2019-11-21 22:07:14 +11:00
Jesse Duffield
b42202ea1c
better fast forward
2019-11-21 22:07:14 +11:00
Jesse Duffield
8347dcd671
make upstream branch display more lenient on git errors
2019-11-21 22:07:14 +11:00
Jesse Duffield
dcb5285797
support rebasing onto remote branch
2019-11-21 22:07:14 +11:00
Jesse Duffield
a9cd647075
support deleting remote branches
2019-11-21 22:07:14 +11:00
Jesse Duffield
f0cd730fbb
ensure we switch tabs when switching context
2019-11-21 22:07:14 +11:00
Jesse Duffield
2afbd7ba7f
support merging remote branches into checked out branch
2019-11-21 22:07:14 +11:00
Jesse Duffield
55ff0c0dee
support detached heads when showing the selected branch
2019-11-21 22:07:14 +11:00
Jesse Duffield
6b7aaeca45
support adding/removing remotes
2019-11-21 22:07:14 +11:00
Jesse Duffield
1f3e1720a3
split RemoteBranch out from Branch
2019-11-21 22:07:14 +11:00
Jesse Duffield
6bd0979b4a
only refresh branches panel on focus lost when in the local-branches context
2019-11-21 22:07:14 +11:00
Jesse Duffield
986abc1e45
support viewing a remote branch
2019-11-21 22:07:14 +11:00
Jesse Duffield
61dac10bb9
support navigating remotes view
2019-11-21 22:07:14 +11:00
Jesse Duffield
92e43d9e77
allow changing tabs with [ and ]
2019-11-21 22:07:14 +11:00
Jesse Duffield
8aa1062e06
extract out some logic for list views
2019-11-21 22:07:14 +11:00
Jesse Duffield
7e0a8f235e
add contexts to views
2019-11-21 22:07:14 +11:00
Jesse Duffield
e6be849eb2
add remotes context to branches view
2019-11-21 22:07:14 +11:00
Jesse Duffield
f15e47bb67
add file watching for modified files
...
log createErrorPanel error
swallow error when adding file to watcher
2019-11-14 22:22:47 +11:00
Jesse Duffield
7995d56a85
allow editing or opening a file while resolving merge conflicts
2019-11-14 22:22:47 +11:00
Jesse Duffield
3b1d705473
show upstream branch for branch
2019-11-13 22:25:42 +11:00
Jesse Duffield
f43ba728e3
prompt to set upstream when pulling on untracked branch
...
prompt to set upstream when pulling on untracked branch
2019-11-13 21:36:16 +11:00
Jesse Duffield
12b84307ac
specify upstream when pushing a branch for the first time
2019-11-11 23:30:30 +11:00
Jesse Duffield
cbc82cd3c1
allow for changing the current directory on exit
...
For this to work you'll need to put this in your ~/.zshrc (or equivalent rc file):
lg()
{
export LAZYGIT_NEW_DIR_FILE=/Users/jesseduffieldduffield/Library/Application\ Support/jesseduffield/lazygit/.lastd
lazygit "$@"
if [ -f $LAZYGIT_NEW_DIR_FILE ]; then
cd "$(cat $LAZYGIT_NEW_DIR_FILE)"
rm -f $LAZYGIT_NEW_DIR_FILE > /dev/null
fi
}
2019-11-11 21:45:31 +11:00
Jesse Duffield
e174e5254d
support clicking through to commit files panel
2019-11-10 22:32:13 +11:00
Jesse Duffield
de5bcb8b9c
add some shameless self promotion
2019-11-10 22:32:13 +11:00
Jesse Duffield
98666186ee
add '?' keybinding for opening options menu
2019-11-10 22:32:13 +11:00
Jesse Duffield
941d3c6648
allow secondary view to be scrolled
2019-11-10 22:32:13 +11:00
Jesse Duffield
df72eee201
don't try to give a logrus entry object to gocui
2019-11-10 22:32:13 +11:00
Jesse Duffield
131113b065
simplify how the context system works
2019-11-10 22:32:13 +11:00
Jesse Duffield
e85310c0a9
add mouse support
2019-11-10 22:32:13 +11:00
Jesse Duffield
cd17b46b55
reset patch builder when we've escaped from the building phase and nothing has been added
2019-11-10 16:18:25 +11:00
Jesse Duffield
d0d92c7697
remove old add patch keybinding
2019-11-10 15:01:40 +11:00
Jesse Duffield
194c554357
support ours/theirs merge conflict headers
2019-11-08 09:31:27 +11:00
Jesse Duffield
326b1ca8c9
better titles
2019-11-05 19:22:01 +11:00
Jesse Duffield
72fe770974
better interface for ApplyPatch function
2019-11-05 19:22:01 +11:00
Jesse Duffield
cd3874ffb7
don't let patch manager ever be nil
2019-11-05 19:22:01 +11:00
Jesse Duffield
10fe88a2cf
more work on managing focus when applying patch command
2019-11-05 19:22:01 +11:00
Jesse Duffield
1a38bfb76d
do not return focus to commitsFiles view after selecting to start a new patch
2019-11-05 19:22:01 +11:00
Jesse Duffield
beaebb7dc7
handling when to show the split panel
2019-11-05 19:22:01 +11:00
Jesse Duffield
6d5d054c30
support line by line additions in staging and patch building contexts
2019-11-05 19:22:01 +11:00
Jesse Duffield
2344155379
handle empty commit in rebase
2019-11-05 19:22:01 +11:00
Jesse Duffield
48347d4d86
use fallback approach for applying patch
2019-11-05 19:22:01 +11:00
Jesse Duffield
61deaaddb7
reorder patch command options
2019-11-05 19:22:01 +11:00
Jesse Duffield
f285d80d0e
move PatchManager to GitCommand
2019-11-05 19:22:01 +11:00
Jesse Duffield
0ffccbd3ee
checks for if we're in a normal working tree state
2019-11-05 19:22:01 +11:00
Jesse Duffield
d5e443e8e3
Support building and moving patches
...
WIP
2019-11-05 19:22:01 +11:00
Jesse Duffield
cc039d1f9b
don't unsplit main panel unconditionally on focus lost
2019-11-05 19:22:01 +11:00
Jesse Duffield
11e57edbb3
use v keybindings instead of c
2019-11-05 19:22:01 +11:00
Jesse Duffield
820f3d5cbb
support split view in staging panel and staging ranges
2019-11-05 19:22:01 +11:00
Giorgio Previtera
a1c6619401
\#480 Close popup panels before switching to a side view
...
Reusing the `onNewPopupPanel` function to close existing popup panels
(if any) before switching to a new side view. Alse closing any
confirmation prompt.
2019-10-27 12:39:08 +11:00
Giorgio Previtera
3524f6baa9
480 - remove duplication by using a decorator
...
Also use a for loop to append the new keybindings
2019-10-27 12:39:08 +11:00
Giorgio Previtera
ac5cbc1d2c
#480 Allow cycling side panels with number keys
2019-10-27 12:39:08 +11:00
mjarkk
a045313e08
Removed the pkg/gui/theme.go file
...
Moved most functions to the new theme/theme.go
2019-10-20 12:32:57 +11:00
mjarkk
02fef3136f
Added light theme option to the settings
2019-10-20 12:32:57 +11:00
matejcik
600112780c
use git.autoFetch config option
2019-09-08 11:20:15 +10:00
matejcik
68d5c2bc10
use gui.g directly
2019-09-08 11:20:15 +10:00
matejcik
7db1fee877
startBackgroundFetch does not return errors
2019-09-08 11:20:15 +10:00
matejcik
8f786e3fd9
configurable auto-fetch
2019-09-08 11:20:15 +10:00
Christian Muehlhaeuser
975a5315b0
Simplified code a bit
2019-07-27 10:52:06 +10:00
Jesse Duffield
75db4faf69
show actual error when trying to check out a branch that doesn't exist
2019-07-14 14:31:48 +10:00
Jesse Duffield
abddea060e
revert menu panel error panel usage
2019-06-08 20:29:25 +10:00
Jesse Duffield
0f0fda1660
allow stashing staged changes
...
reinstate old stash functionality with the 's' keybinding
2019-06-06 20:50:19 +10:00
Jesse Duffield
bd2170a99c
request explicit return from subprocess
...
Previously we were recording output from subprocesses using a multiwriter
and hooking that up to the cmd's stdout to write to both os.Stdout and
a buffer. We would then display the output after the program finished.
This worked well for commands like 'ls' but not for commands like 'vi'
which expect you to be in a tty, and when you've got the cmd's stdout
pointing at a multiwriter, the subprogram thinks we're not in a tty
and then things like terminal corruption can happen. This was the case
with neovim, and even in vim a warning was given with a pause before
starting the program.
Now we're chucking out the multiwriter and instead making it that you
need to press enter after the program has finished to return to lazygit.
This allows you to view the output of the program (e.g. if it's ls) and
then decide that you want to return. It's one level of unnecessary
redirection for editors like vim, but even they could potentially have
output to stderr/stdout that you want to look at before returning.
Please enter the commit message for your changes. Lines starting
2019-05-26 21:19:54 +10:00
Jesse Duffield
c039e5bed0
support going to start/end of line and deleting lines in simple editor
2019-05-26 12:42:17 +10:00
Jesse Duffield
527c025a0c
use shift+j/k to scroll main, ctrl+j/k to move commits
2019-05-25 16:48:17 +10:00
Jesse Duffield
4a4dc676fc
simplify code for logging output of subprocess
2019-05-18 11:30:10 +10:00
Suhas Karanth
e38d9d5f22
Add alternatives for scroll actions to context map
2019-05-12 16:20:42 +10:00
Suhas Karanth
97f060d38d
Add field Alternative to gui.Binding
...
Document and use alternative keybinding for generating cheatsheet. Add
alt keybinding fn+up/down for scroll up/down actions.
Also run `go run scripts/generate_cheatsheet.go`.
2019-05-12 16:20:42 +10:00
mjarkk
8754d766e2
Made not enough space pannel looks better on 1 height
2019-05-07 08:47:41 +02:00
mjarkk
2388c3ee9a
Fixed some sugestions from jesseduffield
2019-05-06 20:04:54 +02:00
Mark Kopenga
61890cb9de
Merge branch 'master' into smaller-ui
2019-05-06 15:24:36 +02:00
Jesse Duffield
5a0d0bb299
support resetting to a commit in either soft, hard, or mixed mode
2019-05-06 22:44:38 +10:00
Jesse Duffield
2746b1bd38
Prevent crash when opening in small window
...
We were crashing when opening lazygit in a small window because the limit view
was the only view that got created, and there were two functions that referenced
either the 'current' view or the files view, neither of which existed.
Now those functions just return nil if the view does not exist
2019-05-06 22:39:35 +10:00
mjarkk
19a6368377
Changed the way how the view height are set
2019-05-05 15:57:35 +02:00
mjarkk
492614ebc7
Made the ui even smaller
2019-04-26 08:24:14 +02:00
mjarkk
6ba05c94ea
Added another resizing step
2019-04-25 21:37:19 +02:00
mjarkk
07fec6d00e
Made the go bot happy
2019-04-20 16:51:50 +02:00
mjarkk
a69b985086
Better UI on small screens
2019-04-20 15:56:23 +02:00
Jesse Duffield
0d3a193ab5
Add 'w' keybinding in files panel to commit as a WIP
...
If your git.skipHookPrefix is set to, say, WIP, in your config, then
hitting 'w' in the files panel will bring up the commit message panel
with 'WIP' pre-filled, so you just need to hit enter to confirm
(or add some more to the message) in order to commit your changes
with the --no-verify flag, meaning the pre-commit hook will be skipped
2019-04-13 14:38:17 +10:00
Jesse Duffield
ab9fa291a8
Add skipHookPrefix to config
...
allows a user to specify a commit message prefix that will tell lazygit to skip
the pre-commit hook. This defaults to WIP. Setting it to the empty string will
disable the feature.
So if my message goes 'WIP: do the thing' then the pre-commit hook will not run
2019-04-13 14:38:17 +10:00
Jesse Duffield
0f1abcb10c
remove subprocess channel stuff
2019-04-07 17:15:01 +10:00
Jesse Duffield
55538a3695
support custom commands
2019-04-07 17:15:01 +10:00
Jesse Duffield
60e33f5d8c
Allow for creating fixup! commits
2019-04-07 13:13:40 +10:00
skanehira
f34be1896a
fixed some #397
2019-04-06 13:02:20 +11:00
skanehira
c350cdba43
add feature of display diff between specific commits #397
2019-04-06 13:02:20 +11:00
Jesse Duffield
1a933eaa73
pass length of options to createMenu
2019-03-23 13:26:17 +11:00
Jesse Duffield
bd46e9c5b0
delete menu keybinding before setting new one
2019-03-23 13:26:17 +11:00
Jesse Duffield
09b7ae21bc
always attempt to discard changes from current file
2019-03-23 13:26:17 +11:00
Jesse Duffield
acfc961909
move soft reset keybinding into reset options
2019-03-23 13:26:17 +11:00
Jesse Duffield
f502f75e1f
add more options for resetting files in the working tree
2019-03-23 13:26:17 +11:00
Jesse Duffield
ff97ef7b94
support discarding unstaged changes
2019-03-23 13:26:17 +11:00
Jesse Duffield
a2c780b085
retain commit message if precommit hook fails
2019-03-23 13:07:36 +11:00
Jesse Duffield
d84dfc23e7
Rely on model rather than view to focus a point
...
Currently when we want to focus a point on a view (i.e. highlight a
line and ensure it's within the bounds of a view's box, we use the
LinesHeight method on the view to work out how many lines in total
there are.
This is bad because for example if we come back from editing a file,
the view will have no contents so LinesHeight == 0, but we might
be trying to select line 10 because there are actual ten things we
expect to be rendered already. This causes a crash when e.g. 10 is
greater than the height of the view.
So we need to pass in to our FocusPoint method the actual number of
items we want to render, rather than having the method rely on the
LinesHeight, so that the method knows to scroll a bit before setting
the cursor's y position.
Unfortunately this makes for some awkward code with our current setup.
We don't have a good interface type on these state objects so we now
need to explicitly obtain the len() of whatever array we're rendering.
In the case of the menu panel this is even more awkward because the items
list is just an interface{} and it's not easy to get the list of that, so
now when we instantiate a menu we need to pass in the count of items
as well.
The better solution would be to define an interface with a getItems
and getLength method and have all these item arrays become structs
implementing the interface, but I am too lazy to do this right now :)
2019-03-23 11:54:25 +11:00
Jesse Duffield
e68dbeb7eb
organise keybindings better
2019-03-22 20:20:06 +11:00
Jesse Duffield
d5f617ec92
show some more errors in the gui rather than panicking
2019-03-16 12:51:48 +11:00
Jesse Duffield
6d104bfa91
show file remove error in gui rather than panic
2019-03-16 12:51:48 +11:00
Jesse Duffield
e583cc2519
allow autostashing changes when checking out a branch
2019-03-16 12:51:48 +11:00
Jesse Duffield
b6447ebdbb
allow adding a file viewed from the commit files panel
2019-03-16 10:20:27 +11:00
Jesse Duffield
c98eddc185
appease golangci
2019-03-16 10:20:27 +11:00
Jesse Duffield
3b2353b5ae
remove redundant call to refreshCommitFilesView
...
We already call this function inside the refreshCommitsView function.
We call it there because it's logical that A) one occurs whenever the other does and
B) the commit files only get refreshed after we've updated the commits themselves
2019-03-16 10:20:27 +11:00
Jesse Duffield
4f7f6a073c
allow user to discard old file changes for a given commit
2019-03-16 10:20:27 +11:00
Jesse Duffield
0e008cc15f
allow user to checkout old files
2019-03-16 10:20:27 +11:00
Jesse Duffield
1ad9c6faac
minor cleanup
2019-03-16 10:20:27 +11:00
skanehira
06fe726ee7
Add feature of display committed file list #383
2019-03-16 10:20:27 +11:00
Jesse Duffield
ac5088eee6
allow both enter and space to execute menu item
2019-03-03 23:18:28 +11:00
Jesse Duffield
e36899d5c5
prevent crashes when scrolling up
2019-03-03 23:08:07 +11:00
Jesse Duffield
a5d27764cd
support user configuring mouse events to be enabled
2019-03-03 16:15:20 +11:00
Jesse Duffield
43758cbb5f
i18n for rebase loading states
2019-03-03 16:11:20 +11:00
Jesse Duffield
0079015102
distinguish between inline and non-inline merge conflicts
2019-03-03 15:58:01 +11:00
Jesse Duffield
e0bdfad63a
don't crash if we have no lines to stage
2019-03-03 15:48:01 +11:00
Jesse Duffield
f07fc31f8b
fixup layout issue that was causing crashes when the window was too small
2019-03-03 15:34:53 +11:00
Jesse Duffield
4bb577ab7d
show loading status for rebasing events
2019-03-03 15:21:33 +11:00
Jesse Duffield
8305d8e72f
hide donate button if mouse events are disabled
2019-03-03 15:21:20 +11:00
Jesse Duffield
790235f64b
add another match on the error message to tell us we've encountered merge conflicts
2019-03-02 21:31:48 +11:00
Jesse Duffield
dbb01b028d
populate dutch and polish i18n files with new messages
2019-03-02 21:31:48 +11:00
Jesse Duffield
0c886eddfb
Revert "remove old rebase code now that we're only ever interactively rebasing"
...
This reverts commit 1a19b1412d
.
2019-03-02 20:00:26 +11:00
Jesse Duffield
399346c2ee
disable mouse feature until its ready
2019-03-02 20:00:17 +11:00
Jesse Duffield
7a170bbccf
extend cheatsheet generator to contain context based keybindings
2019-03-02 19:05:21 +11:00
Jesse Duffield Duffield
8c0ea8f45f
mouse support
2019-03-02 17:49:30 +11:00
Jesse Duffield
afbc028ad6
revert to the old keybinding for stash: I don't want anybody accidentally deleting changes they are trying to stash
2019-03-02 17:46:56 +11:00
Jesse Duffield
e331dfcaf8
update i18n
2019-03-02 17:46:56 +11:00
Jesse Duffield
1337f6e76a
appease golangci
2019-03-02 17:45:53 +11:00
Jesse Duffield Duffield
f4938deaae
change type of cherryPickedCommits from []string to []*Commit
2019-02-24 17:34:19 +11:00
Jesse Duffield Duffield
a8858cbd12
support cherry picking commits
2019-02-24 13:51:52 +11:00
Jesse Duffield Duffield
1a19b1412d
remove old rebase code now that we're only ever interactively rebasing
2019-02-24 11:03:14 +11:00
Jesse Duffield Duffield
95d451e59a
Make it easier to run sync/async commands, switch to interactive rebase when rebasing on branches
2019-02-24 10:58:15 +11:00
Jesse Duffield
6c1d2d45ef
some i18n and restricting rewording during interactive rebase
2019-02-24 09:42:35 +11:00
Jesse Duffield
f6b3a9b184
rearranging todo items while interactively rebasing
2019-02-24 09:42:34 +11:00
Jesse Duffield
9661ea04f3
wrap amend command in a confirmation
2019-02-20 19:46:27 +11:00
Jesse Duffield
0228e25084
work towards more interactive rebase options
2019-02-19 23:36:36 +11:00
Jesse Duffield
dcc7855fd0
pull commit list builder functions into their own builder struct
2019-02-19 09:18:30 +11:00
Jesse Duffield
d44638130c
add various interactive rebase commands
2019-02-18 23:27:54 +11:00
Jesse Duffield
76a27f417f
rename any commit
2019-02-18 21:29:43 +11:00
Jesse Duffield
adc2529019
dealing better with errors at the top level
2019-02-18 19:42:23 +11:00
Jesse Duffield
43ab7318d3
remove HasMergeConflicts struct instance variables
2019-02-18 19:28:02 +11:00
Jesse Duffield
cb372d469f
fix golangci errors
2019-02-16 21:30:29 +11:00
Jesse Duffield
88ba6efdd5
remove outdated TODO
2019-02-16 21:20:10 +11:00
Jesse Duffield
e011e9bc42
more work on rebasing feature
2019-02-16 21:01:17 +11:00
Jesse Duffield
ad93b4c863
consider whether the view has focus when rendering the contents of a view
2019-02-16 15:17:44 +11:00
Jesse Duffield
198cbee498
introduce panel contexts and more work on rebasing
2019-02-16 12:07:27 +11:00
Jesse Duffield
daca07eaca
add loading panel
2019-02-16 12:03:22 +11:00
Jesse Duffield
c101993405
post-merge cleanup
2019-02-11 22:47:14 +11:00
Jesse Duffield
6430ab6ac9
Merge branch 'master' into feature/rebasing
2019-02-11 22:46:27 +11:00
Jesse Duffield
cfe3605e6b
use go-errors package to display stacktrace of errors that cause panics
2019-02-11 22:39:17 +11:00
Jesse Duffield
75ab8ec4d9
catch rebase errors and show in error panels
2019-02-11 21:29:47 +11:00
Jesse Duffield
77faf85cfc
post-merge cleanup
2019-02-11 21:07:12 +11:00
Jesse Duffield
3d343e9b57
Merge branch 'master' into feature/rebasing
2019-02-11 21:02:53 +11:00
Jesse Duffield
3a607061a2
Only reset origin in main view when handling the selection of a new file
2019-01-18 09:32:15 +11:00
Jesse Duffield
695b092c41
Directly send wrap argument rather than the view
2019-01-17 10:29:52 +11:00
Jesse Duffield
a38d1a3b68
Explicitly refer confirmation panel view
...
as @jesseduffield pointed in #358 , need to refer
confirmation panel view explicitly in case something
else has focus
Co-Authored-By: KOREAN139 <korean139@gmail.com>
2019-01-17 10:29:52 +11:00