aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/CellBuffer.cxx
AgeCommit message (Collapse)AuthorFilesLines
3 daysimplicitly instantiate RunStyles: support ptrdiff_t if it has the same ↵Robin Haberkorn1-1/+2
storage size as int, but does *not* alias it * This is the case e.g. on NetBSD 10 for ARMv6 where Sci::Position == ptrdiff_t == long int, but obviously for other platforms as well, where it causes "invalid conversion" and "undefined symbol" errors. Scintilla was testing for aliasability by comparing the storage size with sizeof() or PTRDIFF_MAX == INT_MAX at the preprocessor level. This was fundamentally flawed. * In LineVector<T>::InsertLines() we are now using the C++17 construct std::is_convertible_v<From*,To*> instead. * We need RunStyles<ptrdiff_t> as well on the affected platforms. AFAIK this is impossible to test for in a constant expression that can be used with the preprocessor. A workaround has been added previously for Haiku: https://groups.google.com/g/scintilla-interest/c/xPXquJUIXo8/m/BLXBpTTgBwAJ The workaround is not very robust, as probably nobody guarantees that ptrdiff_t never aliases on Haiku. If it does, you will suddenly get errors about duplicate template instantiations. Quite possibly, the explicit instantiations of RunStyles were wrong on certain 32-bit Linux variants as well. * We could have tried to explicitly instantiate RunStyles for all scalar types that could possibly be behind ptrdiff_t. Unfortunately, it would result in "possible loss of data" warnings on MSVC. Instead, we now implicitly instantiate RunStyles.
3 daysRevert "support ptrdiff_t if it has the same storage size as int, but does ↵Robin Haberkorn1-2/+1
*not* alias it" This reverts commit 0953ffeee80abdd8e79ddacc7066eb02c78968e7.
2025-08-26support ptrdiff_t if it has the same storage size as int, but does *not* ↵Robin Haberkorn1-1/+2
alias it * This is the case e.g. on NetBSD 10 for ARMv6 where Sci::Position == ptrdiff_t == long int, but obviously for other platforms as well, where it causes "invalid conversion" and "undefined symbol" errors. Scintilla was testing for aliasability by comparing the storage size with sizeof() or PTRDIFF_MAX == INT_MAX at the preprocessor level. This was fundamentally flawed. * In LineVector<T>::InsertLines() we are now using the C++17 construct std::is_convertible_v<From*,To*> instead. * We need RunStyles<ptrdiff_t> as well on the affected platforms. AFAIK this is impossible to test for in a constant expression that can be used with the preprocessor. A workaround has been added previously for Haiku: https://groups.google.com/g/scintilla-interest/c/xPXquJUIXo8/m/BLXBpTTgBwAJ The workaround is not very robust, as probably nobody guarantees that ptrdiff_t never aliases on Haiku. If it does, you will suddenly get errors about duplicate template instantiations. Instead we now instantiate RunStyles for all scalar types that could possibly be behind ptrdiff_t. This will always be more than what is required on any particular platform, but the linker should eliminate unused symbols.
2025-01-22Bug [#1224]. Remember selection in undo history. SCI_SETSELECTIONUNDOHISTORY.Neil1-0/+4
2024-11-26Bug [#2458]. Add include of cstdint to provide intptr_t and uintptr_t.Neil1-0/+1
2024-07-28Add SCI_GETUNDOSEQUENCE to determine whether an undo sequence is active and itsNeil1-0/+4
nesting depth.
2024-03-08Reformat with astyle.Neil1-2/+2
2024-03-02Feature [feature-requests:#1511] Add mayCoalesce argument to BeginUndoAction.John Ehresman1-2/+2
2024-02-27Restore change history to the extent possible when restoring undo history.Neil1-59/+74
2024-02-18Restore change history when restoring undo history.Neil1-0/+58
2024-02-16Implement detach point access with SCI_SETUNDODETACH and SCI_GETUNDODETACH.Neil1-4/+12
Write more documentation for undo history.
2024-02-15Perform validation of undo state when SCI_SETUNDOCURRENT called, setting statusNeil1-2/+2
when invalid.
2024-02-09Implement API to read and write undo history from applications.Neil1-0/+48
2024-02-09Avoid overhead of extra start actions that delimited user operations. Now reliesNeil1-7/+7
on mayCoalesce flag to indicate that a user operation is complete when false.
2024-02-01Store undo text in ScrapStack, a single allocation instead of one allocation perNeil1-16/+6
step. This saves about 50% for a long sequence of single byte actions.
2024-02-01Add UndoAction class as internal type for undo actions and make Action a structNeil1-25/+16
that is used for reporting undo steps to Document. This will allow further minimization of undo memory use.
2024-02-01Move UndoHistory into its own module that is accessible from CellBuffer andNeil1-288/+34
tests but hidden from most of Scintilla. Access through std::unique_ptr.
2024-01-27Use noexcept where reasonable.Neil1-16/+16
2024-01-27Feature [feature-requests:#1458] Reduce memory used for undo actions.Zufu Liu1-9/+4
2023-12-08Throw error when allocating more than 2G without SC_DOCUMENTOPTION_TEXT_LARGE.Neil1-0/+4
2023-11-19Add const where possible.Neil1-1/+1
2023-11-19Fix type conversion warning.Neil1-1/+1
2023-10-26Implement LineEnd method in CellBuffer as it is a basic function and only usesNeil1-0/+27
CellBuffer fields. Declare LineEnd noexcept as it should never throw and that allows methods calling it to also be noexcept. Call LineEndPosition to simplify Editor::LineSelectionRange.
2023-06-25Strip line end white-space.Neil1-1/+1
2022-09-19Stop turning on change history when there are steps that can be undone asNeil1-1/+1
performing undo before start of change history can crash.
2022-07-31Added change history which can display document changes (modified, saved, ...)Neil1-0/+94
in the margin or in the text.
2022-07-30Add cast functions to simplify code and avoid warnings.Neil1-24/+41
Change targetAct type to avoid type widening warnings.
2022-07-30Apply rule-of-zero to CellBuffer internals.Neil1-14/+0
2022-07-29Apply rule-of-zero to delete standard methods where possible as handled byNeil1-8/+1
contained types. This allows flexibility as most lower-level data types can be moved and SplitVector and Partitioning of non-move-only types may be copied. CellBuffer still needs destructor due to incomplete type so retains all standard operations.
2021-10-26Explicit constructors.Neil1-1/+1
2021-10-26Ensure variables initialized.Neil1-1/+1
2021-08-24Remove line end white space.Neil1-1/+1
2021-07-15Feature [feature-requests:#1370] Implement SCI_ALLOCATELINES to allocate indicesZufu Liu1-0/+23
to hold some number of lines. This is an optimization that can decrease reallocation overhead.
2021-07-15Feature [feature-requests:#1381] Move SplitView to header so it can be used moreNeil1-0/+15
widely. Ensure that case where all text is after the gap is as efficient as when all text is before the gap.
2021-05-24Define C++ version of the Scintilla API in ScintillaTypes.h, ScintillaMessages.hNeil1-53/+56
and ScintillaStructures.h using scoped enumerations. Use these headers instead of Scintilla.h internally. External definitions go in the Scintilla namespace and internal definitio0ns in Scintilla::Internal.
2021-05-20Prefer Sci::invalidPosition to INVALID_POSITION as Scintilla.h will eventuallyNeil1-1/+1
not be visible to most code.
2021-05-05Avoid some warnings in ResetLineEnds.Neil1-3/+3
2021-04-05Change actionType to an enum class.Neil1-27/+27
2021-03-18std::optional is a basic vocabulary type that may be used widely so includeNeil1-0/+1
almost everywhere.
2021-03-18Move assert and debug trace functions into their own header Debugging.h.Neil1-2/+1
PLATFORM_ASSERT is used in data structure headers which led to including graphics and windowing APIs in data structure modules.
2021-03-17Extract geometry and colour definitions from Platform.h into src/Geometry.h.Neil1-0/+1
2020-06-11Use noexcept where safe and maintainable.Neil1-1/+1
2020-05-19Encapsulate common check for PS, LS, and NEL as UTF8IsMultibyteLineEnd.Neil1-6/+3
Avoids construction of temporary array.
2020-05-04Feature [feature-requests:1347]. Optimize large insertions by using aZufu Liu1-29/+122
table-driven line end discovery algorithm and performing line insertions in batches.
2020-05-02Optimize LineVector by maintaining an activeIndices field to avoid callingNeil1-30/+34
LineStartIndex::Active.
2020-03-24Use noexcept where possible.Neil1-19/+23
2019-11-01Avoid calling vector::shrink_to_fit in destructors as it is not noexcept.Neil1-1/+0
The destructors of the members will ensure that everything is correct. Potential unhandled exceptions reported by Coverity.
2019-09-28Remove virtual call in constructor to stop warnings.Neil1-1/+0
Init was not needed in LineVector as each field is constructed to a good state. This code worked correctly before this change.
2019-09-26Remove extraneous check.Neil1-3/+1
2019-06-04Fix extra white space.Neil1-2/+2