jed-users mailing list

[2008 Date Index] [2008 Thread Index] [Other years]
[Thread Prev] [Thread Next]      [Date Prev] [Date Next]

confine search to visible lines


Dear jed-users,

the patch below defines two functions 

 search_forward_visible()
 search_backward_visible()

that search only in visible text (skipping hidden lines).


Alternatively, a new global variable 

  SEARCH_SKIP_HIDDEN 

or

  SEARCH_VISIBLE  
  
could be used to implement this feature.

Comparing these 2 approaches, I spotted these (dis)advantages:

separate *_visible() functions:

 + can be bound to a separate key easily for fast acces to either
   visible-only or all-including searches
   
 - new functions needed for every type of search (incremental, standard,
   regexp, pcre-regexp, replace, re-replace)
   
new toggeling variable:

 + easier implementation, less code duplication
   (the search_generic_search() functions provides
   for a "match_ok" function) 

 - parallel bindings for visible-only and all-including searches would
   need a wrapper function that changes and resets the SEARCH_VISIBLE
   variable
     

Which interface would you prefer? (I'd tend towards the SEARCH_VISIBLE
variable)


Günter


--- /usr/share/jed/lib/search.sl	2008-04-22 14:43:08.000000000 +0200
+++ /home/milde/.jed/lib/search.sl	2008-05-21 23:26:25.000000000 +0200
@@ -90,6 +90,25 @@
    search_generic_search ("Search backward:", -1, &_function_return_1);
 }
 
+% this should go to srchmisc.sl
+% a match_ok_fun for search_maybe_again():
+%  no arguments, return 1 if match is OK
+private define is_line_visible() 
+{
+   return not(is_line_hidden ());
+}
+
+% search forward (ask for pattern, skip hidden matches)
+define search_forward_visible ()
+{
+   search_generic_search ("Search forward:", 1, &is_line_visible);
+}
+
+% search backward (ask for pattern, skip hidden matches)
+define search_backward_visible ()
+{   
+   search_generic_search ("Search backward:", -1, &is_line_visible);
+}
 
 define replace_do_replace (str, len)
 {


--------------------------
To unsubscribe send email to <jed-users-request@xxxxxxxxxxx> with
the word "unsubscribe" in the message body.
Need help? Email <jed-users-owner@xxxxxxxxxxx>.


[2008 date index] [2008 thread index]
[Thread Prev] [Thread Next]      [Date Prev] [Date Next]