Skip to content

Commit

Permalink
gitk: Make "touching paths" search support backslashes
Browse files Browse the repository at this point in the history
Gitk can search for commits touching a specified path. The search text is
always treated as a regular expression, regardless of the matching option
selected (Exact, IgnCase, or Regexp). In particular, backslashes escape
the next character. This is inconvenient on Windows systems, where backslashes
are the norm for path specifiers, for example when copy/pasting from
Windows Explorer or a cmd shell -- these copy-pasted paths must be manually
modified in the gitk search text edit box before they will work.

This change uses the match option "Exact" to mean that a slash is a slash,
not part of a regular expression. Backslashes are converted to frontslashes
before searching, thus allowing easy copy/pasting of paths on Windows
systems. If the previous behaviour of "touching paths" search is desired,
simply select the "Regexp" search mode.

One potential drawback is that the default setting for the match option
($findtype in the code) is "Exact", and so this change alters the default
behaviour, which may confuse users and lead to bug reports.

Signed-off-by: Yggy King <yggy@zeroandone.ca>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Yggy King authored and Paul Mackerras committed Jul 24, 2011
1 parent 74cb884 commit de665fd
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion gitk
Original file line number Diff line number Diff line change
Expand Up @@ -4522,9 +4522,14 @@ proc makepatterns {l} {

proc do_file_hl {serial} {
global highlight_files filehighlight highlight_paths gdttype fhl_list
global cdup
global cdup findtype

if {$gdttype eq [mc "touching paths:"]} {
# If "exact" match then convert backslashes to forward slashes.
# Most useful to support Windows-flavoured file paths.
if {$findtype eq [mc "Exact"]} {
set highlight_files [string map {"\\" "/"} $highlight_files]
}
if {[catch {set paths [shellsplit $highlight_files]}]} return
set highlight_paths [makepatterns $paths]
highlight_filelist
Expand Down

0 comments on commit de665fd

Please sign in to comment.