#!/usr/bin/ruby require 'jcode' $KCODE = 'e' # XXX require 'filter.rb' require 'screen.rb' # XXX @filters = Array.new() @filters << DiaryFilter.new() @filters << PureFilter.new() def search_filter(url) @filters.each{ |filter| return filter if filter.match(url) } return nil end def normalize_for_search(str) return str.sub(/^[ \t・_=□]+/, '') end def normalize_url(url) result = url result.sub!(/#.*$/, '') result.sub!(/\?.*$/, '') return result end if Screen.check_inscreen == nil then exit end url = normalize_url(Screen.get_register(".")) u = search_filter(url) if u == nil then Screen.put_to_errorbuf("no apropriate filter found for '#{url}'\n") else lhs = Screen.get_lhs_of_line line = Screen.get_line if u.search(url, line, lhs.jlength) then Screen.invoke_elisp("(find-file \"#{u.path}\")") Screen.invoke_elisp("(goto-char (point-min))") Screen.invokeat(TITLE_EMACS, "stuff ''") Screen.paste(TITLE_EMACS, normalize_for_search(line)) end end Screen.select_window(TITLE_EMACS)