From 59d1de4f1c7902e74b9d11614baa5b6262c25828 Mon Sep 17 00:00:00 2001 From: Jerry Huo Date: Tue, 6 Mar 2012 17:59:18 +0800 Subject: [PATCH 1/6] add extentsion filter --- Support/environment.rb | 28 + Support/lib/search.rb | 44 + Support/lib/search_dialog.rb | 6 + .../AckInProjectSearch.nib/designable.nib | 1559 +++++++++++++++++ .../AckInProjectSearch.nib/keyedobjects.nib | Bin 17535 -> 21725 bytes 5 files changed, 1637 insertions(+) create mode 100644 Support/nibs/AckInProjectSearch.nib/designable.nib diff --git a/Support/environment.rb b/Support/environment.rb index a47a953..53087be 100644 --- a/Support/environment.rb +++ b/Support/environment.rb @@ -130,6 +130,34 @@ def update_pbfind(search) IO.popen('pbcopy -pboard find', 'w') {|pbcopy| pbcopy.write @pbfind} end + def search_filetype_filter + + unless @search_filetype_filter + filetype_filter_command = "defaults read com.macromates.textmate fileTypeString 2>/dev/null" + @search_filetype_filter = OSX::PropertyList::load(Base64.decode64(%x{#{filetype_filter_command}})) + end + # puts "**" + # puts @search_filetype_filter + # puts "|**" + @search_filetype_filter + + rescue + @search_filetype_filter = [] # oh the humanity! + end + + def update_search_filetype_filter(filetype_filter) + search_filetype_filter = filetype_filter + + filter_history = Base64.encode64(search_filetype_filter.to_plist) + # puts "**" + # puts filter_history + # puts "|**" + + history_command = %Q|defaults write com.macromates.textmate fileTypeString -string #{e_sh filter_history} 2>/dev/null| + %x{#{history_command}} + rescue + end + end end diff --git a/Support/lib/search.rb b/Support/lib/search.rb index 1365f0e..2e662d9 100644 --- a/Support/lib/search.rb +++ b/Support/lib/search.rb @@ -79,6 +79,10 @@ def scrub(content) def prepare_search # TODO: bail if the search term is empty result = plist['result'] + # puts "***" + # puts result + # puts "***" + fileTypes = result['fileTypeString'].split(',') if result['fileTypeString'] options = %w(--group --color --flush) options << '-w' if result['matchWholeWords'] == 1 @@ -87,13 +91,53 @@ def prepare_search options << '-C' if result['showContext'] == 1 options << "--#{result['followSymLinks'] == 1 ? '' : 'no'}follow" options << "--#{result['loadAckRC'] == 1 ? '' : 'no'}env" + if result['fileTypeString'] + fileTypes.each do |f| + f = parse_filters(f) + options << "#{f}" + end + end + # options << " -G '\.css$' " AckInProject.update_search_history result['returnArgument'] AckInProject.update_pbfind result['returnArgument'] + AckInProject.update_search_filetype_filter result['fileTypeString'] || '' %{cd #{e_sh search_directory}; #{e_sh ack} #{options.join(' ')} -- #{e_sh result['returnArgument']}} end + def parse_filters(filter) + if ['ruby', 'shell', 'rake', 'php', 'html', 'xml', 'yaml'].include?(filter) + " --#{filter} " + else + " -G '\.#{filter}' " + end + + # if filter + # if ['rb' ,'rhtml' ,'rjs' ,'rxml' ,'erb' ,'rake' ,'spec', 'ruby'].include?(filter) + # 'ruby' + # elsif ['shell' ,'sh' ,'bash' ,'csh' ,'tcsh' ,'ksh' ,'zsh'].include?(filter) + # 'shell' + # elsif ['Rakefiles' ,'rake'].include?(filter) + # 'rake' + # elsif ['py' ,'python'].include?(filter) + # 'python' + # elsif ['php' ,'phpt' ,'php3' ,'php4' ,'php5' ,'phtml'].include?(filter) + # 'php' + # elsif ['js' ,'javascript'].include?(filter) + # 'js' + # elsif ['htm' ,'html' ,'shtml' ,'xhtml'].include?(filter) + # 'html' + # elsif ['xml' ,'dtd', 'xsl', 'xslt', 'ent'].include?(filter) + # 'xml' + # elsif ['yaml' ,'yml'].include?(filter) + # 'yaml' + # else + # filter + # end + # end + end + def search # tell ack about potential .ackrc files in the project directory ENV['ACKRC'] = File.join(project_directory, '.ackrc') diff --git a/Support/lib/search_dialog.rb b/Support/lib/search_dialog.rb index aef8234..90cd204 100644 --- a/Support/lib/search_dialog.rb +++ b/Support/lib/search_dialog.rb @@ -9,6 +9,7 @@ def show(&block) command = %Q{#{TM_DIALOG} -cm -p #{e_sh params.to_plist} -d #{e_sh defaults.to_plist} #{e_sh nib_file('AckInProjectSearch.nib')}} plist = OSX::PropertyList::load(%x{#{command}}) + # puts plist['result'] if plist['result'] block.call(plist) end @@ -26,8 +27,13 @@ def defaults def params history = AckInProject.search_history + filetype_filter = AckInProject.search_filetype_filter + # puts "***" + # puts filetype_filter + # puts "***" { #'contentHeight' => 168, + 'fileTypeString' => filetype_filter, 'ackExpression' => AckInProject.pbfind, 'ackHistory' => history } diff --git a/Support/nibs/AckInProjectSearch.nib/designable.nib b/Support/nibs/AckInProjectSearch.nib/designable.nib new file mode 100644 index 0000000..3e6aebc --- /dev/null +++ b/Support/nibs/AckInProjectSearch.nib/designable.nib @@ -0,0 +1,1559 @@ + + + + 1060 + 10K549 + 1306 + 1038.36 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 1306 + + + NSUserDefaultsController + NSObjectController + NSComboBoxCell + NSButton + NSButtonCell + NSTextFieldCell + NSBox + NSComboBox + NSMatrix + NSCustomObject + NSCustomView + NSView + NSWindowTemplate + NSTextField + NSDrawer + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + NSObject + + + FirstResponder + + + NSApplication + + + 3 + 2 + {{228, 753}, {501, 225}} + 1886912512 + Ack In Project + NSWindow + + View + + {502, 226} + {501, 225} + + + 256 + + + + 288 + {{405, 14}, {82, 32}} + + + + YES + + 67239424 + 134217728 + Find + + LucidaGrande + 13 + 1044 + + + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 272 + + + + 256 + + + + 264 + {{13, 131}, {75, 17}} + + + + YES + + 67239424 + 272629760 + RXhwcmVzc2lvbgo + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 264 + {{93, 126}, {351, 26}} + + + + YES + + 343014976 + 272630784 + + + + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 10 + YES + + + + 274 + {15, 0} + + + YES + + + + 12 + 10 + 1000 + + 75628032 + 0 + + + LucidaGrande + 12 + 16 + + + 3 + MC4zMzMzMzI5OQA + + + + + 338820672 + 1024 + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 19 + tableViewAction: + -767524864 + + + + 1 + 15 + 0 + YES + 0 + + + + + + -2147483392 + {{91, 103}, {217, 18}} + + + + YES + 1 + 2 + + + -2080244224 + 131072 + Search folder + + LucidaGrande + 11 + 3100 + + + 1211912703 + 0 + + NSRadioButton + + + + + + 200 + 25 + + + 67239424 + 131072 + Search project + + + 1211912703 + 0 + + + + 400 + 75 + + + {100, 18} + {17, 2} + 1143472128 + NSActionCell + + 67239424 + 0 + Radio + + 1211912703 + 0 + + 549453824 + {18, 18} + + + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + 3 + MCAwAA + + + + 400 + 75 + + + + + + + + + 288 + {{90, 81}, {92, 18}} + + + + YES + + 67239424 + 131072 + Literal match + + + 1211912703 + 2 + + NSSwitch + + + + 200 + 25 + + + + + 288 + {{208, 81}, {84, 18}} + + + + YES + + 67239424 + 131072 + Ignore case + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 288 + {{318, 81}, {125, 18}} + + + + YES + + 67239424 + 131072 + Match whole words + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 264 + {{13, 48}, {75, 17}} + + + + YES + + 67239424 + 272629760 + File Types + + + + + + + + + 268 + {{93, 45}, {348, 22}} + + + + YES + + -1804468671 + 272630784 + + + + YES + + + 6 + System + textColor + + + + + + + 268 + {{90, 12}, {169, 17}} + + + + YES + + 68288064 + 272630784 + Seperated by comma (,) + + + + + + + + {{3, 3}, {461, 160}} + + + + + + {{17, 41}, {467, 166}} + + + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 2 + 1 + 0 + NO + + + + 288 + {{323, 14}, {82, 32}} + + + + 1 + YES + + 67239424 + 134217728 + Cancel + + + 1 + -2038284033 + 1 + + + Gw + 200 + 25 + + + + + 288 + {{20, 24}, {13, 13}} + + + + YES + + 67239424 + 0 + + + + -1198636801 + 5 + + + + + + 200 + 25 + + + + + 288 + {{31, 24}, {104, 14}} + + + + YES + + 67239424 + 134348800 + Advanced options + + + -939376385 + 34 + + LucidaGrande + 11 + 16 + + + + + + 200 + 25 + + + + {{7, 11}, {501, 225}} + + + + + {{0, 0}, {1920, 1058}} + {501, 247} + {502, 248} + + + + searchString + performButtonClick + fileTypeString + ignoreCaseBoolean + useExtendedRegularExpressionBoolean + ackExpression + ackLiteral + ackIgnoreCase + ackWholeWords + ackLiteralMatch + ackMatchWholeWords + ackShowContext + ackFollowSymlinks + controller + showAdvanced + searchProject + contentHeight + ackHistory + + YES + + + + YES + + + + {200, 124} + {50, 50} + {600, 400} + 0 + 0.0 + 15 + + + + + + 256 + + + + 288 + {{17, 58}, {94, 18}} + + YES + + 67239424 + 131072 + Show context + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 288 + {{17, 38}, {107, 18}} + + YES + + 67239424 + 131072 + Follow symlinks + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{17, 18}, {159, 18}} + + YES + + 67239424 + 131072 + Load defaults from .ackrc + + + 1211912703 + 2 + + + + 200 + 25 + + + + {194, 94} + + NSView + + NSResponder + + + + + + + contentObject: parameters + + + + + + contentObject: parameters + contentObject + parameters + 2 + + + 8 + + + + performButtonClick: + + + + 90 + + + + enabled: selection.ackExpression + + + + + + enabled: selection.ackExpression + enabled + selection.ackExpression + + NSValueTransformerName + NSIsNotNil + + 2 + + + 100 + + + + value: selection.showAdvanced + + + + + + value: selection.showAdvanced + value + selection.showAdvanced + 2 + + + 169 + + + + parentWindow + + + + 171 + + + + visible: selection.showAdvanced + + + + + + visible: selection.showAdvanced + visible + selection.showAdvanced + + NSNullPlaceholder + + + 2 + + + 173 + + + + performClick: + + + + 177 + + + + contentView + + + + 188 + + + + value: values.ackShowContext + + + + + + value: values.ackShowContext + value + values.ackShowContext + 2 + + + 192 + + + + value: values.ackFollowSymlinks + + + + + + value: values.ackFollowSymlinks + value + values.ackFollowSymlinks + 2 + + + 194 + + + + value: values.ackLoadAckRC + + + + + + value: values.ackLoadAckRC + value + values.ackLoadAckRC + 2 + + + 197 + + + + contentValues: selection.ackHistory + + + + + + contentValues: selection.ackHistory + contentValues + selection.ackHistory + 2 + + + 215 + + + + value: selection.ackExpression + + + + + + value: selection.ackExpression + value + selection.ackExpression + + NSContinuouslyUpdatesValue + + + + 2 + + + 216 + + + + contentHeight: selection.contentHeight + + + + + + contentHeight: selection.contentHeight + contentHeight + selection.contentHeight + + NSNullPlaceholder + + 0 + 1 + NO + YES + 1 + kAAAAAAAAAAAAAAAAAAAAA + + + 2 + + + 226 + + + + value: values.ackLiteralMatch + + + + + + value: values.ackLiteralMatch + value + values.ackLiteralMatch + 2 + + + 228 + + + + value: values.ackIgnoreCase + + + + + + value: values.ackIgnoreCase + value + values.ackIgnoreCase + 2 + + + 230 + + + + value: values.ackMatchWholeWords + + + + + + value: values.ackMatchWholeWords + value + values.ackMatchWholeWords + 2 + + + 232 + + + + value: selection.fileTypeString + + + + + + value: selection.fileTypeString + value + selection.fileTypeString + 2 + + + 306 + + + + argument: selection.ackExpression + + + + + + argument: selection.ackExpression + argument + selection.ackExpression + + NSSelectorName + returnArgument:literalMatch:ignoreCase:matchWholeWords:showContext:followSymLinks:loadAckRC:fileTypeString: + + 2 + + + 323 + + + + argument2: values.ackLiteralMatch + + + + + + argument2: values.ackLiteralMatch + argument2 + values.ackLiteralMatch + + NSSelectorName + returnArgument:literalMatch:ignoreCase:matchWholeWords:showContext:followSymLinks:loadAckRC:fileTypeString: + + + 2 + + + 324 + + + + argument3: values.ackIgnoreCase + + + + + + argument3: values.ackIgnoreCase + argument3 + values.ackIgnoreCase + + NSSelectorName + returnArgument:literalMatch:ignoreCase:matchWholeWords:showContext:followSymLinks:loadAckRC:fileTypeString: + + + 2 + + + 325 + + + + argument4: values.ackMatchWholeWords + + + + + + argument4: values.ackMatchWholeWords + argument4 + values.ackMatchWholeWords + + NSSelectorName + returnArgument:literalMatch:ignoreCase:matchWholeWords:showContext:followSymLinks:loadAckRC:fileTypeString: + + + 2 + + + 326 + + + + argument5: values.ackShowContext + + + + + + argument5: values.ackShowContext + argument5 + values.ackShowContext + + NSSelectorName + returnArgument:literalMatch:ignoreCase:matchWholeWords:showContext:followSymLinks:loadAckRC:fileTypeString: + + + 2 + + + 327 + + + + argument6: values.ackFollowSymlinks + + + + + + argument6: values.ackFollowSymlinks + argument6 + values.ackFollowSymlinks + + NSSelectorName + returnArgument:literalMatch:ignoreCase:matchWholeWords:showContext:followSymLinks:loadAckRC:fileTypeString: + + + 2 + + + 328 + + + + argument7: values.ackLoadAckRC + + + + + + argument7: values.ackLoadAckRC + argument7 + values.ackLoadAckRC + + NSSelectorName + returnArgument:literalMatch:ignoreCase:matchWholeWords:showContext:followSymLinks:loadAckRC:fileTypeString: + + + 2 + + + 329 + + + + argument8: selection.fileTypeString + + + + + + argument8: selection.fileTypeString + argument8 + selection.fileTypeString + + + returnArgument:literalMatch:ignoreCase:matchWholeWords:showContext:followSymLinks:loadAckRC:fileTypeString: + + + 2 + + + 333 + + + + target: selection.controller + + + + + + target: selection.controller + target + selection.controller + + NSSelectorName + returnArgument:literalMatch:ignoreCase:matchWholeWords:showContext:followSymLinks:loadAckRC:fileTypeString: + + + 2 + + + 334 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 5 + + + + + + Window + + + 6 + + + + + + + + + + + + 11 + + + + + + + + 40 + + + + + + + + + + + + + + + + 89 + + + + + + + + 168 + + + + + + + + 176 + + + + + + + + 7 + + + Parameters + + + 120 + + + Shared Defaults + + + 170 + + + AdvancedDrawer + + + 185 + + + + + + + + AdvancedOptions + + + 186 + + + + + + + + 187 + + + + + + + + 195 + + + + + + + + 234 + + + + + 240 + + + + + 241 + + + + + 242 + + + + + 243 + + + + + 244 + + + + + 245 + + + + + -3 + + + Application + + + 43 + + + + + + + + 235 + + + + + 210 + + + + + + + + 236 + + + + + 220 + + + + + + + + + + 246 + + + + + 222 + + + + + 221 + + + + + 223 + + + + + + + + 237 + + + + + 224 + + + + + + + + 238 + + + + + 225 + + + + + + + + 239 + + + + + 247 + + + + + + + + 248 + + + + + 249 + + + + + + + + 250 + + + + + 251 + + + + + + + + 252 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 334 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + 3 + + diff --git a/Support/nibs/AckInProjectSearch.nib/keyedobjects.nib b/Support/nibs/AckInProjectSearch.nib/keyedobjects.nib index 5489a5cceeeafcd472107a4dad4a10025d489481..62b7bb99ee2093c8d3f62d86df5a25674dbb6f0e 100644 GIT binary patch literal 21725 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 Ya?YDda+`rowe%y*R=!*R=PdaD0Q&8jSO5S3 literal 17535 zcma)D2Y3|4+n?ET>B;8O3lP#S^>Y1=P$UEbkxu9>hU5qbNiN=9Ae88=3W$ZGAcBZM zK*a`15fDT`Kt-zb-VvoLO%U?EvwN3B%K!N;&*f%!r~KYJ@65bAtg_7JbZIpE5k?GR z5r=rBKwijqKw^=jc!X`V)zLo@{yA;-ir$GXdu9Jb`>>JLVwbZ}26?h_^geT+I@tgQvyaX@B%kUcf1Kxyp;9v1UdM`!oA1yOZ6|9s%jRgJ!X(*t57hdyYNN{t3TV*sJU<_`S{EVIQ$|IF3V{g7f0M zIVBgug>qriRScKNC2`4|O1jGAOq`jsa4n>(=eSN>K6{RPUb^bR4d4c{SGYmaRS`Fm z8^zw{%A_j?H=dio)o?FKSFdqza&K{Ob5pt5AkR4NeQrK-aSOOl(Ffd8?lZQUTh4vQ zea~&h-2uloZYPYti#q`09^`KDzI;5N&F1ng`Br>uz778z-xfXKbNF_AF5jN-z~?ap z?sh~E`A&R3|2*H7@4>&uui@A7>-g{Z_4qe_1OGk0k^h0;#Bb)e@IUff`EC4m{wMxt z{uh1+|0}+_$K#$_i#2)vX|>xY+7++J@Q6 zY_74n_KFHHaJxe`@!YZ^r_<_`YY*&J(A`$z1haPz>Q>OLsN5=*hjc4&SEEm!?2@*T zI~Xi?;2B%!R?yc51D9F**(yrxW1M{xi|Kf@Lm3A69eO1VCAWerHwE%w5s%?-1TfD5 z2*=nRqo7Tmy~5SCsG_LU>KFk1S*u-8v2VA6UUs`n#Q7qAPsGDSTrA?}MO-A}_eESn z6e6BOyhYqu#GOPuoA3k)mkF~ExUWNcWB?{egj0BgBW!;UwtdKqET{#_?k^K$bqsHXEXqdIEP>2QT*oL(OeXv!O)+=LQc@BaG?kB+N0(+IC*h(0ZNa6*C zB#i8Le4 zeTbjTzA==2N>q);qH$6sWB#9!?B!*j8F$cUW_aoYr=BdzrPUqEJYva#}l7yQ~!@){Te2j0=pYPzZ(_dG@k0`tQO<$I@XP_Xtd7A>sG3tUx~QVqS~5iD00@Cb z5JPA!YlW+m)mA#fML~9gP{i&SD=YYX^ieJP2rZB-#jW5u4oA^g&=l!+FUWZjiIZzD zM)pM@d82&wG5VwyeS$tkMj*jsk`%BTl;mC97vQbjKx9MAj;k!9ZUgw`^gxuK3~YEH z5A!AZsuq2PmeFCto~pH=U!cn{vg}d!gJl%EZQ>iW0<8qy)e{3z9Y(9sw`dJoi`K#8 z@6dX*0sc0E{%%5>(H8WhSc9S+ClaXa6JW8phKf=)-k{m$!mahbf}=7paiUA zbY59esS_MR@1j!hbGg>CGLiy+sXoCtj_3qT()OcmFz^}}ay!fqKcip3GzzMQ(Jq~& zFG1vc@->h)e!O0%&xq6NYBJ)+TXY$5dRQ{;3us4<>0k}HlVlC?r;G}DobeSo+qdz`vPX*wroujJMYg)MBQw9k}~}A6fAa zH%tkb1Evf|8e2wv`>{w3dMb1GH-JS`Ci2pSwb#5b=x}zoFJR9);rsoPny~Hr0qhS zOr9e-g+e&+ozIG@SLdTESX)@w;lJRS)8_?I({4ch) zmJI(K*5h{Q6wU?1m)MH)NS?&jERrkmlI^USN^OT^31}bg1X}SI&IdhEJEa+tbd;5= zGwxE0yWpvu;`SKS#wDa(tVJ|} z={|h8)9Q9{4(o8M17eL1C8boL;OeZU;NK)~*VR_>pB}&gf(k%H?&$)&TMr0SDqM1? zEH^5uZq$f$B@q6@2RwHV(k(uxQYv;I2oeMlYITO1{^N~MGHPlDjyKVJ292gh=5rY? zuf^qVhtS?pG{)*Uj_tS-zla^!iCwq~kH%wgHSl399tS!#9#6nE_$B-@CTIhG1;2`4 zgJ7Urfef#}HMY#!wa7V2;)Q asyH12P6;DW8CA@{`^+S6RcA6jFoVlArYgQ-h0w zVu#gQK`&_gqH5Z{z7F+PaJye`$)$qdqBo>&1eW|j3P^9#i)L%dd!Y2P&XtG7?Ek@f4ijn|4nX6asYo7AjnV z{qR(@5>$Q$_>6u;MRLg+()5Hhy?%>l;#v4Tv+t({4(x@5;}4`6ek9Jr^YKS` z0bYm~;aao>F9w?0K{#f0&_GaPp2VCUcBhSc9H33QrrsPVmbHt{gOb012n7_RK^fhA zX=ksdy^;QsWv?XPkQIX9O$Lx}WfDF{g$r>lTsJ)+L#8nS{tQorzc0}*WFXMgk1Qu& z%hi{o!jJLS_#3;W<9QjzweL>Z@}NR4VWdb|&E+;0R#-<>sTll*CcNU>~lC-BZicqcM8hI9&_mLZYh#7aj1Lw9#xPoHOi3v_^X zn)?2J$Cnr5%W_B{s}67^&t@$vsh|AupZLnh_zJ%2nf~2;lWGly$bk+bT|7;WHzhg# zjc-YE9O*+Q5-@NG5L-|o8mJKUMld6t3FZhYMSK_E!~e*##P_KemE`#VZ^aLxuR3&$ z!T1{}eZ%mKg7KngXaGwUR|={-6**z)=du+Sm4OG4))Z1)=iWBR2j1s`4$yT7I8<<3 z&IY|8<)8+YK7udkLK(67fR?_d41MuYThIxvVa_2P8}Xm`8P!E_q5W(nE?AyL zNg7&JUXfD;3n#17HV&Rio)>(U9QA<`w+FqIm&(B1UiLBaf(x8SZ+VFzExCbprKPmB zw5FzxJJ0UuVh6T^qkIy8+()6%Ok(Vl!AB?@)hQ10lk$z}_) znj~;wD$wDKZwuB+ULm8%i}5)GAt_GS_X0saLJ-`7hlsoiPe&04d6~F~lS~N4%6{Xi z6QMI1IAq2I-i$GmD$?{Qla22(EtytKYo-nJ9MhJ`0bz{851Cx1J^Xb5#&={oG5LT3 zB3+4nlyqQPCz!ph4r(?qQNwg4aU8sa^b61POTf|EhTE(TXq)epT3e~+(s>;i?rB+6 zEwvz(WK4Wc9H1ZVL&nFq9|xtE4%PcP$tsx6pnP2!%yegZK(sWL*hw|$?KmYTK7!?y zdpW`MqRR=qFg~X(^a1Mzw=-b+QcVOeqo*HTi+V4^3}6N>VFot%1uzte!fkJ<)vsFBU!z07d8%?u+ovdx6Meb!@UBl$gM z6jQc{DMLm&ZBd@d!f(_gQ^DBXJ&J_T9tV_qG{!@(i_+U(qc(!=fsb@~+=i_8^3sH< zX2yQPj0Gha=ka$^+>~oCA7+<^rjAB(d!FVp!U;^x5~jw(GZ3-V0_M?rN6Ng+kWU!W z*p-6lJ=IRZ&e0m?73NjuHD)3+38uug%w%u|uY-P0VcuZgL^mZj@D}qnID)BYBr^@B ze;4x(u4QI2vp^AMGw;Kc_apNGSPLCgie|uQyH%Bg4Lj*r)E|I3$v1(APCARhO}aM= zv5U)2F93Uiv|O=DlYrz@>HWt91EPS99*3>ky%vUTlgFJ7nM`JqcgX8xfDf4k6TlR* zkl2;&Q$P*h1rJ*&*(!m9BzZ=FX+W=~GlEWQhIt+0D%m{eqryc%;{s?uoyJJdT%a+v z%wlE<^D%@OdFT}LDP2i0pP_Ti7i1cFi@ZtRAd{4xTJ?lAgf#SP@){g52n{Ka_S)ix z+snX;8*FD8wH@Z0_#BOFJHh_3`^19GF{I=FAPWefWNo5kFf zAgP<(QC?Igfri0mgWTRzcCt_&_K~PPfG$Bq63*;r4loCqL(F032y+zn1A192oz(5o ztr$r~$ou3YvVhD{#{Ga$|M6M~q(R2Ah)+-te3Hy1P37w|%=tx32j(0ZO+Fy=_c0e? zfJ@Bp5dMJ!$j{4z&SCZfhbnCflX>LB?!o*oUAw~J1>z&o|NgM>xbgRY*Z%KQ+OAb_ zaPXTdmFnm8^z<7>qwz*ULc-6nv9WLZ`1rJP_x;~i|GnbF!osS0^yqQ=(@#IGJ9g|? z-9P{QQ+NOV{ko$^kJf$m*=KdVd-p!wtXZ=vXvY7yY5f%+6%{qMs;cVlmMvTA{{8n~ zy0i4eXaD~FbrU8`xSN!eH1;Wdu|P-O$dMy2u3ELK?&{U6b&noBs{cNG_^{6Ny?gg= z-H$*1ST|Qx)Uc()cx_tA9dHS zUzff&ZrqSCQk-Yco~_%pYggUYty?L5Cum!DKNMHu;>C;a(dS2w9H~2f`m|L4!i5WU z7cX9{yL9PN9WB#7PM$m|@qEvoJ#}Av@x?vb7QP%F&!4ZmeEG6O z-<2y@>dUl0`izc4$6K*t#eL{Q-MF6*Km70teNM-vG*LcKdg%A&&70CMy+@x>jAzcA zshcxr&XvddNvx=-*iHMOI4EBzPw(8hBk2y+Au1<&P5Y#Bptwej8nqkx@z4cD6ronD z-`%`<^LQ(P4982Ek!-xcmJEz^7S8LjiIKH!n`p*Shc zv@Vqe)erimWqOZ3dz==y^*=wfe&g@6D+ge?CWgacgt630F4Ghagg78z9cJD4p)yvu z%P=+KVEP{|A%7td!At!t|1ktFOJKhQ_CANWPv+vv z>4}>ZjIaUBYVrx03UCX?*x>F{K(Zljkl_-@r4;06?#)`5i6xX4!~Yj$EMD~tl%K<% z4xk()9~#CL!%5`R&?LIis3bIBQZ!#lQJ|j21ri#qj_&UKznGSZS3d*JGT2}OII!3U z@fDAV8$(YofF272~ZO;V8>PYd_9GdqkeUc?r=U4nZv*jip$ z2HWC;<=ss8-YZS0V287%wQQ+;(gd+1oUL}Rf}La7^?UX~6FZU}g+{VvY&jf)^npW= zpU5_{o%{^PAYEVsW3-%q@~o4Ce(vY)lN;8_R$s&D&biBhw$P_t<9|Mnd7Sy;P1)xZ4)7{F8q(_Dc#x)}g_ zXpgDC1m|NnoTU<+0~F4|dMnjSaI_jg_WyGo%h+kpz;g&VBDszrIawjj>CRSo8mMoP zi(QL0v)@Uej=+930$fMyaRC^rMUtF8m>CeD*4CEx?it1u7Dv2wx4lk-Ib2;ON zJM86g^nB4#468mW5%5#85kAEE?$a^$7k0;Dc8Ba@V0k8I6wy76K@!U=T(tbysUW+H z-OcU+lh}*O*s0_!`GfpUE`vGj`HiIu$QOb5L+oK`k}eoQb7S%=oGyB(?L#h+bF!`- zrMh;EJ^-moV~~X1HIp8AJB7fa8Gy0EpnUO zg%M1JLUY(Wtty9=aby1k+-f+_=6Erno_eHQjW5vkfb5=Cz~FbxE(lk?{S&`2(j3!-F7`zJjd*3mY5l@q#@vjl*-f0Kvg0r{6adW?Ksc3dNN zHo`l=Lq4Q?gg?EChcV$?BxOv5h|xkWiqw&ur(^BKHRYNC);O-YB$Bf<@r@HPBVusV zyo{`wXIy<_WDU7h^|)XIKePc?Lj@126fTXTN)@r!LJpGY6wiWHz-c%wz|wJg8J3id z=Om)&&5p|M4ru^$xnP{18;PAz`B7 zsRz-^U=)Ceh&XK__lk&9NzP-=6P0t5xXFO!bwKhB0VHY>XNWixFxViMk@gABt*?}d z{FsY#X9Ie2@Z>uGK?Hu#UFj)?42&4S&EVdF!QbU(dWHuB(}`FkVy%evGKi*<0X#N% zgMal9JBRy#5<6GK#)aHG5gTae7Y$P`kYKB*0zXzZwofIz@8Hgr_IZl0=N56bfM+qc z1n~5t>}VlkvxqGs&IT|&3x#AiN96Oh#-RT5;6E8g|9Rqp`#JX|h5LnwTP@_i5^+nA z4fi$o4Yz_@$*n@++-kIi`xZ9Vx8OzGTI7OBLS0@2q&S^L>S1;WH0v*E*;)-*haf39 zYfwYVUa4yYy<0)kSKu8HSiGx??d5Pb>FO>B(@}W1aPdaiz2ECLzW2?N>EHue`$*9N zx1QUuh}%G;ec&8q-r8U<8V)puSsjg{=f`x2-NpUDZ34D!2BxhfXGNSN;^#!%7C5%3 zQ1B%FG`KPMidyn!Pxkc__p`gNRkW}6BF>fj`m|7pajQZ@Uk(2H$)5Ibd)+;)rag5O zah}}M7mzFVL{E=7S1F3(4l(DK2@$Z|-2mAm5V_+%>~ySW7C@qdAD#h8a=jo}Bamsa zlAX%TghYxJcoi&xQ-})kG4_)#5Ig3=Das(oI#~muLr<7NcM%)xEbM{Pl>v~G@hNP# z(?e12raV$D?jTHICUfk9yZzvIfO{m~kB$_ESJR9b4@Hz7q4h%ppY8!4EhI&@e zGyy?+zrbA`j6^Q!v|0$ydqZ$5t0CX zkYn&TPZ$k%Jj1zDCL56G0UjtC9OE^Dra-t zK<}tt6rg^fb2A`4V*ttr9qj>YO9HP8^n@1)27#XTk)+xk^@80a4dnTD1r6Q>uMl)Z zL*ZqEKJel}H`E36Z6F$gdb88uZ2?fs>7cMiP$6HcOi~2X1XOhmvB8@J@XEm#_KPBRh}bD&c;%!@#G^$#M#R-39xLK; zA|5Z|2_mi$@k=6pS;R1}iXwhR#IK6@H4#q~@gxyX7V+yMo+9EmMEs_R-xBfLBAzN@ zVDEGh&k*rDB7RrIGeta$%op|wr-YNjr$UL~B^(!0g*vQ21T=T-YUe3qJ^73x|b^!cO5k zS*b3e!UgVAKK_qJN_Ev;h9x0?gTJ|mzbWPM=eLtn>1l=pY!OGH1e5_U1!lvGDLp~6 zO3-k2KD(H`4vUy3To#wj<#D~aN_g38IyakJ0&~|U?ihE8yUo?{3f_nJ=Yx19AI3-W zF?>@#j!yuOkOH1S4L(2z_HTk0x;n#4TiyBod=WpAuj0pn4$K32QrWHG*TXAYd*F4f zQ;JYUxFS*!t%y}LRm3Uc6^V*uMT#O#k)cp4v*D)JQhiY|)oie8G| ziWe0xE2b!BD3&YMDYhuKDz+=uclrdygGX2 zdv*5e>ebz=r&objAFqC11H1-#4e=`UD)K7!vU-(z*}O)1ReQbdHP36g*FmrIUe~=I zdi!}d@z#0gc=z#s!Moghy!RCEncg3IFZN#H{hjv@-kZI5c<=E(;(gltwh!ae)F;Eo z?976MZK8eCo5#XPeJ1pTj<9d@lK1^SR;km(MMq+dlVv?)&`f z^T;>IH`+JWx2bQOZ@h1|uhVy;?`+@Cd{_Ez^xf%u-1nw$ou8jyb3e78#!u&G@H6>Y z{IdO8`E~H?=-0)sn_q$7K)+Fb4!^N}ulP;&o8tGT-&DU3{1*Ey^;_=uwciTA^?uv^ z_WPanyY6?-pY`|m5BG24pX&dde<%O${-yq}`@iEq)BipH_x}uz-kwsDPM&CIQU?ng=8Vqy(e|bPebeU=NrO@LIs+fGGiQ1xyW? z9laut^`~QxDoJIz^#Bg0rvvK0wV&W0%HPW1DgiM1)2lP0xJS5108{` zz|n!#fnwmRffEBK2Tl*18#pg;N#GZO-v@3FycBpfND&kf6crQ`)Fh}`P^X~2K_i03 z1x*ZkKj`zIbwN9Wb_eYZIv8{~=xEUKpff?|f-VHz2>M6hga9E_Xd-kIh6yg=CE+b$ zuJDPlQurQ>>HwJBIpKnENw_ThDO?q<3pa&3!ad=Ba9D6+aAvS6xMgtb;Jo0T!3Dv6 zg8Kyz2p$wXB>0`+kAlAr-VnS!_(1Tv;H$ycgKq}^9eg|ZZty?B4}$*}Qm$71 zqCBWPtURhbt~{wctvsu|r2IR?J46VH4M`0#hqMT38PYoBxsaTYP9c3lhJ}m_868p` zB8E%~`5@%OkdHzZhSY|v4%rg2E##+=y&*?Ku7unUWkLf(V?r&V*`cjM+k`$BniHBE zIw*8{=)BOCp+AS72t5^gCiGnB`Ou4@zlZ)2dL{H~==IQ>p?5+bgmGbtu$ZtWVa>vt zhb4ry2+Ir059=JZC~SS$;jlAd*TU|HbKwc$ZNgs&w}n@Qi{aD5XNAuWpA-H;_=51I z;h%+n5&l*9ittt8--fRZ|1Nw(_{Q)};akGDh3^VK6n-@Pc=*W(uZZx7ga~znDIzzb zSHzHr5fLLJ$|7Eja7MTyMn{Z~sEL>xF)w0%#Da)L5sM?1My!k27_lj0OT?at;}It# zE=BwmsfbiXrbebmW=3X3Y9e)!=E&^G?vXts3nKeO_KU2H92@ykKfHQsy1p_)Y_;Yqjp6dj5-^2GukIQ zB03{l9j%GhMH`|`(dOtD(JiA}M?V*x6P*{`Df;>7F429W%cDm}kB_d2emPoSVqLK{u`^@ei+w+Sc)UG+bo`X~neiXS zFN$9lzcPMx{Koig@w?&=#h;G98hHqO&Fh0 zlkjqam@qBj{e-y*^AeUMY)<$wVOzpa2|p+7NZ6ThJ~1jWCb3Ckv&80!35iLGsziNa zkHlVyy%YN;_DdX)I4IGX_-W#2iC-jsmAE|do5Yogs}p}oJe_zs@kWw&QczMxk~&F~ zq)Rd+nUb=TIwti=>X-CFk}b)e^j6Z;r0GfTB)yw7D`|GpvZV7#7n6QZ`XlK|(zT=; zN&h50NP3veB!?v@C#NK*CF_%o$z77I$(70DlV3}ok~}YYY4SJ8Ym@gR-%S2H`F8T% zF+M_z8I-)wJI-xqH`d9TR1*I@4Yzm*^mC`h&Af-=Azmx$fgHnd1 z6s8oVRHVF_@^;F!lo=`Sq|8itFXgM0b14^6E~Q*f`7`Be%Jr0+scdRoYJ6&9YI3S7 zH7zwGRh^obIzF`~_2pDC_0`mgsgqNuq%KKambxZ&UFw$9UsI2yUPxooxHLtYcbadS ze_CK#Oqx0^D@~iGPivKyo7N$%V_JS%=d|8wgVIK)%}V<+?U%G)({`opN!ypUKkZ=J zz4VZDO}Z}KkZwx1q-UqMN*|DJPoJLtPWsIB_tM`_pPN1}eSZ4p^d0Gk(~qT}NI#u^ zHvN41-x<9!#$>#mF)d?8#=9A_GG=GY$@n1S!;DQCJ2K8^+|0O@aW~_B#=jYlG7~bB zGF6#rnVFfIOns&?)0{aVvp92H=H$#bGT+Xep80O(tju+p>oYfIZqD4A`BUbO%$=FL zGw-O8I#!*k&QNEmb!wy9tRAc$sxDHOs7uu&)#Ylt`bG6j^?dc`>aWyat5>SORj*Z_ zRG(I#Q(shHR$ozHSKn0sofVapkfq7eXPL5EWVOm_lU1B$%^Hz4Dyt&v#Vl9W=&b6j zIa#$?%d=KwtYv0hmrJbt%R=ZbwQhP>wUVBOVhxUrjM;EC})M<3tx;$M^U5U=B z8=OnYyoaD|D-MYjx{&-|K$Roz^|n)#({MulLsb>izX;`i}a1eHVRqeJ_1) zeP8`p{VVzv`c?XG^=tLt={M*%>Nn}P=(p;(>wnho(C^gm*6-E-raz!Rq(7oRraz%S zr9Y!Tr@vxoVrXV)Zb&dB8B~T;L%Jc;kY&&s^ai8BY-nLA!|<+QmSMJGj^P8thlY;~3k|h~C5BH7OAVhJzBDW| ztT9|L{BHQuaLsVjaLaJlaNqFIh>WaJVe~Qj8-t8WW0*107-MW|Y;H_6CL6WJmc~3| zA7i0$l(E`4(KyXG*SOHQ!noDA$9U9u!FbJh-FVY@-}u1z(4;VpGF6x=O%9XGG}=^c z8fThdddVc3UNcQHy>5EL^tNf5X@==t(=5|$(_GU$(|prHQ>|%<=@ZjZ)90oyP0LJQ zn^u@snZ7lxHLW*&Z`x$qV%lc<$@GiqSJN)jUekWlA=44lG1GZ-zPXFJySbOSkGa2j zka?)N$XsGBHIFoxn=8#u^Jw!}^91wD=2y%U&99r^G*30pFwZp4HqSMGXkK8hHGgbg zYW~8!%>0dcm3fW%JM;JEP39lX+s(h2cbfN@e={F6A2A;{pERE~pEaL1Uo`)2{=rH7@LWsqgCWvHdpQYIyXAO?<^>4*PI K{`LH~jQ>A)jKbRh From 169dec06c345f0f690d9ee671eee1f15f6c14161 Mon Sep 17 00:00:00 2001 From: Jerry Huo Date: Wed, 7 Mar 2012 16:21:01 +0800 Subject: [PATCH 2/6] add comments. remove debug traces --- Support/environment.rb | 11 ++++------- Support/lib/search.rb | 34 +++++----------------------------- Support/lib/search_dialog.rb | 7 ++----- 3 files changed, 11 insertions(+), 41 deletions(-) diff --git a/Support/environment.rb b/Support/environment.rb index 53087be..05e3808 100644 --- a/Support/environment.rb +++ b/Support/environment.rb @@ -130,28 +130,25 @@ def update_pbfind(search) IO.popen('pbcopy -pboard find', 'w') {|pbcopy| pbcopy.write @pbfind} end + # read file type filter def search_filetype_filter unless @search_filetype_filter filetype_filter_command = "defaults read com.macromates.textmate fileTypeString 2>/dev/null" @search_filetype_filter = OSX::PropertyList::load(Base64.decode64(%x{#{filetype_filter_command}})) end - # puts "**" - # puts @search_filetype_filter - # puts "|**" + @search_filetype_filter rescue @search_filetype_filter = [] # oh the humanity! end + # update file type filter def update_search_filetype_filter(filetype_filter) search_filetype_filter = filetype_filter - + filter_history = Base64.encode64(search_filetype_filter.to_plist) - # puts "**" - # puts filter_history - # puts "|**" history_command = %Q|defaults write com.macromates.textmate fileTypeString -string #{e_sh filter_history} 2>/dev/null| %x{#{history_command}} diff --git a/Support/lib/search.rb b/Support/lib/search.rb index 2e662d9..396cd2b 100644 --- a/Support/lib/search.rb +++ b/Support/lib/search.rb @@ -79,9 +79,6 @@ def scrub(content) def prepare_search # TODO: bail if the search term is empty result = plist['result'] - # puts "***" - # puts result - # puts "***" fileTypes = result['fileTypeString'].split(',') if result['fileTypeString'] options = %w(--group --color --flush) @@ -91,13 +88,14 @@ def prepare_search options << '-C' if result['showContext'] == 1 options << "--#{result['followSymLinks'] == 1 ? '' : 'no'}follow" options << "--#{result['loadAckRC'] == 1 ? '' : 'no'}env" + + # add file type filters if result['fileTypeString'] fileTypes.each do |f| f = parse_filters(f) options << "#{f}" end end - # options << " -G '\.css$' " AckInProject.update_search_history result['returnArgument'] AckInProject.update_pbfind result['returnArgument'] @@ -106,36 +104,14 @@ def prepare_search %{cd #{e_sh search_directory}; #{e_sh ack} #{options.join(' ')} -- #{e_sh result['returnArgument']}} end + # check to see it's a big filter or small filter + # TODO: add more types support def parse_filters(filter) if ['ruby', 'shell', 'rake', 'php', 'html', 'xml', 'yaml'].include?(filter) " --#{filter} " else " -G '\.#{filter}' " - end - - # if filter - # if ['rb' ,'rhtml' ,'rjs' ,'rxml' ,'erb' ,'rake' ,'spec', 'ruby'].include?(filter) - # 'ruby' - # elsif ['shell' ,'sh' ,'bash' ,'csh' ,'tcsh' ,'ksh' ,'zsh'].include?(filter) - # 'shell' - # elsif ['Rakefiles' ,'rake'].include?(filter) - # 'rake' - # elsif ['py' ,'python'].include?(filter) - # 'python' - # elsif ['php' ,'phpt' ,'php3' ,'php4' ,'php5' ,'phtml'].include?(filter) - # 'php' - # elsif ['js' ,'javascript'].include?(filter) - # 'js' - # elsif ['htm' ,'html' ,'shtml' ,'xhtml'].include?(filter) - # 'html' - # elsif ['xml' ,'dtd', 'xsl', 'xslt', 'ent'].include?(filter) - # 'xml' - # elsif ['yaml' ,'yml'].include?(filter) - # 'yaml' - # else - # filter - # end - # end + end end def search diff --git a/Support/lib/search_dialog.rb b/Support/lib/search_dialog.rb index 90cd204..3e78815 100644 --- a/Support/lib/search_dialog.rb +++ b/Support/lib/search_dialog.rb @@ -9,7 +9,7 @@ def show(&block) command = %Q{#{TM_DIALOG} -cm -p #{e_sh params.to_plist} -d #{e_sh defaults.to_plist} #{e_sh nib_file('AckInProjectSearch.nib')}} plist = OSX::PropertyList::load(%x{#{command}}) - # puts plist['result'] + if plist['result'] block.call(plist) end @@ -28,11 +28,8 @@ def defaults def params history = AckInProject.search_history filetype_filter = AckInProject.search_filetype_filter - # puts "***" - # puts filetype_filter - # puts "***" { - #'contentHeight' => 168, + #'contentHeight' => 150, 'fileTypeString' => filetype_filter, 'ackExpression' => AckInProject.pbfind, 'ackHistory' => history From d15c11940897cc158a0547c71d1d4db82253c2b1 Mon Sep 17 00:00:00 2001 From: Jerry Huo Date: Wed, 7 Mar 2012 16:33:23 +0800 Subject: [PATCH 3/6] new branch --- .../nibs/AckInProjectSearch.nib/classes.nib | 7 ------ Support/nibs/AckInProjectSearch.nib/info.nib | 22 ------------------- 2 files changed, 29 deletions(-) delete mode 100644 Support/nibs/AckInProjectSearch.nib/classes.nib delete mode 100644 Support/nibs/AckInProjectSearch.nib/info.nib diff --git a/Support/nibs/AckInProjectSearch.nib/classes.nib b/Support/nibs/AckInProjectSearch.nib/classes.nib deleted file mode 100644 index a731b33..0000000 --- a/Support/nibs/AckInProjectSearch.nib/classes.nib +++ /dev/null @@ -1,7 +0,0 @@ -{ - IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - {ACTIONS = {performButtonClick = id; }; CLASS = NSObject; LANGUAGE = ObjC; } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/Support/nibs/AckInProjectSearch.nib/info.nib b/Support/nibs/AckInProjectSearch.nib/info.nib deleted file mode 100644 index 97c8dd1..0000000 --- a/Support/nibs/AckInProjectSearch.nib/info.nib +++ /dev/null @@ -1,22 +0,0 @@ - - - - - IBDocumentLocation - 425 98 703 386 0 0 1680 1028 - IBEditorPositions - - 185 - 756 617 214 136 0 0 1680 1028 - - IBFramework Version - 443.0 - IBOpenObjects - - 5 - 185 - - IBSystem Version - 8S2167 - - From e694ecdaf584615a0cc20ae1cfd2851aca001393 Mon Sep 17 00:00:00 2001 From: Jerry Huo Date: Wed, 7 Mar 2012 18:03:40 +0800 Subject: [PATCH 4/6] Fix multi filter bug --- Support/lib/search.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Support/lib/search.rb b/Support/lib/search.rb index 396cd2b..cceefc9 100644 --- a/Support/lib/search.rb +++ b/Support/lib/search.rb @@ -4,7 +4,7 @@ class AckInProject::Search include AckInProject::Environment AckInProject::Environment.ghetto_include %w(escape), binding - attr_accessor :plist, :current_file, :lines_matched, :files_matched + attr_accessor :plist, :current_file, :lines_matched, :files_matched, :filter def initialize(plist) self.plist = plist; @@ -90,12 +90,16 @@ def prepare_search options << "--#{result['loadAckRC'] == 1 ? '' : 'no'}env" # add file type filters + + self.filter = "" if result['fileTypeString'] fileTypes.each do |f| f = parse_filters(f) - options << "#{f}" + options << "#{f}" if f end end + puts self.filter + options << "-G #{self.filter}" if self.filter AckInProject.update_search_history result['returnArgument'] AckInProject.update_pbfind result['returnArgument'] @@ -110,7 +114,7 @@ def parse_filters(filter) if ['ruby', 'shell', 'rake', 'php', 'html', 'xml', 'yaml'].include?(filter) " --#{filter} " else - " -G '\.#{filter}' " + self.filter << "\.#{filter}$|" end end From eae7e65922edf799e59592f8b9649590706b18eb Mon Sep 17 00:00:00 2001 From: Jerry Huo Date: Thu, 8 Mar 2012 13:58:48 +0800 Subject: [PATCH 5/6] support only small filters --- Support/lib/search.rb | 18 ++++++++-------- .../AckInProjectSearch.nib/designable.nib | 20 ++++++++++++++++-- .../AckInProjectSearch.nib/keyedobjects.nib | Bin 21725 -> 20775 bytes 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Support/lib/search.rb b/Support/lib/search.rb index cceefc9..075d178 100644 --- a/Support/lib/search.rb +++ b/Support/lib/search.rb @@ -89,17 +89,16 @@ def prepare_search options << "--#{result['followSymLinks'] == 1 ? '' : 'no'}follow" options << "--#{result['loadAckRC'] == 1 ? '' : 'no'}env" - # add file type filters - + # add file type filters self.filter = "" if result['fileTypeString'] fileTypes.each do |f| f = parse_filters(f) - options << "#{f}" if f + # options << "#{f}" if f != self.filter end end - puts self.filter - options << "-G #{self.filter}" if self.filter + + options << "-G '#{self.filter[0..self.filter.length-2]}'" if self.filter != "" AckInProject.update_search_history result['returnArgument'] AckInProject.update_pbfind result['returnArgument'] @@ -109,13 +108,14 @@ def prepare_search end # check to see it's a big filter or small filter + # update: only support small filter # TODO: add more types support def parse_filters(filter) - if ['ruby', 'shell', 'rake', 'php', 'html', 'xml', 'yaml'].include?(filter) - " --#{filter} " - else + # if ['ruby', 'shell', 'rake', 'php', 'html', 'xml', 'yaml'].include?(filter) + # " --#{filter} " + # else self.filter << "\.#{filter}$|" - end + # end end def search diff --git a/Support/nibs/AckInProjectSearch.nib/designable.nib b/Support/nibs/AckInProjectSearch.nib/designable.nib index 3e6aebc..0b46d78 100644 --- a/Support/nibs/AckInProjectSearch.nib/designable.nib +++ b/Support/nibs/AckInProjectSearch.nib/designable.nib @@ -627,7 +627,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - + 256 @@ -695,6 +695,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {194, 94} + NSView @@ -1205,11 +1206,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 6 - + @@ -1489,6 +1490,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1521,8 +1523,22 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin diff --git a/Support/nibs/AckInProjectSearch.nib/keyedobjects.nib b/Support/nibs/AckInProjectSearch.nib/keyedobjects.nib index 62b7bb99ee2093c8d3f62d86df5a25674dbb6f0e..4f9ace483f7ccc006b7dca554151594e0561d1a0 100644 GIT binary patch delta 12760 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 From 1d1351902a3776b6abdc2f8e960688f8daf381ae Mon Sep 17 00:00:00 2001 From: Jerry Huo Date: Thu, 8 Mar 2012 17:25:40 +0800 Subject: [PATCH 6/6] strip spaces of filter add \\. for regex of file extension. --- Support/lib/search.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Support/lib/search.rb b/Support/lib/search.rb index 075d178..5b048d1 100644 --- a/Support/lib/search.rb +++ b/Support/lib/search.rb @@ -93,11 +93,12 @@ def prepare_search self.filter = "" if result['fileTypeString'] fileTypes.each do |f| + f = f.gsub(/\s+/, "") f = parse_filters(f) # options << "#{f}" if f != self.filter end end - + options << "-G '#{self.filter[0..self.filter.length-2]}'" if self.filter != "" AckInProject.update_search_history result['returnArgument'] @@ -114,7 +115,7 @@ def parse_filters(filter) # if ['ruby', 'shell', 'rake', 'php', 'html', 'xml', 'yaml'].include?(filter) # " --#{filter} " # else - self.filter << "\.#{filter}$|" + self.filter << "\\.#{filter}$|" # end end