Skip to content

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:
[EDITED for change to new search_all method for -all and -overlap]

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 search_all
result = text.search_all('test', '1.0', 'end')
print('With search_all:', result)

# Test with -overlap
result = text.search_all('test', '1.0', 'end', overlap=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 search_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

Gentle ping

@python-cla-bot
Copy link

python-cla-bot bot commented Nov 16, 2025

All commit authors signed the Contributor License Agreement.

CLA signed

@sharktide
Copy link
Contributor Author

@serhiy-storchaka Ready for review

@serhiy-storchaka serhiy-storchaka enabled auto-merge (squash) November 17, 2025 14:10
@serhiy-storchaka serhiy-storchaka merged commit 3d14805 into python:main Nov 17, 2025
46 checks passed
serhiy-storchaka pushed a commit to serhiy-storchaka/cpython that referenced this pull request Nov 17, 2025
@bedevere-app
Copy link

bedevere-app bot commented Nov 17, 2025

GH-141669 is a backport of this pull request to the 3.14 branch.

@serhiy-storchaka
Copy link
Member

Thank you for your contribution, @sharktide. I rewrote the tests, so they clearly test the new options, and added many tests for already supported options. These tests will be backported.

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Nov 17, 2025
…honGH-130848) (pythonGH-141669)

(cherry picked from commit 8db1aad)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
serhiy-storchaka added a commit that referenced this pull request Nov 17, 2025
GH-141669) (GH-141670)

(cherry picked from commit 8db1aad)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
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