Skip to content

gh-130693: Add options of the tkinter.Text.search method: -nolinestop -all -overlap -strictlimits #130848

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

Open
wants to merge 43 commits into
base: main
Choose a base branch
from

Conversation

sharktide
Copy link
Contributor

@sharktide sharktide commented Mar 4, 2025

Add options -nolinestop, -all, -overlap, and -strictlimits to the search function of the text class of tkinter.

Fixes #130693
Closes #130693

Tested against

.\PCbuild\amd64\python_d.exe -m test -ugui test_tkinter

And test passed. Result:

0:00:00 [1/1] test_tkinter
0:00:27 load avg: 3.93 [1/1] test_tkinter passed

== Tests result: SUCCESS ==

1 test OK.

Total duration: 27.6 sec
Total tests: run=787 skipped=11
Total test files: run=1/1
Result: SUCCESS

Also tested against a custom test file:

import tkinter as tk

root = tk.Tk()
text = tk.Text(root)
text.pack()

text.insert('1.0', 'This is a test. This is only a test.\nAnother line.\nYet another line.')

# Test without options
result = text.search('test', '1.0', 'end')
print('Without options:', result)

# Test with -nolinestop
result = text.search('line', '1.0', 'end', nolinestop=True, regexp=True)
print('With -nolinestop:', result)

# Test with -all
result = text.search('test', '1.0', 'end', all=True)
print('With -all:', result)

# Test with -overlap
result = text.search('test', '1.0', 'end', overlap=True, all=True)
print('With -overlap:', result)

# Test with -strictlimits
result = text.search('test', '1.0', 'end', strictlimits=True)
print('With -strictlimits:', result)

root.mainloop()

Which returns:

Without options: 1.10
With -nolinestop: 2.8
With -all: (<textindex object: '1.10'>, <textindex object: '1.31'>)
With -overlap: (<textindex object: '1.10'>, <textindex object: '1.31'>)
With -strictlimits: 1.10

Indicating that the new features are functioning correctly

@bedevere-app
Copy link

bedevere-app bot commented Mar 4, 2025

Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool.

If this change has little impact on Python users, wait for a maintainer to apply the skip news label instead.

@sharktide sharktide requested a review from Wulian233 March 5, 2025 15:20
@sharktide
Copy link
Contributor Author

@ZeroIntensity Could someone please review? I think the original reviewer forgot

@sharktide sharktide requested a review from Wulian233 May 5, 2025 15:49
@sharktide
Copy link
Contributor Author

@Wulian233 Please Review again

@sharktide
Copy link
Contributor Author

I am currently pinging this PR as I have not seen a review in nearly a month.
Could someone please review?

@sharktide
Copy link
Contributor Author

sharktide commented May 30, 2025 via email

@sharktide
Copy link
Contributor Author

Done!

@sharktide sharktide requested a review from ZeroIntensity May 30, 2025 20:09
@sharktide
Copy link
Contributor Author

It has been nearly a month. @ZeroIntensity Could you please review?

Copy link
Member

@ZeroIntensity ZeroIntensity left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All new features need tests. Please add one to test_tkinter.

@sharktide
Copy link
Contributor Author

sharktide commented Jun 17, 2025 via email

sharktide and others added 4 commits June 17, 2025 19:13
@sharktide
Copy link
Contributor Author

I updated the branch as it has been a while since this PR has been opened

@sharktide
Copy link
Contributor Author

Added implementation. Docs, whatsnew, and news updates next

@sharktide sharktide requested a review from AA-Turner as a code owner August 10, 2025 21:54
Copy link
Member

@serhiy-storchaka serhiy-storchaka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your update.

tkinter
-------

* The ``tkinter.Text.search`` method now supports two additional
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* The ``tkinter.Text.search`` method now supports two additional
* The :meth:`!tkinter.Text.search` method now supports two additional

So it will be formatted with the same font and color as other methods, just without a link.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

tkinter missing -nolinestop on tk.Text
5 participants