Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ed: search forward starting from next line #415

Merged
merged 1 commit into from
Jan 25, 2024

Conversation

mknos
Copy link
Contributor

@mknos mknos commented Jan 25, 2024

  • Problem1: If a search failed, ed was incorrectly raising Invalid Address error
  • We want to agree with GNU ed, and raise a No Match error in this case
  • The abstraction is kind of broken because sub-commands are usually called after edParse() returns
  • In the case of edSearchForward() and edSearchBackward(), it is called by edParse()->edCalculateLine()
  • Designate CalculateLine() return value -1 as match error, and teach edParse() to handle this
  • Test1: search for non-existent pattern in script "awk": "?sdfsklfjhsdffd" and "/sd234234234"
  • Future work: move search code out of CalculateLine()?
  • Problem2: edSearchForwards() is supposed to start searching from currentLine+1, not currentLine (found when testing against GNU ed)
  • Test2: Jump to line 1 of script "awk" then search forwards for pattern "perl"
perl ed -p '>>> ' awk
4595
>>> 1
#!/usr/bin/perl
>>> /perl
Author: Tom Christiansen, tchrist@perl.com
>>> n
7	Author: Tom Christiansen, tchrist@perl.com
>>> q

* Problem1: If a search failed, ed was incorrectly raising Invalid Address error
* We want to agree with GNU ed, and raise a No Match error in this case
* The abstraction is kind of broken because sub-commands are usually called after edParse() returns
* In the case of edSearchForward() and edSearchBackward(), it is called by edParse()->edCalculateLine()
* Designate CalculateLine() return value -1 as match error, and teach edParse() to handle this
* Test1: search for non-existent pattern in script "awk": "?sdfsklfjhsdffd" and "/sd234234234"
* Future work: move search code out of CalculateLine()?
* Problem2: edSearchForwards() is supposed to start searching from currentLine+1, not currentLine (found when testing against GNU ed)
* Test2: Jump to line 1 of script "awk" then search forwards for pattern "perl"

perl ed -p '>>> ' awk
4595
>>> 1
#!/usr/bin/perl
>>> /perl
Author: Tom Christiansen, tchrist@perl.com
>>> n
7	Author: Tom Christiansen, tchrist@perl.com
>>> q
@mknos mknos changed the title ed: search forward staring from next line ed: search forward starting from next line Jan 25, 2024
@github-actions github-actions bot added Type: enhancement improve a feature that already exists Priority: low get to this whenever Program: ed The ed program labels Jan 25, 2024
@briandfoy briandfoy self-assigned this Jan 25, 2024
@briandfoy briandfoy added Status: accepted The fix is accepted and removed Priority: low get to this whenever labels Jan 25, 2024
@briandfoy briandfoy merged commit 3d28e3d into briandfoy:master Jan 25, 2024
1 check passed
@briandfoy briandfoy added Status: released there is a new release with this fix and removed Status: accepted The fix is accepted labels Jan 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Program: ed The ed program Status: released there is a new release with this fix Type: enhancement improve a feature that already exists
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants