Commit graph

384 commits

Author SHA1 Message Date
Tobias Predel
81ca04fc8c
Declare in corresponding header files and dissolve main.h (#3796)
* Declare in corresponding header files and dissolve main.h

Apply include-what-you-use

* Remove further unncessary includes

* Incorporate review comment

* Do not declare static functions and variables in header

* Adapt test

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-03-01 14:47:42 -05:00
Fredrik Lanker
af8c5d58c8
Limit the allowed epoch timestamps (#3651)
The code for parsing epoch timestamps when displaying tasks only
supports values between year 1980 and 9999. Previous to this change, it
was possible to set e.g., the due timestamp to a value outside of these
limits, which would make it impossible to later on show the task.

With this change, we only allow setting values within the same limits
used by the code for displaying tasks.
2024-10-23 19:18:21 -04:00
Dustin J. Mitchell
4ff63a7960
Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588)
TC 0.7.0 introduces a new `TaskData` type that maps to Taskwarrior's
`Task` type more cleanly. It also introduces the idea of gathering lists
of operations and "committing" them to a replica.

A consequence of this change is that TaskChampion no longer
automatically maintains dependency information, so Taskwarrior must do
so, with its `TDB2::dependency_sync` method. This method does a very
similar thing to what TaskChampion had been doing, so this is a shift of
responsibility but not a major performance difference.

Cxx is .. not great. It is missing a lot of useful things that make a
general-purpose bridge impractical:

 - no support for trait objects
 - no support for `Option<T>` (https://github.com/dtolnay/cxx/issues/87)
 - no support for `Vec<Box<..>>`

As a result, some creativity is required in writing the bridge, for
example returning a `Vec<OptionTaskData>` from `all_task_data` to allow
individual `TaskData` values to be "taken" from the vector.

That said, Cxx is the current state-of-the-art, and does a good job of
ensuring memory safety, at the cost of some slightly awkward APIs.

Subsequent work can remove the "TDB2" layer and allow commands and other
parts of Taskwarrior to interface directly with the `Replica`.
2024-08-11 02:06:00 +00:00
Felix Schurk
93356b39c3 add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
Felix Schurk
954d3f5058 add blank line between cmake.h header include to prevent sorting
* add required comment in the line below cmake.h include header
2024-07-29 22:33:17 +02:00
Dustin J. Mitchell
94b3e301d1
Remove taskchampion source from this repo (#3427)
* move taskchampion-lib to src/tc/lib, remove the rest
* update references to taskchampion
* Use a top-level Cargo.toml so everything is consistent
* apply comments from ryneeverett
2024-05-02 02:45:11 +00:00
Dustin J. Mitchell
18a8bd2997
Use corrosion instead of CMakeRust (#3273)
* Use corrosion instead of CMakeRust
* use OpenSUSE tumbleweed (latest) to get newer CMake
2024-03-02 16:21:34 -05:00
Bernhard M. Wiedemann
603bf075f1
Fix issues with year 2038 (#3052)
* Fix annotations in year 2038

Fixes #3050

* Ensure 32-bit systems work better after 2038

Without this patch, their 32-bit signed long int could overflow.

This patch was done while working on reproducible builds for openSUSE.
2023-08-30 22:08:31 -04:00
Dustin J. Mitchell
12ecfa2b1e rename rust/ to taskchampion/ 2022-07-29 21:41:41 -04:00
Dustin J. Mitchell
8c30400af3 Add a C++ wrapper around TC FFI
This uses CMake to build a simple Rust library (in `src/tc/rust`) that
just re-exports everything from the `taskchampion-lib` crate.

The C++ wrappers then wrap this into C++ objects with proper lifecycle
maintenance, in the `tc` namespace.

The C++ wrappers are incomplete, and missing methods are tagged with
"TODO".  These will be added as needed.
2022-07-29 21:41:41 -04:00
Dominik Rehák
27f3e95f12 ColTypeDate: Fix countdown style width 2022-05-07 21:48:07 -04:00
Tomas Babej
112ac54a57 ColDepends: Support dependency removal for the same formats as dependency addition 2022-01-19 20:11:41 -05:00
Dustin J. Mitchell
6e9ad1048d move use of contextTask out of columns, into commands 2021-12-30 15:03:37 -05:00
Dustin J. Mitchell
8d3953183a Only set contextTask if not adding a new task
When adding a new task, the current task is empty, so there is no
context in which to evaluate DOM references.  #2683 will address this in
a more robust fashion.
2021-12-16 23:03:44 -05:00
Dustin J. Mitchell
2812a8c77a Refactor getDOM to use a pointer for the optional context
It's possible to call getDOM without a contextual task.  Previously,
this was done by referencing a "dummy" task which necessitated a way to
distinguish such dummy tasks.  This switches to using a pointer and
treating the NULL value as meaning there is no context.

Note that this cannot use `std::optional<&Task>`, as optional does not
support reference types.
2021-12-16 23:03:44 -05:00
Tomas Babej
3a00956144 ColDepends: Allow specifying short(er) UUIDs 2021-12-03 03:57:37 -05:00
Tomas Babej
0558b6c7aa ColDepends: Recognize and properly handle ID ranges 2021-11-20 15:19:34 -05:00
Tomas Babej
0bc92d6115
meta: Adjust copyright headers 2021-09-05 12:02:07 -04:00
Dustin J. Mitchell
413b8d22b7 Remove references to the 'depends' property outside of Task.cpp
With the exception of `taskDifferences` and `taskInfoDifferences`,
deferred to #2572.
2021-08-17 20:36:54 -04:00
Dustin J. Mitchell
20041c120e Refactor to store tags as individual attributes
Each tag is stored as `tag_<tagname>: x`.  The `x` is required because
empty attributes are treated as nonexistent.

For compatibility, the `tags` attribute is updated in sync with the
per-tag attributes.  This compatibility support may be dropped in later
versions.

Note that synchronization _updates_ use JSON format, which does not
change with this patch, and thus no compatibility issues exist.  The
synchronization _initialization_, however, uses FF4, meaning that a
sync server initialized from a version of `task` with this patch will
contain `tag_<tagname>` attributes, which will look like orphaned UDAs
to older versions.  However, as updates to tasks are synchronized via
the sync server, the updates will not contain these attributes and they
will show as "deleted" in the `task info` display on the older version.
Aside from the noise in the `task info` output, this is harmless.
2021-08-05 02:11:27 -04:00
sebu06
90bc7f4b23 Fixed rendering of countdown columns
Countdown columns were counting up days instead of down.
2021-07-19 20:07:30 -04:00
Rosen Penev
d0c4350c2f clang-tidy: add missing reserve calls
Found with performance-inefficient-vector-operation

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-04-23 00:22:43 -04:00
Rosen Penev
3cafb5257e clang-tidy: use = default
Found with modernize-use-equals-default

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-04-23 00:15:06 -04:00
Tomas Babej
64b6784f69 ColumnTypeString: Only input of single DOM token should be attempted to be evaluated
Attribute names are often words from natural language (such as start,
end or entry). The ColumnTypeString supports resolving DOM references,
such that task commands like 'task add proj:3.proj' work.

However, the current implementation of the ColumnTypeString::modify
only looks at the first token to determine whether the input is a DOM
reference or not. This mischaracterizes inputs like 'task add
"description:start something"', where the first token of the attribute
value looks like a DOM reference (the 'start' attribute), but is in
fact, a part of larger string.

Since all DOM references are single tokens, only interpret the input as
a possible DOM reference if and only if one token was found.

Closes #1908.
2021-01-30 21:40:41 -05:00
Tomas Babej
ef1e889262 ColTypeDate: Do not explicitly add now to relative dates
Relative dates are now implicitly anchored around now datetime point
during casting, hence there is no reason to do this anymore.
2021-01-18 02:59:11 -05:00
Tomas Babej
9017cd6e53
doc: Update copyright to 2021 2021-01-02 02:48:22 -05:00
Tomas Babej
2ebf4b864d
ColTypeNumeric: Support date and duration variants
If the lexer identifies an expression as an date or a duration, it
should be re-cast into integer value.

Closes #2101.
2021-01-02 00:21:02 -05:00
Tomas Babej
a09f9d48ab Update copyright to 2020 2020-11-21 12:27:05 -05:00
Tomas Babej
8066e4e6e2 meta: Update copyright year 2019-01-01 08:46:21 -05:00
Laurence
78bbcd25c6 Update copyright 2018-05-24 00:11:33 -04:00
Kirill Bobyrev
5cdbe6d019
Use nullptr instead lf C-styled NULL 2018-03-07 22:21:28 +03:00
Simon Ruderich
e817dfc800 Always use https:// link for opensource.org
It was already used in a few places, make this consistent.
2018-03-04 14:53:07 +01:00
Paul Beckingham
4a929197ae Build: C++14 support added 2018-02-16 22:04:29 -05:00
Mark Scannell
7af6db4c17 Portability: Updated to make main re-entrant()
- New INSTALL instructions to emscripten, and AUTHORS for contribution.
2018-01-31 19:45:07 -05:00
Paul Beckingham
016bb94d3f l10n: Eliminated i18n.h 2018-01-21 23:29:59 -05:00
Paul Beckingham
20ed6c0169 l10n: Eliminated some column labels 2018-01-21 22:50:49 -05:00
Paul Beckingham
ed657f3ecf l10n: Eliminated some column labels 2018-01-21 22:46:48 -05:00
Paul Beckingham
023afe352a l10n: Eliminated some column labels 2018-01-21 22:44:45 -05:00
Paul Beckingham
f731960f98 l10n: Eliminated some column labels 2018-01-21 22:43:24 -05:00
Paul Beckingham
865e277b76 l10n: Eliminated some column labels 2018-01-21 22:32:17 -05:00
Paul Beckingham
611d09cb16 l10n: Eliminated some column labels 2018-01-21 22:18:18 -05:00
Paul Beckingham
bf770fda91 l10n: Eliminated some column labels 2018-01-21 22:12:59 -05:00
Paul Beckingham
a6c4c2fb2a l10n: Eliminated some column labels 2018-01-21 22:09:51 -05:00
Paul Beckingham
6c1a411d7e l10n: Eliminated some column labels 2018-01-21 22:07:57 -05:00
Paul Beckingham
a506555606 l10n: Eliminated some column labels 2018-01-21 22:06:20 -05:00
Paul Beckingham
317f184ce7 l10n: Eliminated some column labels 2018-01-21 22:02:38 -05:00
Paul Beckingham
dbaac47f25 l10n: Eliminated STRING_COLUMN_LABEL_ADDED, STRING_COLUMN_LABEL_AGE 2018-01-21 19:25:10 -05:00
Paul Beckingham
6c0b47db33 l10n: Eliminated STRING_COLUMN_LABEL_ACTIVE, STRING_COLUMN_LABEL_STARTED 2018-01-21 19:21:48 -05:00
Paul Beckingham
75c9dcc6aa l10n: Eliminated STRING_COLUMN_EXAMPLES_* 2018-01-21 19:17:10 -05:00
Paul Beckingham
0cd5fbe625 l10n: Eliminated some STRING_COLUMN_EXAMPLES_* 2018-01-21 13:12:09 -05:00