Forum Replies Created
- AuthorPosts
- spirosParticipant
Basically, I want to adapt (.*?) in a way that it will match anything, but it will stop matching if the character < or > appears. Does that make it simpler?
What I tried was
((?!<).*?)spirosParticipantIt is in Find, but not in Replace (so one cannot enter a replacement to be run when extracting). On the other hand, on the standard Replace dialog, Extract also appears in Replace.
spirosParticipantspirosParticipantAnother point, whenever one clicks the Fuzzy option the options dialog opens, even if one has already set options there.
spirosParticipantA bug: in the Find dialog, when “Regular expressions” is selected, Fuzzy matching is not checkable.
spirosParticipantI think that a good way of handling these is providing an extra option for German variants as it is German-specific (and strictly speaking these are not versions of the same character with or without diacritics).
ä ae, Ae
Ä ae, Ae
ö oe, Oe
Ö oe, Oe
ü ue, Ue
Ü ue, Ue
ß ssspirosParticipantIgnore nonspacing combining characters, such as diacritics, dakuten, and handakuten
spirosParticipantI think we should make a note that ß should be considered equivalent to ss when diacritics-insensitive option is checked.
spirosParticipant1. Great, got it. Perhaps it could be made more intuitive or some context-sensitive help added? Also, when adding the character, in order to be entered as a fuzzy match condition, one needs to click the OK button of the Character range dialog. Perhaps, an extra button near the “Treat as” like Add or Save?
2. I mean that once making Fuzzy match settings in Find/Replace dialog, these did not seem to apply in Filter. So one had to click the Fuzzy button in Filter to change them. Now that I check again, it seems that they are actually the same. So problem solved.
spirosParticipantEmura-san, when I read this reply I immediately thought of an option to add characters which will be considered equal to another character. After install, I see that something like this you have already done. Congratulations! Truly amazing feature and I think it is unique in text editors, you should point it out in a advertizing material.
I am not clear yet if I can do what I started to describe. For example, when I search and the search string contains the character “κ” I also want it to look for matches for character “χ”. I.e. if I search for οικιστας I also want it to find οἰχιστάς (when diacritics-insensitive is on apparently). How can I add this condition? In the Add dialog I see minimum and maximum character and when I add something in the Treat as, it is copied automatically in Ignore.
Another point, it seems that when one selects options at regex level, these do not apply to filter. Not sure what is the best way here, but it would be good if there was an option to link those two (I.e. changing options in regex-level, automatically applies same options in filter and vice versa).
spirosParticipantSimilarity was left at the default, now that I changed to 100% it is much faster. I guess the same settings are applied at the filter level?
spirosParticipantThe only issue I can see so far is speed. Not sure if it could be made faster. I guess some sort of complex regex runs in the background.
spirosParticipantI just saw this, I can confirm that it works great for Greek and Ancient Greek. Thank you so much, this is an amazing feature for me.
spirosParticipantOh, magic! Thank you so much for this.
spirosParticipantYes, it works for me too! But there is no way to define in Find which specific characters to search instead of the whole text?
spirosParticipantIt is a cool regex feature and is already implemented in Notepad++. Would be great to see it in EmEditor too!
spirosParticipantThanks! Yes, I know batch replace and use it. However, I want to be able to use a conditional regex one liner instead of multiple find replace (even if used in a macro).
If I add else{“Nothing change!”;} at the end All found character will be changed to “nothing change!”. I don’t know the reason.
Apparently some sort of command should be passed to tell it to do nothing since this is JavaScript, i.e. something like null.
spirosParticipantThanks! That works. But what if I do not want an else statement at the end? Simple omitting it does nothing. For example.
Test text: прика́з, кома́нда, повеле́ние, нака́з, приказа́ние, распоряже́ние
Find: [о́а́е́и́у́ю́ы́я́]
Replace: \J if(“\0″==”о́”){“о”;}else if(“\0″==”а́”){“а”;}else if(“\0″==”е́”){“е”;}else if(“\0″==”и́”){“и”;}else if(“\0″==”у́”){“у”;}else if(“\0″==”ю́”){“ю”;}else if(“\0″==”ы́”){“ы”;}else if(“\0″==”я́”){“я”;}Expected result: приказ, команда, повеление, наказ, приказание, распоряжение
spirosParticipantInteresting! I tried
Search: [A|B|C|D]
Replace: \J if(\0==A){“alpha”;}else if(\0==B){“beta”;}else{“three”;}And I got “A is undefined”
spirosParticipantThanks, I know that page. Since EmEditor uses BoostRegex here are the references
https://www.boost.org/doc/libs/1_48_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html#boost_regex.format.boost_format_syntax.conditionalsAnd from the page you quote:
If sub-expression N was matched, then true_expression is evaluated and sent to output, otherwise false_expression is evaluated and sent to output. For example, (?1foo:bar) will replace each match found with foo if the sub-expression \1 was matched, and with bar otherwise. Alternatively, you can write the expression in this form: (?{1}foo:bar)
But I still cannot figure out the syntax for the replacement as described.
spirosParticipantI think I got it
document.selection.Find("Latin: (.*?);",eeFindNext | eeFindReplaceRegExp | eeFindMatchDotNL | eeFindSelectAll,0); document.selection.Replace("ā","a",eeFindReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp | eeFindMatchDotNL,0);
spirosParticipantOf course, I fully agree; but in this case vertical paste happens in normal mode (not CSV).
As far as features, I understand different people have different opinions. I think that software developers should focus on what is useful (and logical) for most people. Some developers—not very many—like you go the extra mile and provide very specialized features like this vertical type paste following user demands -:)
This, however, has the potential side-effect of unexpected behavior for the average user, hence, my insistence on describing this functionality.
spirosParticipantI believe the current behavior (vertical selection paste) was requested by a user
Ah, OK. Now I understand why this is so idiosyncratic — it was made to order :)
In any way, vertical selection paste can be a slight misnomer, as there needs to be no vertical selection before the paste. So I think it is a kind of implicit vertical paste (without vertical selection).
I think yes, it can be useful in such a scenario, but I think it makes sense that paste behaves the same way as a default irrespective of whether it is paste from standard copy or from multiple selection. Don’t you think so? I mean, in the current scenario, it is a much more complicated implementation (programmatically) than the standard paste. Having the option to have a non vertical paste would be quite simple to implement -:)
Of course, this is up to you -:)
spirosParticipantWell, as it is obvious from your example, pasting after multiple selection is radically different from pasting from standard selection, which, apart from not being used as such in any other tool I know, and requiring a convoluted way (as you described with pasting in another document) in order to result in a standard paste, it is confusing to the user as it mixes the pasted text with already existing text. Is there any practicality in this? No, in my opinion.
Since you already have an option (“Always insert newlines when copying multiple selections”), which I was not aware off, and thank you for mentioning it, then perhaps you could adapt it so that it does what it actually describes (I.e. “insert newlines” instead of “merge existing text below with pasted text”). If the current behaviour is desired by you or someone else (I cannot think of why), then it could simply be an extra option at that menu:
1. Always insert newlines when copying multiple selections (without merging) [proposed default]
2. Always insert newlines when copying multiple selections (with merging) [current behaviour]Does that make sense to you?
spirosParticipantIf you paste the multi selection strings (bold words in Text 1) in the line before the Text 2 (the line starting with 1) then the expected result should be:
should
behaviour
selection
basis
1
2
3
4
5Currently, the result is:
should
behaviour1
selection2
basis3
4
5 - AuthorPosts