* calibre-search.el (calibre-search-compose-title): New function.
(calibre-search-compose): Add a menu entry for searching by title.
* etc/NEWS: Mention this fix.
* calibre-db.el (calibre-db--parse-timestamp): Return nil instead of
signalling an error when calling parse-iso8601-time-string with an
invalid string.
* calibre-core.el (calibre-book--print-info): Check that pubdate is
non-nil before attempting to format it.
* etc/NEWS: Mention the fixing of this bug.
Some time strings which parse successfully (although potentially to
nonsensical time stamps) on GNU/Linux signal an error on Windows,
making it impossible to open the *Library* buffer if a library
contains a book with such a time string.
* calibre-cli.el (calibre-cli--get-titles):
(calibre-cli--get-authors):
(calibre-cli--get-publishers):
(calibre-cli--get-series):
(calibre-cli--get-tags):
(calibre-cli--get-formats):
Move from calibre-core.
Use calibredb to get data instead of the in memory list of books.
* calibre-core.el (calibre-cli--get-titles):
(calibre-cli--get-authors):
(calibre-cli--get-tags):
(calibre-cli--get-formats):
(calibre-cli--get-series):
(calibre-cli--get-publishers):
Move into calibre-cli.
* calibre-exec.el (calibre-exec--process-buffer): Create new constant
to store the name of the output buffer for calibredb processes.
(calibre-exec--process-sentinel): Use calibre-exec--process-buffer
instead of hard coded magic string.
Inform the user of the existence of the output buffer if an error occurs.
(calibre-exec--execute): Use calibre-exec--process-buffer instead of
hard coded magic string.
* calibre-exec.el (calibre-exec--process-sentinel): Kill the process
buffer if execution was successful. This ensures that only the output
of the failed command is present in the output buffer.
(calibre-exec--execute): Call make-process with a :buffer argument.
* calibre-book.el: Don't require eieio.
(calibre-book): Define using cl-defstruct.
(calibre-book--slot): Delete since cl-defstruct provides this
automatically.
* calibre-cli.el (calibre-cli--make-book): Use the cl-defstruct
provided make-calibre-book.
* calibre-core.el (calibre-book--print-info, calibre-book--file): Drop
the use of EIEIO macro with-slots.
(calibre-core--get-titles, calibre-core--get-authors,
calibre-core--get-tags, calibre-core--get-formats,
calibre-core--get-series, calibre-core--get-publishers): Add an
ignored optional argument to be valid FUN arguments to
completion-table-dynamic.
(calibre-authors-completion-table,
calibre-publishers-completion-table, calibre-series-completion-table,
calibre-tags-completion-table): Create completion tables.
* calibre-db.el (calibre-db--make-book): Use the cl-defstruct provided make-calibre-book.
* calibre-edit.el: Don't require eieio-custom.
Require wid-edit and calibre-widgets.
(calibre-edit--book, calibre-edit--title, calibre-edit--authors,
calibre-edit--publisher, calibre-edit--series, calibre-edit--tags):
Declare variables.
(calibre-edit-apply):
(calibre-edit-abort):
(calibre-edit-reset):
(calibre-edit-confirm):
(calibre-edit-mode-map, calibre-edit-field-keymap): Define keymaps for
editing books.
(calibre-edit-mode): Define a mode for editing books.
(calibre-edit-book):
(eieio-done-customizing): Remove
(calibre-edit--create-buffer): Add function to set up editing buffer.
(calibre-edit--different-fields): Adjust to the cl-lib struct API.
* calibre-widgets.el (calibre-author, calibre-publisher,
calibre-series, calibre-tag, calibre-date): Add widgets.
* calibre-edit.el (calibre-edit--command): Use " & " as a separator
between author names instead of ",", since the former is apparently
the correct syntax for calibredb.
* calibre.el: Bump package version.
* calibre-library.el (calibre-library-execute): Use cond instead of
cl-case when matching marks.
cl-case does not evaluate its keys, and as such is unsuited to
matching non-literal constants such as calibre-mod-marker and
calibre-del-marker.