Merge git://repo.or.cz/git-gui
* git://repo.or.cz/git-gui: git-gui: incremental goto line in blame view git-gui: clear the goto line input when hiding git-gui: only accept numbers in the goto-line input git-gui: search and linenumber input are mutual exclusive in the blame view git-gui: deal with unknown files when pressing the "Stage Changed" button git-gui: drop the 'n' and 'Shift-n' bindings from the last patch. git-gui: Add keyboard shortcuts for search and goto commands in blame view. git-gui: Enable jumping to a specific line number in blame view. Fix tooltip display with multiple monitors on windows. Fix typo: existant->existent git-gui: updated translator README for current procedures. git-gui: warn when trying to commit on a detached head git-gui: Corrected a typo in the Swedish translation of 'Continue'maint
						commit
						47d45a5ebd
					
				|  | @ -854,6 +854,7 @@ set default_config(gui.fontdiff) [font configure font_diff] | ||||||
| # TODO: this option should be added to the git-config documentation | # TODO: this option should be added to the git-config documentation | ||||||
| set default_config(gui.maxfilesdisplayed) 5000 | set default_config(gui.maxfilesdisplayed) 5000 | ||||||
| set default_config(gui.usettk) 1 | set default_config(gui.usettk) 1 | ||||||
|  | set default_config(gui.warndetachedcommit) 1 | ||||||
| set font_descs { | set font_descs { | ||||||
| 	{fontui   font_ui   {mc "Main Font"}} | 	{fontui   font_ui   {mc "Main Font"}} | ||||||
| 	{fontdiff font_diff {mc "Diff/Console Font"}} | 	{fontdiff font_diff {mc "Diff/Console Font"}} | ||||||
|  | @ -1526,7 +1527,7 @@ proc run_prepare_commit_msg_hook {} { | ||||||
|  |  | ||||||
| 	# prepare-commit-msg requires PREPARE_COMMIT_MSG exist.  From git-gui | 	# prepare-commit-msg requires PREPARE_COMMIT_MSG exist.  From git-gui | ||||||
| 	# it will be .git/MERGE_MSG (merge), .git/SQUASH_MSG (squash), or an | 	# it will be .git/MERGE_MSG (merge), .git/SQUASH_MSG (squash), or an | ||||||
| 	# empty file but existant file. | 	# empty file but existent file. | ||||||
|  |  | ||||||
| 	set fd_pcm [open [gitdir PREPARE_COMMIT_MSG] a] | 	set fd_pcm [open [gitdir PREPARE_COMMIT_MSG] a] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @ -22,6 +22,7 @@ field w_asim     ; # text column: annotations (simple computation) | ||||||
| field w_file     ; # text column: actual file data | field w_file     ; # text column: actual file data | ||||||
| field w_cviewer  ; # pane showing commit message | field w_cviewer  ; # pane showing commit message | ||||||
| field finder     ; # find mini-dialog frame | field finder     ; # find mini-dialog frame | ||||||
|  | field gotoline   ; # line goto mini-dialog frame | ||||||
| field status     ; # status mega-widget instance | field status     ; # status mega-widget instance | ||||||
| field old_height ; # last known height of $w.file_pane | field old_height ; # last known height of $w.file_pane | ||||||
|  |  | ||||||
|  | @ -231,6 +232,11 @@ constructor new {i_commit i_path i_jump} { | ||||||
| 		-column [expr {[llength $w_columns] - 1}] \ | 		-column [expr {[llength $w_columns] - 1}] \ | ||||||
| 		] | 		] | ||||||
|  |  | ||||||
|  | 	set gotoline [::linebar::new \ | ||||||
|  | 		$w.file_pane.out.lf $w_file \ | ||||||
|  | 		-column [expr {[llength $w_columns] - 1}] \ | ||||||
|  | 		] | ||||||
|  |  | ||||||
| 	set w_cviewer $w.file_pane.cm.t | 	set w_cviewer $w.file_pane.cm.t | ||||||
| 	text $w_cviewer \ | 	text $w_cviewer \ | ||||||
| 		-background white \ | 		-background white \ | ||||||
|  | @ -274,7 +280,11 @@ constructor new {i_commit i_path i_jump} { | ||||||
| 	$w.ctxm add command \ | 	$w.ctxm add command \ | ||||||
| 		-label [mc "Find Text..."] \ | 		-label [mc "Find Text..."] \ | ||||||
| 		-accelerator F7 \ | 		-accelerator F7 \ | ||||||
| 		-command [list searchbar::show $finder] | 		-command [cb _show_finder] | ||||||
|  | 	$w.ctxm add command \ | ||||||
|  | 		-label [mc "Goto Line..."] \ | ||||||
|  | 		-accelerator "Ctrl-G" \ | ||||||
|  | 		-command [cb _show_linebar] | ||||||
| 	menu $w.ctxm.enc | 	menu $w.ctxm.enc | ||||||
| 	build_encoding_menu $w.ctxm.enc [cb _setencoding] | 	build_encoding_menu $w.ctxm.enc [cb _setencoding] | ||||||
| 	$w.ctxm add cascade \ | 	$w.ctxm add cascade \ | ||||||
|  | @ -341,10 +351,13 @@ constructor new {i_commit i_path i_jump} { | ||||||
| 	bind $w_cviewer <Tab>       "[list focus $w_file];break" | 	bind $w_cviewer <Tab>       "[list focus $w_file];break" | ||||||
| 	bind $w_cviewer <Button-1>   [list focus $w_cviewer] | 	bind $w_cviewer <Button-1>   [list focus $w_cviewer] | ||||||
| 	bind $w_file    <Visibility> [cb _focus_search $w_file] | 	bind $w_file    <Visibility> [cb _focus_search $w_file] | ||||||
| 	bind $top       <F7>         [list searchbar::show $finder] | 	bind $top       <F7>         [cb _show_finder] | ||||||
|  | 	bind $top       <Key-slash>  [cb _show_finder] | ||||||
|  | 	bind $top    <Control-Key-s> [cb _show_finder] | ||||||
| 	bind $top       <Escape>     [list searchbar::hide $finder] | 	bind $top       <Escape>     [list searchbar::hide $finder] | ||||||
| 	bind $top       <F3>         [list searchbar::find_next $finder] | 	bind $top       <F3>         [list searchbar::find_next $finder] | ||||||
| 	bind $top       <Shift-F3>   [list searchbar::find_prev $finder] | 	bind $top       <Shift-F3>   [list searchbar::find_prev $finder] | ||||||
|  | 	bind $top    <Control-Key-g> [cb _show_linebar] | ||||||
| 	catch { bind $top <Shift-Key-XF86_Switch_VT_3> [list searchbar::find_prev $finder] } | 	catch { bind $top <Shift-Key-XF86_Switch_VT_3> [list searchbar::find_prev $finder] } | ||||||
|  |  | ||||||
| 	grid configure $w.header -sticky ew | 	grid configure $w.header -sticky ew | ||||||
|  | @ -1298,9 +1311,9 @@ method _position_tooltip {} { | ||||||
| 	set pos_y [expr {[winfo pointery .] + 10}] | 	set pos_y [expr {[winfo pointery .] + 10}] | ||||||
|  |  | ||||||
| 	set g "${req_w}x${req_h}" | 	set g "${req_w}x${req_h}" | ||||||
| 	if {$pos_x >= 0} {append g +} | 	if {[tk windowingsystem] eq "win32" || $pos_x >= 0} {append g +} | ||||||
| 	append g $pos_x | 	append g $pos_x | ||||||
| 	if {$pos_y >= 0} {append g +} | 	if {[tk windowingsystem] eq "win32" || $pos_y >= 0} {append g +} | ||||||
| 	append g $pos_y | 	append g $pos_y | ||||||
|  |  | ||||||
| 	wm geometry $tooltip_wm $g | 	wm geometry $tooltip_wm $g | ||||||
|  | @ -1336,4 +1349,14 @@ method _resize {new_height} { | ||||||
| 	set old_height $new_height | 	set old_height $new_height | ||||||
| } | } | ||||||
|  |  | ||||||
|  | method _show_finder {} { | ||||||
|  | 	linebar::hide $gotoline | ||||||
|  | 	searchbar::show $finder | ||||||
|  | } | ||||||
|  |  | ||||||
|  | method _show_linebar {} { | ||||||
|  | 	searchbar::hide $finder | ||||||
|  | 	linebar::show $gotoline | ||||||
|  | } | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -610,9 +610,9 @@ method _position_tooltip {} { | ||||||
| 	set pos_y [expr {[winfo pointery .] + 10}] | 	set pos_y [expr {[winfo pointery .] + 10}] | ||||||
|  |  | ||||||
| 	set g "${req_w}x${req_h}" | 	set g "${req_w}x${req_h}" | ||||||
| 	if {$pos_x >= 0} {append g +} | 	if {[tk windowingsystem] eq "win32" || $pos_x >= 0} {append g +} | ||||||
| 	append g $pos_x | 	append g $pos_x | ||||||
| 	if {$pos_y >= 0} {append g +} | 	if {[tk windowingsystem] eq "win32" || $pos_y >= 0} {append g +} | ||||||
| 	append g $pos_y | 	append g $pos_y | ||||||
|  |  | ||||||
| 	wm geometry $tooltip_wm $g | 	wm geometry $tooltip_wm $g | ||||||
|  |  | ||||||
|  | @ -260,8 +260,23 @@ proc commit_prehook_wait {fd_ph curHEAD msg_p} { | ||||||
| } | } | ||||||
|  |  | ||||||
| proc commit_commitmsg {curHEAD msg_p} { | proc commit_commitmsg {curHEAD msg_p} { | ||||||
|  | 	global is_detached repo_config | ||||||
| 	global pch_error | 	global pch_error | ||||||
|  |  | ||||||
|  | 	if {$is_detached && $repo_config(gui.warndetachedcommit)} { | ||||||
|  | 		set msg [mc "You are about to commit on a detached head.\ | ||||||
|  | This is a potentially dangerous thing to do because if you switch\ | ||||||
|  | to another branch you will loose your changes and it can be difficult\ | ||||||
|  | to retrieve them later from the reflog. You should probably cancel this\ | ||||||
|  | commit and create a new branch to continue.\n\ | ||||||
|  | \n\ | ||||||
|  | Do you really want to proceed with your Commit?"] | ||||||
|  | 		if {[ask_popup $msg] ne yes} { | ||||||
|  | 			unlock_index | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	# -- Run the commit-msg hook. | 	# -- Run the commit-msg hook. | ||||||
| 	# | 	# | ||||||
| 	set fd_ph [githook_read commit-msg $msg_p] | 	set fd_ph [githook_read commit-msg $msg_p] | ||||||
|  |  | ||||||
|  | @ -356,12 +356,21 @@ proc do_add_all {} { | ||||||
| 	global file_states | 	global file_states | ||||||
|  |  | ||||||
| 	set paths [list] | 	set paths [list] | ||||||
|  | 	set unknown_paths [list] | ||||||
| 	foreach path [array names file_states] { | 	foreach path [array names file_states] { | ||||||
| 		switch -glob -- [lindex $file_states($path) 0] { | 		switch -glob -- [lindex $file_states($path) 0] { | ||||||
| 		U? {continue} | 		U? {continue} | ||||||
| 		?M - | 		?M - | ||||||
| 		?T - | 		?T - | ||||||
| 		?D {lappend paths $path} | 		?D {lappend paths $path} | ||||||
|  | 		?O {lappend unknown_paths $path} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	if {[llength $unknown_paths]} { | ||||||
|  | 		set reply [ask_popup [mc "There are unknown files do you also want | ||||||
|  | to stage those?"]] | ||||||
|  | 		if {$reply} { | ||||||
|  | 			set paths [concat $paths $unknown_paths] | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	add_helper {Adding all changed files} $paths | 	add_helper {Adding all changed files} $paths | ||||||
|  |  | ||||||
|  | @ -0,0 +1,81 @@ | ||||||
|  | # goto line number | ||||||
|  | # based on code from gitk, Copyright (C) Paul Mackerras | ||||||
|  |  | ||||||
|  | class linebar { | ||||||
|  |  | ||||||
|  | field w | ||||||
|  | field ctext | ||||||
|  |  | ||||||
|  | field linenum   {} | ||||||
|  |  | ||||||
|  | constructor new {i_w i_text args} { | ||||||
|  | 	global use_ttk NS | ||||||
|  | 	set w      $i_w | ||||||
|  | 	set ctext  $i_text | ||||||
|  |  | ||||||
|  | 	${NS}::frame  $w | ||||||
|  | 	${NS}::label  $w.l       -text [mc "Goto Line:"] | ||||||
|  | 	entry  $w.ent \ | ||||||
|  | 		-textvariable ${__this}::linenum \ | ||||||
|  | 		-background lightgreen \ | ||||||
|  | 		-validate key \ | ||||||
|  | 		-validatecommand [cb _validate %P] | ||||||
|  | 	${NS}::button $w.bn      -text [mc Go] -command [cb _goto] | ||||||
|  |  | ||||||
|  | 	pack   $w.l   -side left | ||||||
|  | 	pack   $w.bn  -side right | ||||||
|  | 	pack   $w.ent -side left -expand 1 -fill x | ||||||
|  |  | ||||||
|  | 	eval grid conf $w -sticky we $args | ||||||
|  | 	grid remove $w | ||||||
|  |  | ||||||
|  | 	trace add variable linenum write [cb _goto_cb] | ||||||
|  | 	bind $w.ent <Return> [cb _goto] | ||||||
|  | 	bind $w.ent <Escape> [cb hide] | ||||||
|  |  | ||||||
|  | 	bind $w <Destroy> [list delete_this $this] | ||||||
|  | 	return $this | ||||||
|  | } | ||||||
|  |  | ||||||
|  | method show {} { | ||||||
|  | 	if {![visible $this]} { | ||||||
|  | 		grid $w | ||||||
|  | 	} | ||||||
|  | 	focus -force $w.ent | ||||||
|  | } | ||||||
|  |  | ||||||
|  | method hide {} { | ||||||
|  | 	if {[visible $this]} { | ||||||
|  | 		$w.ent delete 0 end | ||||||
|  | 		focus $ctext | ||||||
|  | 		grid remove $w | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | method visible {} { | ||||||
|  | 	return [winfo ismapped $w] | ||||||
|  | } | ||||||
|  |  | ||||||
|  | method editor {} { | ||||||
|  | 	return $w.ent | ||||||
|  | } | ||||||
|  |  | ||||||
|  | method _validate {P} { | ||||||
|  | 	# only accept numbers as input | ||||||
|  | 	string is integer $P | ||||||
|  | } | ||||||
|  |  | ||||||
|  | method _goto_cb {name ix op} { | ||||||
|  | 	after idle [cb _goto 1] | ||||||
|  | } | ||||||
|  |  | ||||||
|  | method _goto {{nohide {0}}} { | ||||||
|  | 	if {$linenum ne {}} { | ||||||
|  | 		$ctext see $linenum.0 | ||||||
|  | 		if {!$nohide} { | ||||||
|  | 			hide $this | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | } | ||||||
|  | @ -35,6 +35,8 @@ constructor new {i_w i_text args} { | ||||||
| 	grid remove $w | 	grid remove $w | ||||||
|  |  | ||||||
| 	trace add variable searchstring write [cb _incrsearch_cb] | 	trace add variable searchstring write [cb _incrsearch_cb] | ||||||
|  | 	bind $w.ent <Return> [cb find_next] | ||||||
|  | 	bind $w.ent <Shift-Return> [cb find_prev] | ||||||
| 	 | 	 | ||||||
| 	bind $w <Destroy> [list delete_this $this] | 	bind $w <Destroy> [list delete_this $this] | ||||||
| 	return $this | 	return $this | ||||||
|  |  | ||||||
|  | @ -18,28 +18,23 @@ specialized so-called "po file editors" (e.g. emacs po-mode, KBabel, | ||||||
| poedit, GTranslator --- any of them would work well).  Please install | poedit, GTranslator --- any of them would work well).  Please install | ||||||
| them. | them. | ||||||
|  |  | ||||||
| You would then need to clone the git-gui internationalization project | You would then need to clone the git-gui project repository and create | ||||||
| repository, so that you can work on it: | a feature branch to begin working: | ||||||
|  |  | ||||||
| 	$ git clone mob@repo.or.cz:/srv/git/git-gui/git-gui-i18n.git/ | 	$ git clone git://repo.or.cz/git-gui.git | ||||||
| 	$ cd git-gui-i18n | 	$ cd git-gui.git | ||||||
| 	$ git checkout --track -b mob origin/mob | 	$ git checkout -b my-translation | ||||||
| 	$ git config remote.origin.push mob |  | ||||||
|  |  | ||||||
| The "git checkout" command creates a 'mob' branch from upstream's | The "git checkout" command creates a new branch to keep your work | ||||||
| corresponding branch and makes it your current branch.  You will be | isolated and to make it simple to post your patch series when | ||||||
| working on this branch. | completed.  You will be working on this branch. | ||||||
|  |  | ||||||
| The "git config" command records in your repository configuration file |  | ||||||
| that you would push "mob" branch to the upstream when you say "git |  | ||||||
| push". |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 2. Starting a new language. | 2. Starting a new language. | ||||||
|  |  | ||||||
| In the git-gui-i18n directory is a po/ subdirectory.  It has a | In the git-gui directory is a po/ subdirectory.  It has a handful of | ||||||
| handful files whose names end with ".po".  Is there a file that has | files whose names end with ".po".  Is there a file that has messages | ||||||
| messages in your language? | in your language? | ||||||
|  |  | ||||||
| If you do not know what your language should be named, you need to find | If you do not know what your language should be named, you need to find | ||||||
| it.  This currently follows ISO 639-1 two letter codes: | it.  This currently follows ISO 639-1 two letter codes: | ||||||
|  | @ -149,15 +144,18 @@ There is a trick to test your translation without first installing: | ||||||
| 	$ make | 	$ make | ||||||
| 	$ LANG=af ./git-gui.sh | 	$ LANG=af ./git-gui.sh | ||||||
|  |  | ||||||
| When you are satisfied with your translation, commit your changes, and | When you are satisfied with your translation, commit your changes then submit | ||||||
| push it back to the 'mob' branch: | your patch series to the maintainer and the Git mailing list: | ||||||
|  |  | ||||||
| 	$ edit po/af.po | 	$ edit po/af.po | ||||||
| 	... be sure to update Last-Translator: and | 	... be sure to update Last-Translator: and | ||||||
| 	... PO-Revision-Date: lines. | 	... PO-Revision-Date: lines. | ||||||
| 	$ git add po/af.po | 	$ git add po/af.po | ||||||
| 	$ git commit -m 'Started Afrikaans translation.' | 	$ git commit -s -m 'git-gui: added Afrikaans translation.' | ||||||
| 	$ git push | 	$ git send-email --to 'git@vger.kernel.org' \ | ||||||
|  | 	   --cc 'Pat Thoyts <patthoyts@users.sourceforge.net>' \ | ||||||
|  | 	   --subject 'git-gui: Afrikaans translation' \ | ||||||
|  | 	   master.. | ||||||
|  |  | ||||||
|  |  | ||||||
| 3. Updating your translation. | 3. Updating your translation. | ||||||
|  | @ -169,6 +167,7 @@ itself was updated and there are new messages that need translation. | ||||||
|  |  | ||||||
| In any case, make sure you are up-to-date before starting your work: | In any case, make sure you are up-to-date before starting your work: | ||||||
|  |  | ||||||
|  | 	$ git checkout master | ||||||
| 	$ git pull | 	$ git pull | ||||||
|  |  | ||||||
| In the former case, you will edit po/af.po (again, replace "af" with | In the former case, you will edit po/af.po (again, replace "af" with | ||||||
|  |  | ||||||
|  | @ -1714,7 +1714,7 @@ msgstr "" | ||||||
|  |  | ||||||
| #: lib/index.tcl:30 | #: lib/index.tcl:30 | ||||||
| msgid "Continue" | msgid "Continue" | ||||||
| msgstr "Forstätt" | msgstr "Fortsätt" | ||||||
|  |  | ||||||
| #: lib/index.tcl:33 | #: lib/index.tcl:33 | ||||||
| msgid "Unlock Index" | msgid "Unlock Index" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano