diff --git a/apps/files_textviewer/js/textviewer.js b/apps/files_textviewer/js/textviewer.js
index d650c44d5ab0ef89721a7afdacdf53944287dfa0..b1a564df9bb4693c8704e4a86e3da2b030ae5003 100644
--- a/apps/files_textviewer/js/textviewer.js
+++ b/apps/files_textviewer/js/textviewer.js
@@ -116,4 +116,16 @@ $(document).ready(function() {
 		});
 		FileActions.setDefault('application/xml','View');
 	}
+	OC.search.customResults.Text=function(row,item){
+		var text=item.link.substr(item.link.indexOf('file=')+5);
+		var a=row.find('a');
+		a.data('file',text);
+		a.attr('href','#');
+		a.click(function(){
+			var file=$(this).data('file');
+			var text=file.split('/').pop();
+			var dir=file.substr(0,file.length-file.length-1);
+			TextViewer.showText(dir,text);
+		});
+	}
 });
diff --git a/lib/search/provider/file.php b/lib/search/provider/file.php
index f3d235abdce48859f1043ec7b90bd97987865baf..5fd35fa3e523416bba7d2eb647297b2845a185b5 100644
--- a/lib/search/provider/file.php
+++ b/lib/search/provider/file.php
@@ -13,11 +13,18 @@ class OC_Search_Provider_File extends OC_Search_Provider{
 				switch($mimeBase){
 					case 'audio':
 						break;
+					case 'text':
+						$results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php?file='.$file ),'Text');
+						break;
 					case 'image':
 						$results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php?file='.$file ),'Images');
 						break;
 					default:
-						$results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php?file='.$file ),'Files');
+						if($mime=='application/xml'){
+							$results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php?file='.$file ),'Text');
+						}else{
+							$results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php?file='.$file ),'Files');
+						}
 				}
 			}
 		}