Commit c46483a4 authored by Max Kellermann's avatar Max Kellermann

tag/Config: support incremental "metadata_to_use" setting

With a "+" or "-" prefix, the "metadata_to_use" setting can manipulate the existing default. This way, one can enable `TAG_COMMENT` without having to list all the other tags.
parent 0f19108c
ver 0.21 (not yet released) ver 0.21 (not yet released)
* configuration * configuration
- add "include" directive, allows including config files - add "include" directive, allows including config files
- incremental "metadata_to_use" setting
* protocol * protocol
- "tagtypes" can be used to hide tags - "tagtypes" can be used to hide tags
- "find" and "search" can sort - "find" and "search" can sort
......
...@@ -111,6 +111,10 @@ ...@@ -111,6 +111,10 @@
# found in the user manual. # found in the user manual.
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" #metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
# #
# This example just enables the "comment" tag without disabling all
# the other supported tags:
#metadata_to_use "+comment"
#
# This setting enables automatic update of MPD's database when files in # This setting enables automatic update of MPD's database when files in
# music_directory are changed. # music_directory are changed.
# #
......
...@@ -494,7 +494,16 @@ Other Settings ...@@ -494,7 +494,16 @@ Other Settings
setting can reduce the database size and :program:`MPD`'s setting can reduce the database size and :program:`MPD`'s
memory usage by omitting unused tags. By default, all tags but memory usage by omitting unused tags. By default, all tags but
comment are enabled. The special value "none" disables all comment are enabled. The special value "none" disables all
tags. Section :ref:`tags` contains a list of supported tags. tags.
If the setting starts with ``+`` or ``-``, then the following
tags will be added or remoted to/from the current set of tags.
This example just enables the "comment" tag without disabling all
the other supported tags
metadata_to_use "+comment"
Section :ref:`tags` contains a list of supported tags.
The State File The State File
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
......
...@@ -34,19 +34,36 @@ TagLoadConfig(const ConfigData &config) ...@@ -34,19 +34,36 @@ TagLoadConfig(const ConfigData &config)
if (value == nullptr) if (value == nullptr)
return; return;
global_tag_mask = TagMask::None(); if (StringEqualsCaseASCII(value, "none")) {
global_tag_mask = TagMask::None();
if (StringEqualsCaseASCII(value, "none"))
return; return;
}
bool plus = true;
if (*value != '+' && *value != '-')
/* no "+-": not incremental */
global_tag_mask = TagMask::None();
for (const auto &i : SplitString(value, ',')) { for (const auto &i : SplitString(value, ',')) {
const char *name = i.c_str(); const char *name = i.c_str();
if (*name == '+') {
plus = true;
++name;
} else if (*name == '-') {
plus = false;
++name;
}
const auto type = tag_name_parse_i(name); const auto type = tag_name_parse_i(name);
if (type == TAG_NUM_OF_ITEM_TYPES) if (type == TAG_NUM_OF_ITEM_TYPES)
throw FormatRuntimeError("error parsing metadata item \"%s\"", throw FormatRuntimeError("error parsing metadata item \"%s\"",
name); name);
global_tag_mask |= type; if (plus)
global_tag_mask.Set(type);
else
global_tag_mask.Unset(type);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment