From: Fabrizio, D. J. <Dante.Fabrizio@InterDigital.com> - 2001-03-30 15:59:48
|
Hi , I just downloaded the archive and this macro still doesn't work. The macro error dialog comes up saying the search for xxx failed I have modified doIt() in Find_occurrence.bsh but this still doesn't work. See below ** marks the changes. The idea is to set the caret position to 0 then keep doing searches and mark positions until it finds the currently selected word. Then use the previously marked position. What is the best way to debug macros? Thanks, Dan void doIt() { if(buffer.getLength() < 2) { Macros.message(view, "Nothing to search."); return; } if( !findSearchText()) return; text = textArea.getSelectedText(); searchType = jEdit.getProperty("temp.findXXX.type"); if( searchType == null) searchType = "next"; // Find_first_occurrence - set caret to beginning of buffer ** if(searchType.equals("first") || searchType.equals("last")) textArea.setCaretPosition(0); // make sure you are searching for the full word searchText = makeModeWordRE(text); ignoreCase = SearchAndReplace.getIgnoreCase(); regexp = SearchAndReplace.getRegexp(); SearchAndReplace.setSearchString(searchText ); SearchAndReplace.setReplaceString(""); SearchAndReplace.setIgnoreCase(false); SearchAndReplace.setRegexp(true); SearchAndReplace.setSearchFileSet(new CurrentBufferSet()); matches = 0; newPos = 0; lastPos = 0; searchResult = true; // Find_last_occurrence - search until failure, // else do a single search if(!searchType.equals("last")) matches = SearchAndReplace.find(view) ? 1 : 0; else { ** while( newPos < startPos ) { searchResult = SearchAndReplace.find(view); newPos = textArea.getMarkPosition(); matches++; if ( newPos < startPos ) lastPos = newPos; } } if(matches == 0) { resetAfterFailure(); Macros.error(view, "The search for " + text + " failed."); } else { // search succeeded; now do a second search so that only // the search term is highlighted ** if(!searchType.equals("last")) { newPos = textArea.getMarkPosition(); textArea.setCaretPosition(newPos); SearchAndReplace.setSearchString(text); SearchAndReplace.setRegexp(false); SearchAndReplace.find(view); } else { newPos = lastPos; textArea.setCaretPosition(lastPos); //textArea.selectWord(); } } // cleanup: reset changed flags in SearchAndReplace dialog SearchAndReplace.setIgnoreCase(ignoreCase); SearchAndReplace.setRegexp(regexp); // reset find flag jEdit.setTemporaryProperty("temp.findXXX.type", ""); } -----Original Message----- From: John Gellene [SMTP:jge...@ny...] Sent: Thursday, March 29, 2001 5:41 PM To: jed...@li... Subject: RE: [ jEdit-users ] Find_next_occurence.bsh Strange, the global version works fine for me. Did you hack the stand-alone version? There are two changes to make, search "last" in the Macro Archive version to see them. What behavior are you getting? John > > The Find_last macro still is working. > > I will try to find a fix. > > Dan -- ----------------------------------------------- jEdit Users' List jEd...@li... http://lists.sourceforge.net/lists/listinfo/jedit-users |