1
0
mirror of https://github.com/git/git synced 2024-07-05 00:58:49 +00:00

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'
This commit is contained in:
Junio C Hamano 2011-10-16 03:01:44 -07:00
commit 47d45a5ebd
9 changed files with 159 additions and 29 deletions

View File

@ -854,6 +854,7 @@ set default_config(gui.fontdiff) [font configure font_diff]
# TODO: this option should be added to the git-config documentation
set default_config(gui.maxfilesdisplayed) 5000
set default_config(gui.usettk) 1
set default_config(gui.warndetachedcommit) 1
set font_descs {
{fontui font_ui {mc "Main 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
# 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]

View File

@ -22,6 +22,7 @@ field w_asim ; # text column: annotations (simple computation)
field w_file ; # text column: actual file data
field w_cviewer ; # pane showing commit message
field finder ; # find mini-dialog frame
field gotoline ; # line goto mini-dialog frame
field status ; # status mega-widget instance
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}] \
]
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
text $w_cviewer \
-background white \
@ -274,7 +280,11 @@ constructor new {i_commit i_path i_jump} {
$w.ctxm add command \
-label [mc "Find Text..."] \
-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
build_encoding_menu $w.ctxm.enc [cb _setencoding]
$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 <Button-1> [list focus $w_cviewer]
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 <F3> [list searchbar::find_next $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] }
grid configure $w.header -sticky ew
@ -1298,9 +1311,9 @@ method _position_tooltip {} {
set pos_y [expr {[winfo pointery .] + 10}]
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
if {$pos_y >= 0} {append g +}
if {[tk windowingsystem] eq "win32" || $pos_y >= 0} {append g +}
append g $pos_y
wm geometry $tooltip_wm $g
@ -1336,4 +1349,14 @@ method _resize {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
}
}

View File

@ -610,9 +610,9 @@ method _position_tooltip {} {
set pos_y [expr {[winfo pointery .] + 10}]
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
if {$pos_y >= 0} {append g +}
if {[tk windowingsystem] eq "win32" || $pos_y >= 0} {append g +}
append g $pos_y
wm geometry $tooltip_wm $g

View File

@ -260,8 +260,23 @@ proc commit_prehook_wait {fd_ph curHEAD msg_p} {
}
proc commit_commitmsg {curHEAD msg_p} {
global is_detached repo_config
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.
#
set fd_ph [githook_read commit-msg $msg_p]

View File

@ -356,12 +356,21 @@ proc do_add_all {} {
global file_states
set paths [list]
set unknown_paths [list]
foreach path [array names file_states] {
switch -glob -- [lindex $file_states($path) 0] {
U? {continue}
?M -
?T -
?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

81
git-gui/lib/line.tcl Normal file
View File

@ -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
}
}
}
}

View File

@ -35,6 +35,8 @@ constructor new {i_w i_text args} {
grid remove $w
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]
return $this
@ -196,4 +198,4 @@ method scrolled {} {
}
}
}
}

View File

@ -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
them.
You would then need to clone the git-gui internationalization project
repository, so that you can work on it:
You would then need to clone the git-gui project repository and create
a feature branch to begin working:
$ git clone mob@repo.or.cz:/srv/git/git-gui/git-gui-i18n.git/
$ cd git-gui-i18n
$ git checkout --track -b mob origin/mob
$ git config remote.origin.push mob
$ git clone git://repo.or.cz/git-gui.git
$ cd git-gui.git
$ git checkout -b my-translation
The "git checkout" command creates a 'mob' branch from upstream's
corresponding branch and makes it your current branch. 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".
The "git checkout" command creates a new branch to keep your work
isolated and to make it simple to post your patch series when
completed. You will be working on this branch.
2. Starting a new language.
In the git-gui-i18n directory is a po/ subdirectory. It has a
handful files whose names end with ".po". Is there a file that has
messages in your language?
In the git-gui directory is a po/ subdirectory. It has a handful of
files whose names end with ".po". Is there a file that has messages
in your language?
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:
@ -149,15 +144,18 @@ There is a trick to test your translation without first installing:
$ make
$ LANG=af ./git-gui.sh
When you are satisfied with your translation, commit your changes, and
push it back to the 'mob' branch:
When you are satisfied with your translation, commit your changes then submit
your patch series to the maintainer and the Git mailing list:
$ edit po/af.po
... be sure to update Last-Translator: and
... PO-Revision-Date: lines.
$ git add po/af.po
$ git commit -m 'Started Afrikaans translation.'
$ git push
$ git commit -s -m 'git-gui: added Afrikaans translation.'
$ 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.
@ -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:
$ git checkout master
$ git pull
In the former case, you will edit po/af.po (again, replace "af" with

View File

@ -1714,7 +1714,7 @@ msgstr ""
#: lib/index.tcl:30
msgid "Continue"
msgstr "Forstätt"
msgstr "Fortsätt"
#: lib/index.tcl:33
msgid "Unlock Index"