diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 487e5282..e4015b0d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -90,3 +90,31 @@ jobs: - name: Check spelling run: | codespell + + test-c-api-docs: + runs-on: ubuntu-latest + name: Test C API Documentation Generation + steps: + - uses: actions/checkout@v4 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends make doxygen + - name: Test C API docs generation + run: | + cd apidocs/c/ + doxygen c-prof.conf + + test-python-api-docs: + runs-on: ubuntu-latest + name: Test Python API Documentation Generation + steps: + - uses: actions/checkout@v4 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends make python3-sphinx + - name: Test Python API docs generation + run: | + cd apidocs/python/ + sphinx-apidoc -f -o . src && make -j$(nproc) xml SPHINXOPTS="-W --keep-going -n" diff --git a/apidocs/c/c-prof.conf b/apidocs/c/c-prof.conf index 1103bc20..569f0aee 100644 --- a/apidocs/c/c-prof.conf +++ b/apidocs/c/c-prof.conf @@ -1,7 +1,7 @@ -# Doxyfile 1.8.11 +# Doxyfile 1.14.0 # This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. +# Doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. @@ -12,16 +12,26 @@ # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use Doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use Doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 @@ -41,7 +51,7 @@ PROJECT_NAME = "Profanity C Plugin API" PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a +# for a project that appears at the top of each page and should give viewers a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = @@ -53,24 +63,42 @@ PROJECT_BRIEF = PROJECT_LOGO = +# With the PROJECT_ICON tag one can specify an icon that is included in the tabs +# when the HTML document is shown. Doxygen will copy the logo to the output +# directory. + +PROJECT_ICON = + # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If +# entered, it will be relative to the location where Doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. +# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding Doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise cause +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. # The default value is: NO. CREATE_SUBDIRS = NO -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. @@ -79,28 +107,28 @@ CREATE_SUBDIRS = NO ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this +# documentation generated by Doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the @@ -121,13 +149,13 @@ REPEAT_BRIEF = YES ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief +# Doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. @@ -135,7 +163,7 @@ ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. @@ -145,11 +173,11 @@ FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to +# If left blank the directory from which Doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. +# will be relative from the directory where Doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = @@ -163,31 +191,42 @@ STRIP_FROM_PATH = STRIP_FROM_INC_PATH = -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't +# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but +# less readable) file names. This can be useful if your file system doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the +# first line (until the first dot, question mark or exclamation mark) of a +# Javadoc-style comment as the brief description. If set to NO, the Javadoc- +# style will behave just like regular Qt-style comments (thus requiring an +# explicit @brief command for a brief description.) # The default value is: NO. JAVADOC_AUTOBRIEF = NO -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) +# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by Doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first +# line (until the first dot, question mark or exclamation mark) of a Qt-style +# comment as the brief description. If set to NO, the Qt-style will behave just +# like regular Qt-style comments (thus requiring an explicit \brief command for +# a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this @@ -199,13 +238,21 @@ QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO +# By default Python docstrings are displayed as preformatted text and Doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# Doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as Doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. @@ -222,20 +269,19 @@ TAB_SIZE = 4 # the documentation. An alias has the form: # name=value # For example adding -# "sideeffect=@par Side Effects:\n" +# "sideeffect=@par Side Effects:^^" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) ALIASES = -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all @@ -264,49 +310,90 @@ OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make Doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. +# the files are not read by Doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. EXTENSION_MAPPING = -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments # according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by Doxygen, so you can +# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES -# When enabled doxygen tries to link words that correspond to documented +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 6. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 6 + +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = DOXYGEN + +# When enabled Doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. +# globally by setting AUTOLINK_SUPPORT to NO. Words listed in the +# AUTOLINK_IGNORE_WORDS tag are excluded from automatic linking. # The default value is: YES. AUTOLINK_SUPPORT = YES +# This tag specifies a list of words that, when matching the start of a word in +# the documentation, will suppress auto links generation, if it is enabled via +# AUTOLINK_SUPPORT. This list does not affect links explicitly created using \# +# or the \link or commands. +# This tag requires that the tag AUTOLINK_SUPPORT is set to YES. + +AUTOLINK_IGNORE_WORDS = + # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and +# tag to YES in order to let Doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. +# versus func(std::string) {}). This also makes the inheritance and +# collaboration diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO @@ -318,16 +405,16 @@ BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. +# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse +# them like normal C++ but will assume all classes use public instead of private +# inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. +# Doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. @@ -336,7 +423,7 @@ SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first +# tag is set to YES then Doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. @@ -394,21 +481,42 @@ TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The +# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# Doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest +# symbols. At the end of a run Doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 +# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use +# during processing. When set to 0 Doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. @@ -424,6 +532,12 @@ EXTRACT_ALL = NO EXTRACT_PRIVATE = NO +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. @@ -461,7 +575,14 @@ EXTRACT_LOCAL_METHODS = NO EXTRACT_ANON_NSPACES = NO -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. @@ -469,22 +590,31 @@ EXTRACT_ANON_NSPACES = NO HIDE_UNDOC_MEMBERS = NO -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. +# If the HIDE_UNDOC_NAMESPACES tag is set to YES, Doxygen will hide all +# undocumented namespaces that are normally visible in the namespace hierarchy. +# If set to NO, these namespaces will be included in the various overviews. This +# option has no effect if EXTRACT_ALL is enabled. +# The default value is: YES. + +HIDE_UNDOC_NAMESPACES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. @@ -498,30 +628,44 @@ HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. +# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and macOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. CASE_SENSE_NAMES = NO -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. @@ -534,7 +678,7 @@ SHOW_INCLUDE_FILES = YES SHOW_GROUPED_MEMB_INC = NO -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. @@ -546,14 +690,14 @@ FORCE_LOCAL_INCLUDES = NO INLINE_INFO = YES -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. @@ -561,7 +705,7 @@ SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. @@ -573,7 +717,7 @@ SORT_BRIEF_DOCS = NO SORT_MEMBERS_CTORS_1ST = NO -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. @@ -590,11 +734,11 @@ SORT_GROUP_NAMES = NO SORT_BY_SCOPE_NAME = NO -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. @@ -664,24 +808,25 @@ SHOW_FILES = YES SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from +# Doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file +# by Doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated +# by Doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can +# that represents Doxygen's defaults, run Doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. # -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# Note that if you run Doxygen from a directory containing a file called +# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = @@ -689,26 +834,42 @@ LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = +# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH +# environment variable) so that external tools such as latex and gs can be +# found. +# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the +# path already specified by the PATH variable, and are added in the order +# specified. +# Note: This option is particularly useful for macOS version 14 (Sonoma) and +# higher, when running Doxygen from Doxywizard, because in this case any user- +# defined changes to the PATH are ignored. A typical example on macOS is to set +# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin +# together with the standard path, the full search path used by doxygen when +# launching external tools will then become +# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin + +EXTERNAL_TOOL_PATH = + #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the +# standard output by Doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. @@ -716,48 +877,97 @@ QUIET = NO WARNINGS = YES -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. +# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES +# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete +# function parameter documentation. If set to NO, Doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. +# value. If set to NO, Doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC # The default value is: NO. WARN_NO_PARAMDOC = NO -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about +# undocumented enumeration values. If set to NO, Doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. # The default value is: NO. -WARN_AS_ERROR = NO +WARN_IF_UNDOC_ENUM_VAL = NO -# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# If WARN_LAYOUT_FILE option is set to YES, Doxygen will warn about issues found +# while parsing the user defined layout file, such as missing or wrong elements. +# See also LAYOUT_FILE for details. If set to NO, problems with the layout file +# will be suppressed. +# The default value is: YES. + +WARN_LAYOUT_FILE = YES + +# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the Doxygen process Doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. +# The default value is: NO. + +WARN_AS_ERROR = YES + +# The WARN_FORMAT tag determines the format of the warning messages that Doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of Doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard -# error (stderr). +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). WARN_LOGFILE = @@ -774,27 +984,42 @@ WARN_LOGFILE = INPUT = # This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING # The default value is: UTF-8. INPUT_ENCODING = UTF-8 +# This tag can be used to specify the character encoding of the source files +# that Doxygen parses. The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). +# See also: INPUT_ENCODING for further information on supported encodings. + +INPUT_FILE_ENCODING = + # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. +# read by Doxygen. # -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, -# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, +# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, +# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, +# *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be +# provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = @@ -808,7 +1033,7 @@ RECURSIVE = NO # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # -# Note that relative paths are relative to the directory from which doxygen is +# Note that relative paths are relative to the directory from which Doxygen is # run. EXCLUDE = @@ -833,10 +1058,7 @@ EXCLUDE_PATTERNS = # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* +# ANamespace::AClass, ANamespace::*Test EXCLUDE_SYMBOLS = @@ -866,7 +1088,7 @@ EXAMPLE_RECURSIVE = NO IMAGE_PATH = -# The INPUT_FILTER tag can be used to specify a program that doxygen should +# The INPUT_FILTER tag can be used to specify a program that Doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # @@ -881,9 +1103,14 @@ IMAGE_PATH = # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # +# Note that Doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. +# properly processed by Doxygen. INPUT_FILTER = @@ -896,7 +1123,7 @@ INPUT_FILTER = # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. +# properly processed by Doxygen. FILTER_PATTERNS = @@ -918,10 +1145,28 @@ FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. +# and want to reuse the introduction page also for the Doxygen output. USE_MDFILE_AS_MAINPAGE = +# If the IMPLICIT_DIR_DOCS tag is set to YES, any README.md file found in sub- +# directories of the project's root, is used as the documentation for that sub- +# directory, except when the README.md starts with a \dir, \page or \mainpage +# command. If set to NO, the README.md file needs to start with an explicit \dir +# command in order to be used as directory documentation. +# The default value is: YES. + +IMPLICIT_DIR_DOCS = YES + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- @@ -936,12 +1181,13 @@ USE_MDFILE_AS_MAINPAGE = SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. +# multi-line macros, enums or list initialized variables directly into the +# documentation. # The default value is: NO. INLINE_SOURCES = NO -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. @@ -949,7 +1195,7 @@ INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. +# entity all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = NO @@ -979,28 +1225,28 @@ REFERENCES_LINK_SOURCE = YES SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# point to the HTML generated by the htags(1) tool instead of Doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version +# (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # -# The result: instead of the source browser generated by doxygen, the links to +# The result: instead of the source browser generated by Doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO -# If the VERBATIM_HEADERS tag is set to YES then doxygen will generate a +# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. @@ -1008,6 +1254,46 @@ USE_HTAGS = NO VERBATIM_HEADERS = YES +# If the CLANG_ASSISTED_PARSING tag is set to YES then Doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which Doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not Doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then Doxygen will add the directory of each input to the +# include path. +# The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by Doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not Doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- @@ -1019,17 +1305,11 @@ VERBATIM_HEADERS = YES ALPHABETICAL_INDEX = YES -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = @@ -1038,10 +1318,10 @@ IGNORE_PREFIX = # Configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output # The default value is: YES. -GENERATE_HTML = YES +GENERATE_HTML = NO # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of @@ -1059,40 +1339,40 @@ HTML_OUTPUT = html HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a +# each generated HTML page. If the tag is left blank Doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. +# that Doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally +# for information on how to generate the default header that Doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description +# default header when upgrading to a newer version of Doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard +# generated HTML page. If the tag is left blank Doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. +# that Doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. +# the HTML output. If left blank Doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. +# sheet that Doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. @@ -1102,13 +1382,18 @@ HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. +# created by Doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = @@ -1123,10 +1408,23 @@ HTML_EXTRA_STYLESHEET = HTML_EXTRA_FILES = +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generates light mode output, DARK always +# generates dark mode output, AUTO_LIGHT automatically sets the mode according +# to the user preference, uses light mode if no preference is set (the default), +# AUTO_DARK automatically sets the mode according to the user preference, uses +# dark mode if no preference is set and TOGGLE allows a user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = AUTO_LIGHT + # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. @@ -1135,7 +1433,7 @@ HTML_EXTRA_FILES = HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A +# in the HTML output. For a value of 0 the output will use gray-scales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1153,14 +1451,16 @@ HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_GAMMA = 80 -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_TIMESTAMP = NO +HTML_DYNAMIC_MENUS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the @@ -1170,6 +1470,33 @@ HTML_TIMESTAMP = NO HTML_DYNAMIC_SECTIONS = NO +# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be +# dynamically folded and expanded in the generated HTML source code. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_CODE_FOLDING = YES + +# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in +# the top right corner of code and text fragments that allows the user to copy +# its content to the clipboard. Note this only works if supported by the browser +# and the web page is served via a secure context (see: +# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: +# protocol. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COPY_CLIPBOARD = YES + +# Doxygen stores a couple of settings persistently in the browser (via e.g. +# cookies). By default these settings apply to all HTML pages generated by +# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# the settings under a project specific key, such that the user preferences will +# be stored separately. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_PROJECT_COOKIE = + # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to @@ -1185,13 +1512,14 @@ HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, Doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1205,6 +1533,13 @@ GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. @@ -1227,14 +1562,18 @@ DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_NAME = Publisher -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline (the HTML help workshop was already many +# years in maintenance mode). You can download the HTML help workshop from the +# web archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). # # The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for @@ -1254,14 +1593,14 @@ CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. +# Doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). +# (YES) or that it should be included in the main .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. @@ -1288,6 +1627,16 @@ BINARY_TOC = NO TOC_EXPAND = NO +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help @@ -1306,7 +1655,8 @@ QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1314,8 +1664,8 @@ QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1323,30 +1673,30 @@ QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to +# run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = @@ -1389,18 +1739,39 @@ DISABLE_INDEX = NO # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by Doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has more details information than the tab index, you +# could consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO +# When GENERATE_TREEVIEW is set to YES, the PAGE_OUTLINE_PANEL option determines +# if an additional navigation panel is shown at the right hand side of the +# screen, displaying an outline of the contents of the main page, similar to +# e.g. https://developer.android.com/reference If GENERATE_TREEVIEW is set to +# NO, this option has no effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +PAGE_OUTLINE_PANEL = YES + +# When GENERATE_TREEVIEW is set to YES, the FULL_SIDEBAR option determines if +# the side bar is limited to only the treeview area (value NO) or if it should +# extend to the full height of the window (value YES). Setting this to YES gives +# a layout similar to e.g. https://docs.readthedocs.io with more room for +# contents, but less room for the project logo, title, and description. If +# GENERATE_TREEVIEW is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. +# Doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. @@ -1409,6 +1780,12 @@ GENERATE_TREEVIEW = NO ENUM_VALUES_PER_LINE = 4 +# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified +# enumeration values besides the enumeration mnemonics. +# The default value is: NO. + +SHOW_ENUM_VALUES = NO + # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. @@ -1416,35 +1793,48 @@ ENUM_VALUES_PER_LINE = 4 TREEVIEW_WIDTH = 250 -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO +# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML +# Doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. -FORMULA_TRANSPARENT = YES +FORMULA_MACROFILE = # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering +# https://www.mathjax.org) which uses client side JavaScript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path @@ -1454,11 +1844,29 @@ FORMULA_TRANSPARENT = YES USE_MATHJAX = NO +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + # When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). # Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. @@ -1471,33 +1879,40 @@ MATHJAX_FORMAT = HTML-CSS # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces # of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and +# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for +# the HTML output. The underlying search engine uses JavaScript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then +# For large projects the JavaScript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically @@ -1514,9 +1929,9 @@ MATHJAX_CODEFILE = SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a web server instead of a web client using Javascript. There +# implemented using a web server instead of a web client using JavaScript. There # are two flavors of web server based searching depending on the EXTERNAL_SEARCH -# setting. When disabled, doxygen will generate a PHP script for searching and +# setting. When disabled, Doxygen will generate a PHP script for searching and # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing # and searching needs to be provided by external tools. See the section # "External Indexing and Searching" for details. @@ -1525,7 +1940,7 @@ SEARCHENGINE = YES SERVER_BASED_SEARCH = NO -# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# When EXTERNAL_SEARCH tag is enabled Doxygen will no longer generate the PHP # script for searching. Instead the search results are written to an XML file # which needs to be processed by an external indexer. Doxygen will invoke an # external search engine pointed to by the SEARCHENGINE_URL option to obtain the @@ -1533,7 +1948,8 @@ SERVER_BASED_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: http://xapian.org/). +# Xapian (see: +# https://xapian.org/). # # See the section "External Indexing and Searching" for details. # The default value is: NO. @@ -1546,8 +1962,9 @@ EXTERNAL_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: http://xapian.org/). See the section "External Indexing and -# Searching" for details. +# Xapian (see: +# https://xapian.org/). See the section "External Indexing and Searching" for +# details. # This tag requires that the tag SEARCHENGINE is set to YES. SEARCHENGINE_URL = @@ -1568,7 +1985,7 @@ SEARCHDATA_FILE = searchdata.xml EXTERNAL_SEARCH_ID = -# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through Doxygen # projects other than the one defined by this configuration file, but that are # all added to the same external search index. Each project needs to have a # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of @@ -1582,7 +1999,7 @@ EXTRA_SEARCH_MAPPINGS = # Configuration options related to the LaTeX output #--------------------------------------------------------------------------- -# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. +# If the GENERATE_LATEX tag is set to YES, Doxygen will generate LaTeX output. # The default value is: YES. GENERATE_LATEX = NO @@ -1598,22 +2015,36 @@ LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. # -# Note that when enabling USE_PDFLATEX this option is only used for generating -# bitmaps for formulas in the HTML output, but not in the Makefile that is -# written to the output directory. -# The default file is: latex. +# Note that when not enabling USE_PDFLATEX the default is latex when enabling +# USE_PDFLATEX the default is pdflatex and when in the later case latex is +# chosen this is overwritten by pdflatex. For specific output languages the +# default can have been set differently, this depends on the implementation of +# the output language. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate # index for LaTeX. +# Note: This tag is used in the Makefile / make.bat. +# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file +# (.tex). # The default file is: makeindex. # This tag requires that the tag GENERATE_LATEX is set to YES. MAKEINDEX_CMD_NAME = makeindex -# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX +# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to +# generate index for LaTeX. In case there is no backslash (\) as first character +# it will be automatically added in the LaTeX code. +# Note: This tag is used in the generated output file (.tex). +# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat. +# The default value is: makeindex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_MAKEINDEX_CMD = makeindex + +# If the COMPACT_LATEX tag is set to YES, Doxygen generates more compact LaTeX # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -1642,36 +2073,38 @@ PAPER_TYPE = a4 EXTRA_PACKAGES = -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the -# generated LaTeX document. The header should contain everything until the first -# chapter. If it is left blank doxygen will generate a standard header. See -# section "Doxygen usage" for information on how to let doxygen write the -# default header to a separate file. +# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for +# the generated LaTeX document. The header should contain everything until the +# first chapter. If it is left blank Doxygen will generate a standard header. It +# is highly recommended to start with a default header using +# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty +# and then modify the file new_header.tex. See also section "Doxygen usage" for +# information on how to generate the default header that Doxygen normally uses. # -# Note: Only use a user-defined header if you know what you are doing! The -# following commands have a special meaning inside the header: $title, -# $datetime, $date, $doxygenversion, $projectname, $projectnumber, -# $projectbrief, $projectlogo. Doxygen will replace $title with the empty -# string, for the replacement values of the other commands the user is referred -# to HTML_HEADER. +# Note: Only use a user-defined header if you know what you are doing! +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of Doxygen. The following +# commands have a special meaning inside the header (and footer): For a +# description of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_HEADER = -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the -# generated LaTeX document. The footer should contain everything after the last -# chapter. If it is left blank doxygen will generate a standard footer. See +# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for +# the generated LaTeX document. The footer should contain everything after the +# last chapter. If it is left blank Doxygen will generate a standard footer. See # LATEX_HEADER for more information on how to generate a default footer and what -# special commands can be used inside the footer. -# -# Note: Only use a user-defined footer if you know what you are doing! +# special commands can be used inside the footer. See also section "Doxygen +# usage" for information on how to generate the default footer that Doxygen +# normally uses. Note: Only use a user-defined footer if you know what you are +# doing! # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_FOOTER = # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined # LaTeX style sheets that are included after the standard style sheets created -# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# by Doxygen. Using this option one can overrule certain style aspects. Doxygen # will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the @@ -1697,61 +2130,59 @@ LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES -# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate -# the PDF file directly from the LaTeX files. Set this option to YES, to get a -# higher quality PDF documentation. +# If the USE_PDFLATEX tag is set to YES, Doxygen will use the engine as +# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX +# files. Set this option to YES, to get a higher quality PDF documentation. +# +# See also section LATEX_CMD_NAME for selecting the engine. # The default value is: YES. # This tag requires that the tag GENERATE_LATEX is set to YES. USE_PDFLATEX = YES -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode -# command to the generated LaTeX files. This will instruct LaTeX to keep running -# if errors occur, instead of asking the user for help. This option is also used -# when generating formulas in HTML. +# The LATEX_BATCHMODE tag signals the behavior of LaTeX in case of an error. +# Possible values are: NO same as ERROR_STOP, YES same as BATCH, BATCH In batch +# mode nothing is printed on the terminal, errors are scrolled as if is +# hit at every error; missing files that TeX tries to input or request from +# keyboard input (\read on a not open input stream) cause the job to abort, +# NON_STOP In nonstop mode the diagnostic message will appear on the terminal, +# but there is no possibility of user interaction just like in batch mode, +# SCROLL In scroll mode, TeX will stop only for missing files to input or if +# keyboard input is necessary and ERROR_STOP In errorstop mode, TeX will stop at +# each error, asking for user intervention. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_BATCHMODE = NO -# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# If the LATEX_HIDE_INDICES tag is set to YES then Doxygen will not include the # index chapters (such as File Index, Compound Index, etc.) in the output. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_HIDE_INDICES = NO -# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source -# code with syntax highlighting in the LaTeX output. -# -# Note that which sources are shown also depends on other settings such as -# SOURCE_BROWSER. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_SOURCE_CODE = NO - # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. See -# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. -# The default value is: plain. +# https://en.wikipedia.org/wiki/BibTeX and \cite for more info. +# The default value is: plainnat. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_BIB_STYLE = plain -# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: NO. +# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute) +# path from which the emoji images will be read. If a relative path is entered, +# it will be relative to the LATEX_OUTPUT directory. If left blank the +# LATEX_OUTPUT directory will be used. # This tag requires that the tag GENERATE_LATEX is set to YES. -LATEX_TIMESTAMP = NO +LATEX_EMOJI_DIRECTORY = #--------------------------------------------------------------------------- # Configuration options related to the RTF output #--------------------------------------------------------------------------- -# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The +# If the GENERATE_RTF tag is set to YES, Doxygen will generate RTF output. The # RTF output is optimized for Word 97 and may not look too pretty with other RTF # readers/editors. # The default value is: NO. @@ -1766,7 +2197,7 @@ GENERATE_RTF = NO RTF_OUTPUT = rtf -# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF +# If the COMPACT_RTF tag is set to YES, Doxygen generates more compact RTF # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -1786,38 +2217,36 @@ COMPACT_RTF = NO RTF_HYPERLINKS = NO -# Load stylesheet definitions from file. Syntax is similar to doxygen's config -# file, i.e. a series of assignments. You only have to provide replacements, -# missing definitions are set to their default value. +# Load stylesheet definitions from file. Syntax is similar to Doxygen's +# configuration file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. # # See also section "Doxygen usage" for information on how to generate the -# default style sheet that doxygen normally uses. +# default style sheet that Doxygen normally uses. # This tag requires that the tag GENERATE_RTF is set to YES. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an RTF document. Syntax is -# similar to doxygen's config file. A template extensions file can be generated -# using doxygen -e rtf extensionFile. +# similar to Doxygen's configuration file. A template extensions file can be +# generated using doxygen -e rtf extensionFile. # This tag requires that the tag GENERATE_RTF is set to YES. RTF_EXTENSIONS_FILE = -# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code -# with syntax highlighting in the RTF output. -# -# Note that which sources are shown also depends on other settings such as -# SOURCE_BROWSER. -# The default value is: NO. +# The RTF_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the RTF_OUTPUT output directory. +# Note that the files will be copied as-is; there are no commands or markers +# available. # This tag requires that the tag GENERATE_RTF is set to YES. -RTF_SOURCE_CODE = NO +RTF_EXTRA_FILES = #--------------------------------------------------------------------------- # Configuration options related to the man page output #--------------------------------------------------------------------------- -# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for +# If the GENERATE_MAN tag is set to YES, Doxygen will generate man pages for # classes and files. # The default value is: NO. @@ -1848,7 +2277,7 @@ MAN_EXTENSION = .3 MAN_SUBDIR = -# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, then it # will generate one additional man file for each entity documented in the real # man page(s). These additional files only source the real man page, but without # them the man command would be unable to find the correct page. @@ -1861,7 +2290,7 @@ MAN_LINKS = NO # Configuration options related to the XML output #--------------------------------------------------------------------------- -# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that +# If the GENERATE_XML tag is set to YES, Doxygen will generate an XML file that # captures the structure of the code including all documentation. # The default value is: NO. @@ -1875,7 +2304,7 @@ GENERATE_XML = YES XML_OUTPUT = xml -# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program +# If the XML_PROGRAMLISTING tag is set to YES, Doxygen will dump the program # listings (including syntax highlighting and cross-referencing information) to # the XML output. Note that enabling this will significantly increase the size # of the XML output. @@ -1884,11 +2313,18 @@ XML_OUTPUT = xml XML_PROGRAMLISTING = YES +# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, Doxygen will include +# namespace members in file scope as well, matching the HTML output. +# The default value is: NO. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_NS_MEMB_FILE_SCOPE = NO + #--------------------------------------------------------------------------- # Configuration options related to the DOCBOOK output #--------------------------------------------------------------------------- -# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files +# If the GENERATE_DOCBOOK tag is set to YES, Doxygen will generate Docbook files # that can be used to generate PDF. # The default value is: NO. @@ -1902,32 +2338,49 @@ GENERATE_DOCBOOK = NO DOCBOOK_OUTPUT = docbook -# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the -# program listings (including syntax highlighting and cross-referencing -# information) to the DOCBOOK output. Note that enabling this will significantly -# increase the size of the DOCBOOK output. -# The default value is: NO. -# This tag requires that the tag GENERATE_DOCBOOK is set to YES. - -DOCBOOK_PROGRAMLISTING = NO - #--------------------------------------------------------------------------- # Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- -# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an -# AutoGen Definitions (see http://autogen.sf.net) file that captures the -# structure of the code including all documentation. Note that this feature is -# still experimental and incomplete at the moment. +# If the GENERATE_AUTOGEN_DEF tag is set to YES, Doxygen will generate an +# AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures +# the structure of the code including all documentation. Note that this feature +# is still experimental and incomplete at the moment. # The default value is: NO. GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# Configuration options related to Sqlite3 output +#--------------------------------------------------------------------------- + +# If the GENERATE_SQLITE3 tag is set to YES Doxygen will generate a Sqlite3 +# database with symbols found by Doxygen stored in tables. +# The default value is: NO. + +GENERATE_SQLITE3 = NO + +# The SQLITE3_OUTPUT tag is used to specify where the Sqlite3 database will be +# put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put +# in front of it. +# The default directory is: sqlite3. +# This tag requires that the tag GENERATE_SQLITE3 is set to YES. + +SQLITE3_OUTPUT = sqlite3 + +# The SQLITE3_RECREATE_DB tag is set to YES, the existing doxygen_sqlite3.db +# database file will be recreated with each Doxygen run. If set to NO, Doxygen +# will warn if a database file is already found and not modify it. +# The default value is: YES. +# This tag requires that the tag GENERATE_SQLITE3 is set to YES. + +SQLITE3_RECREATE_DB = YES + #--------------------------------------------------------------------------- # Configuration options related to the Perl module output #--------------------------------------------------------------------------- -# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module +# If the GENERATE_PERLMOD tag is set to YES, Doxygen will generate a Perl module # file that captures the structure of the code including all documentation. # # Note that this feature is still experimental and incomplete at the moment. @@ -1935,7 +2388,7 @@ GENERATE_AUTOGEN_DEF = NO GENERATE_PERLMOD = NO -# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary +# If the PERLMOD_LATEX tag is set to YES, Doxygen will generate the necessary # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI # output from the Perl module output. # The default value is: NO. @@ -1965,13 +2418,13 @@ PERLMOD_MAKEVAR_PREFIX = # Configuration options related to the preprocessor #--------------------------------------------------------------------------- -# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all +# If the ENABLE_PREPROCESSING tag is set to YES, Doxygen will evaluate all # C-preprocessor directives found in the sources and include files. # The default value is: YES. ENABLE_PREPROCESSING = YES -# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names +# If the MACRO_EXPANSION tag is set to YES, Doxygen will expand all macro names # in the source code. If set to NO, only conditional compilation will be # performed. Macro expansion can be done in a controlled way by setting # EXPAND_ONLY_PREDEF to YES. @@ -1997,7 +2450,8 @@ SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by the -# preprocessor. +# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of +# RECURSIVE has no effect here. # This tag requires that the tag SEARCH_INCLUDES is set to YES. INCLUDE_PATH = @@ -2029,7 +2483,7 @@ PREDEFINED = EXPAND_AS_DEFINED = -# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will +# If the SKIP_FUNCTION_MACROS tag is set to YES then Doxygen's preprocessor will # remove all references to function-like macros that are alone on a line, have # an all uppercase name, and do not end with a semicolon. Such function macros # are typically used for boiler-plate code, and will confuse the parser if not @@ -2053,26 +2507,26 @@ SKIP_FUNCTION_MACROS = YES # section "Linking to external documentation" for more information about the use # of tag files. # Note: Each tag file must have a unique name (where the name does NOT include -# the path). If a tag file is not located in the directory in which doxygen is +# the path). If a tag file is not located in the directory in which Doxygen is # run, you must also specify the path to the tagfile here. TAGFILES = -# When a file name is specified after GENERATE_TAGFILE, doxygen will create a +# When a file name is specified after GENERATE_TAGFILE, Doxygen will create a # tag file that is based on the input files it reads. See section "Linking to # external documentation" for more information about the usage of tag files. GENERATE_TAGFILE = -# If the ALLEXTERNALS tag is set to YES, all external class will be listed in -# the class index. If set to NO, only the inherited external classes will be -# listed. +# If the ALLEXTERNALS tag is set to YES, all external classes and namespaces +# will be listed in the class and namespace index. If set to NO, only the +# inherited external classes will be listed. # The default value is: NO. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will be +# in the topic index. If set to NO, only the current project's groups will be # listed. # The default value is: YES. @@ -2085,58 +2539,27 @@ EXTERNAL_GROUPS = YES EXTERNAL_PAGES = YES -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of 'which perl'). -# The default file (with absolute path) is: /usr/bin/perl. - -PERL_PATH = /usr/bin/perl - #--------------------------------------------------------------------------- -# Configuration options related to the dot tool +# Configuration options related to diagram generator tools #--------------------------------------------------------------------------- -# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram -# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to -# NO turns the diagrams off. Note that this option also works with HAVE_DOT -# disabled, but it is recommended to install and use dot, since it yields more -# powerful graphs. -# The default value is: YES. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see: -# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# You can include diagrams made with dia in doxygen documentation. Doxygen will -# then run dia to produce the diagram and insert it in the documentation. The -# DIA_PATH tag allows you to specify the directory where the dia binary resides. -# If left empty dia is assumed to be found in the default search path. - -DIA_PATH = - # If set to YES the inheritance and collaboration graphs will hide inheritance # and usage relations if the target is undocumented or is not a class. # The default value is: YES. HIDE_UNDOC_RELATIONS = YES -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# If you set the HAVE_DOT tag to YES then Doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz (see: -# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent # Bell Labs. The other options in this section have no effect if this option is # set to NO # The default value is: NO. HAVE_DOT = NO -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed -# to run in parallel. When set to 0 doxygen will base this on the number of +# The DOT_NUM_THREADS specifies the number of dot invocations Doxygen is allowed +# to run in parallel. When set to 0 Doxygen will base this on the number of # processors available in the system. You can set it explicitly to a value # larger than 0 to get control over the balance between CPU load and processing # speed. @@ -2145,55 +2568,83 @@ HAVE_DOT = NO DOT_NUM_THREADS = 0 -# When you want a differently looking font in the dot files that doxygen -# generates you can specify the font name using DOT_FONTNAME. You need to make -# sure dot is able to find the font, which can be done by putting it in a -# standard location or by setting the DOTFONTPATH environment variable or by -# setting DOT_FONTPATH to the directory containing the font. -# The default value is: Helvetica. +# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of +# subgraphs. When you want a differently looking font in the dot files that +# Doxygen generates you can specify fontname, fontcolor and fontsize attributes. +# For details please see Node, +# Edge and Graph Attributes specification You need to make sure dot is able +# to find the font, which can be done by putting it in a standard location or by +# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. Default graphviz fontsize is 14. +# The default value is: fontname=Helvetica,fontsize=10. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_FONTNAME = Helvetica +DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" -# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of -# dot graphs. -# Minimum value: 4, maximum value: 24, default value: 10. +# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can +# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. Complete documentation about +# arrows shapes. +# The default value is: labelfontname=Helvetica,labelfontsize=10. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_FONTSIZE = 10 +DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" -# By default doxygen will tell dot to use the default font as specified with -# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set -# the path where dot can find it using this tag. +# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes +# around nodes set 'shape=plain' or 'shape=plaintext' Shapes specification +# The default value is: shape=box,height=0.2,width=0.4. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" + +# You can set the path where dot can find font specified with fontname in +# DOT_COMMON_ATTR and others dot attributes. # This tag requires that the tag HAVE_DOT is set to YES. DOT_FONTPATH = -# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for -# each documented class showing the direct and indirect inheritance relations. -# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. +# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then Doxygen will +# generate a graph for each documented class showing the direct and indirect +# inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and +# HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case +# the CLASS_GRAPH tag is set to YES and HAVE_DOT is disabled or if the +# CLASS_GRAPH tag is set to BUILTIN, then the built-in generator will be used. +# If the CLASS_GRAPH tag is set to TEXT the direct and indirect inheritance +# relations will be shown as texts / links. Explicit enabling an inheritance +# graph or choosing a different representation for an inheritance graph of a +# specific class, can be accomplished by means of the command \inheritancegraph. +# Disabling an inheritance graph can be accomplished by means of the command +# \hideinheritancegraph. +# Possible values are: NO, YES, TEXT, GRAPH and BUILTIN. # The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. CLASS_GRAPH = YES -# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# If the COLLABORATION_GRAPH tag is set to YES then Doxygen will generate a # graph for each documented class showing the direct and indirect implementation # dependencies (inheritance, containment, and class references variables) of the -# class with other documented classes. +# class with other documented classes. Explicit enabling a collaboration graph, +# when COLLABORATION_GRAPH is set to NO, can be accomplished by means of the +# command \collaborationgraph. Disabling a collaboration graph can be +# accomplished by means of the command \hidecollaborationgraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. COLLABORATION_GRAPH = YES -# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for -# groups, showing the direct groups dependencies. +# If the GROUP_GRAPHS tag is set to YES then Doxygen will generate a graph for +# groups, showing the direct groups dependencies. Explicit enabling a group +# dependency graph, when GROUP_GRAPHS is set to NO, can be accomplished by means +# of the command \groupgraph. Disabling a directory graph can be accomplished by +# means of the command \hidegroupgraph. See also the chapter Grouping in the +# manual. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GROUP_GRAPHS = YES -# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# If the UML_LOOK tag is set to YES, Doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. # The default value is: NO. @@ -2210,10 +2661,41 @@ UML_LOOK = NO # but if the number exceeds 15, the total amount of fields shown is limited to # 10. # Minimum value: 0, maximum value: 100, default value: 10. -# This tag requires that the tag HAVE_DOT is set to YES. +# This tag requires that the tag UML_LOOK is set to YES. UML_LIMIT_NUM_FIELDS = 10 +# If the UML_LOOK tag is enabled, field labels are shown along the edge between +# two class nodes. If there are many fields and many nodes the graph may become +# too cluttered. The UML_MAX_EDGE_LABELS threshold limits the number of items to +# make the size more manageable. Set this to 0 for no limit. +# Minimum value: 0, maximum value: 100, default value: 10. +# This tag requires that the tag UML_LOOK is set to YES. + +UML_MAX_EDGE_LABELS = 10 + +# If the DOT_UML_DETAILS tag is set to NO, Doxygen will show attributes and +# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS +# tag is set to YES, Doxygen will add type and arguments for attributes and +# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, Doxygen +# will not generate fields with class member information in the UML graphs. The +# class diagrams will look similar to the default class diagrams but using UML +# notation for the relationships. +# Possible values are: NO, YES and NONE. +# The default value is: NO. +# This tag requires that the tag UML_LOOK is set to YES. + +DOT_UML_DETAILS = NO + +# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters +# to display on a single line. If the actual line length exceeds this threshold +# significantly it will be wrapped across multiple lines. Some heuristics are +# applied to avoid ugly line breaks. +# Minimum value: 0, maximum value: 1000, default value: 17. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_WRAP_THRESHOLD = 17 + # If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and # collaboration graphs will show the relations between templates and their # instances. @@ -2223,24 +2705,29 @@ UML_LIMIT_NUM_FIELDS = 10 TEMPLATE_RELATIONS = NO # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to -# YES then doxygen will generate a graph for each documented file showing the +# YES then Doxygen will generate a graph for each documented file showing the # direct and indirect include dependencies of the file with other documented -# files. +# files. Explicit enabling an include graph, when INCLUDE_GRAPH is is set to NO, +# can be accomplished by means of the command \includegraph. Disabling an +# include graph can be accomplished by means of the command \hideincludegraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. INCLUDE_GRAPH = YES # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are -# set to YES then doxygen will generate a graph for each documented file showing +# set to YES then Doxygen will generate a graph for each documented file showing # the direct and indirect include dependencies of the file with other documented -# files. +# files. Explicit enabling an included by graph, when INCLUDED_BY_GRAPH is set +# to NO, can be accomplished by means of the command \includedbygraph. Disabling +# an included by graph can be accomplished by means of the command +# \hideincludedbygraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. INCLUDED_BY_GRAPH = YES -# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# If the CALL_GRAPH tag is set to YES then Doxygen will generate a call # dependency graph for every global function or class method. # # Note that enabling this option will significantly increase the time of a run. @@ -2252,7 +2739,7 @@ INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO -# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# If the CALLER_GRAPH tag is set to YES then Doxygen will generate a caller # dependency graph for every global function or class method. # # Note that enabling this option will significantly increase the time of a run. @@ -2264,44 +2751,59 @@ CALL_GRAPH = NO CALLER_GRAPH = NO -# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# If the GRAPHICAL_HIERARCHY tag is set to YES then Doxygen will graphical # hierarchy of all classes instead of a textual one. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GRAPHICAL_HIERARCHY = YES -# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# If the DIRECTORY_GRAPH tag is set to YES then Doxygen will show the # dependencies a directory has on other directories in a graphical way. The # dependency relations are determined by the #include relations between the -# files in the directories. +# files in the directories. Explicit enabling a directory graph, when +# DIRECTORY_GRAPH is set to NO, can be accomplished by means of the command +# \directorygraph. Disabling a directory graph can be accomplished by means of +# the command \hidedirectorygraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. DIRECTORY_GRAPH = YES +# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels +# of child directories generated in directory dependency graphs by dot. +# Minimum value: 1, maximum value: 25, default value: 1. +# This tag requires that the tag DIRECTORY_GRAPH is set to YES. + +DIR_GRAPH_MAX_DEPTH = 1 + # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. For an explanation of the image formats see the section # output formats in the documentation of the dot tool (Graphviz (see: -# http://www.graphviz.org/)). -# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order -# to make the SVG files visible in IE 9+ (other browsers do not have this -# requirement). +# https://www.graphviz.org/)). +# +# Note the formats svg:cairo and svg:cairo:cairo cannot be used in combination +# with INTERACTIVE_SVG (the INTERACTIVE_SVG will be set to NO). # Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, -# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and -# png:gdiplus:gdiplus. +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus, +# png:gdiplus:gdiplus, svg:cairo, svg:cairo:cairo, svg:svg, svg:svg:core, +# gif:cairo, gif:cairo:gd, gif:cairo:gdiplus, gif:gdiplus, gif:gdiplus:gdiplus, +# gif:gd, gif:gd:gd, jpg:cairo, jpg:cairo:gd, jpg:cairo:gdiplus, jpg:gd, +# jpg:gd:gd, jpg:gdiplus and jpg:gdiplus:gdiplus. # The default value is: png. # This tag requires that the tag HAVE_DOT is set to YES. DOT_IMAGE_FORMAT = png -# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to -# enable generation of interactive SVG images that allow zooming and panning. +# If DOT_IMAGE_FORMAT is set to svg or svg:svg or svg:svg:core, then this option +# can be set to YES to enable generation of interactive SVG images that allow +# zooming and panning. # # Note that this requires a modern browser other than Internet Explorer. Tested # and working are Firefox, Chrome, Safari, and Opera. -# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make -# the SVG files visible. Older versions of IE do not have SVG support. +# +# Note This option will be automatically disabled when DOT_IMAGE_FORMAT is set +# to svg:cairo or svg:cairo:cairo. # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2320,11 +2822,12 @@ DOT_PATH = DOTFILE_DIRS = -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the \mscfile -# command). +# You can include diagrams made with dia in Doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. -MSCFILE_DIRS = +DIA_PATH = # The DIAFILE_DIRS tag can be used to specify one or more directories that # contain dia files that are included in the documentation (see the \diafile @@ -2332,23 +2835,34 @@ MSCFILE_DIRS = DIAFILE_DIRS = -# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the -# path where java can find the plantuml.jar file. If left blank, it is assumed -# PlantUML is not used or called during a preprocessing step. Doxygen will -# generate a warning when it encounters a \startuml command in this case and -# will not generate output for the diagram. +# When using PlantUML, the PLANTUML_JAR_PATH tag should be used to specify the +# path where java can find the plantuml.jar file or to the filename of jar file +# to be used. If left blank, it is assumed PlantUML is not used or called during +# a preprocessing step. Doxygen will generate a warning when it encounters a +# \startuml command in this case and will not generate output for the diagram. PLANTUML_JAR_PATH = -# When using plantuml, the specified paths are searched for files specified by -# the !include statement in a plantuml block. +# When using PlantUML, the PLANTUML_CFG_FILE tag can be used to specify a +# configuration file for PlantUML. + +PLANTUML_CFG_FILE = + +# When using PlantUML, the specified paths are searched for files specified by +# the !include statement in a PlantUML block. PLANTUML_INCLUDE_PATH = +# The PLANTUMLFILE_DIRS tag can be used to specify one or more directories that +# contain PlantUml files that are included in the documentation (see the +# \plantumlfile command). + +PLANTUMLFILE_DIRS = + # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes # that will be shown in the graph. If the number of nodes in a graph becomes -# larger than this value, doxygen will truncate the graph, which is visualized -# by representing a node as a red box. Note that doxygen if the number of direct +# larger than this value, Doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that if the number of direct # children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that # the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. @@ -2369,18 +2883,6 @@ DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 0 -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not seem -# to support this out of the box. -# -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_TRANSPARENT = NO - # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) support @@ -2390,17 +2892,37 @@ DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO -# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# If the GENERATE_LEGEND tag is set to YES Doxygen will generate a legend page # explaining the meaning of the various boxes and arrows in the dot generated # graphs. +# Note: This tag requires that UML_LOOK isn't set, i.e. the Doxygen internal +# graphical representation for inheritance and collaboration diagrams is used. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GENERATE_LEGEND = YES -# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot +# If the DOT_CLEANUP tag is set to YES, Doxygen will remove the intermediate # files that are used to generate the various graphs. +# +# Note: This setting is not only used for dot files but also for msc temporary +# files. # The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. DOT_CLEANUP = YES + +# You can define message sequence charts within Doxygen comments using the \msc +# command. If the MSCGEN_TOOL tag is left empty (the default), then Doxygen will +# use a built-in version of mscgen tool to produce the charts. Alternatively, +# the MSCGEN_TOOL tag can also specify the name an external tool. For instance, +# specifying prog as the value, Doxygen will call the tool as prog -T +# -o . The external tool should support +# output file formats "png", "eps", "svg", and "ismap". + +MSCGEN_TOOL = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = diff --git a/apidocs/c/profapi.h b/apidocs/c/profapi.h index a4d8f5bb..c6de34a8 100644 --- a/apidocs/c/profapi.h +++ b/apidocs/c/profapi.h @@ -450,7 +450,7 @@ int prof_chat_show_themed(char *barejid, char *group, char *item, char *def, cha /** Show a message in a chat room window. -@param barejid Jabber ID of the room +@param roomjid Jabber ID of the room @param message the message to print @return 1 on success, 0 on failure */ @@ -459,7 +459,7 @@ int prof_room_show(char *roomjid, char *message); /** Show a message in a chat room window, using the specified theme, and prefix character Themes are specified in ~/.local/share/profanity/plugin_themes -@param barejid Jabber ID of the room +@param roomjid Jabber ID of the room @param group the group name in the themes file or NULL @param item the item name within the group or NULL @param def default colour if the theme cannot be found diff --git a/apidocs/python/conf.py b/apidocs/python/conf.py index e14e98c6..8ac0ac1b 100644 --- a/apidocs/python/conf.py +++ b/apidocs/python/conf.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # -# Profanity Python Plugins API documentation build configuration file, created by -# sphinx-quickstart on Thu Mar 17 23:01:31 2016. +# CProof Python Plugins API documentation build configuration file. # # This file is execfile()d with the current directory set to its # containing dir. @@ -47,25 +46,25 @@ source_suffix = '.rst' master_doc = 'index' # General information about the project. -project = u'Profanity Python Plugins API' -copyright = u'2016 - 2018, boothj5' -author = u'boothj5' +project = u'CProof Python Plugins API' +copyright = u'2025, CProof, based on Profanity by boothj5 et al.' +author = u'CProof Developers' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = u'0.5.0' +version = u'0.15.0' # The full version, including alpha/beta/rc tags. -release = u'0.5.0' +release = u'0.15.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = None +language = 'en' # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: @@ -75,7 +74,7 @@ language = None # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. -exclude_patterns = ['_build'] +exclude_patterns = ['_build', 'modules.rst'] # The reST default role (used for this markup: `text`) to use for all # documents. @@ -122,7 +121,7 @@ html_theme = 'default' # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". -html_title = "Profanity Python Plugins" +html_title = "CProof Python Plugins" # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None @@ -139,7 +138,7 @@ html_title = "Profanity Python Plugins" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +# html_static_path = ['_static'] # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied @@ -202,7 +201,7 @@ html_show_copyright = False #html_search_scorer = 'scorer.js' # Output file base name for HTML help builder. -htmlhelp_basename = 'ProfanityPythonPluginsAPIdoc' +htmlhelp_basename = 'CProofPythonPluginsAPIdoc' # -- Options for LaTeX output --------------------------------------------- @@ -224,8 +223,8 @@ latex_elements = { # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ - (master_doc, 'ProfanityPythonPluginsAPI.tex', u'Profanity Python Plugins API Documentation', - u'boothj5', 'manual'), + (master_doc, 'CProofPythonPluginsAPI.tex', u'CProof Python Plugins API Documentation', + u'CProof Developers', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of @@ -254,7 +253,7 @@ latex_documents = [ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - (master_doc, 'profanitypythonpluginsapi', u'Profanity Python Plugins API Documentation', + (master_doc, 'cproofpythonpluginsapi', u'CProof Python Plugins API Documentation', [author], 1) ] diff --git a/apidocs/python/index.rst b/apidocs/python/index.rst index a60846c8..1526302b 100644 --- a/apidocs/python/index.rst +++ b/apidocs/python/index.rst @@ -1,8 +1,8 @@ -Profanity Python Plugins API -============================ +CProof Python Plugins API +=========================== -The ``prof`` module describes functions that plugins may call to interact with Profanity. -The ``plugin`` module describes functions that plugins may define to be notified of various events in Profanity. +The ``prof`` module describes functions that plugins may call to interact with CProof. +The ``plugin`` module describes functions that plugins may define to be notified of various events in CProof. Contents: @@ -11,4 +11,5 @@ Contents: prof plugin -* :ref:`genindex` + +:ref:`genindex` diff --git a/apidocs/python/src/plugin.py b/apidocs/python/src/plugin.py index 7a375c8a..59f07328 100644 --- a/apidocs/python/src/plugin.py +++ b/apidocs/python/src/plugin.py @@ -1,360 +1,641 @@ """ -This page describes functions that plugins may implement to be called from Profanity on certain events. All functions are optional. +The plugin module defines optional callback functions that CProof plugins can +implement to handle events such as startup, shutdown, message processing, and +presence updates. -Examples: :: - def prof_on_start(): - prof.cons_show("Profanity has started...") - def prof_pre_room_message_display(room, nick, message): - prof.cons_show("Manipulating chat room message before display...") - new_message = message + " (added by plugin)" - return new_message + import prof - def prof_on_contact_presence(barejid, resource, presence, status, priority): - notify_message = barejid + " is " + presence - prof.notify(notify_message, 5, "Presence") +All functions are optional and are called by CProof when the corresponding event +occurs. String parameters and return values are Python 3 str types. """ -def prof_init(version, status, account_name, fulljid): - """Called when a plugin is loaded, either when profanity is started, or when the ``/plugins load`` or ``/plugins install`` commands are called +# Initialization and Lifecycle +# --------------------------- - :param version: the version of Profanity - :param status: the package status of Profanity, ``"development"`` or ``"release"`` - :param account_name: account name of the currently logged in account, or ``None`` if not logged in - :param fulljid: the users full Jabber ID (barejid and resource) if logged in, ``None`` otherwise - :type version: str or unicode - :type status: str or unicode - :type account_name: str, unicode or None - :type fulljid: str, unicode or None +def prof_init(version: str, status: str, account_name: str | None, fulljid: str | None) -> None: + """Initializes the plugin when loaded by CProof. + + Called when CProof starts or when the plugin is loaded via the ``/plugins load`` + or ``/plugins install`` commands. + + Args: + version: The version of CProof (e.g., ``"1.0.0"``). + status: The package status of CProof (``"development"`` or ``"release"``). + account_name: The account name of the logged-in user, or None if not logged in. + fulljid: The full Jabber ID (barejid/resource) of the logged-in user, or None if not logged in. + + Returns: + None + + Example: + + :: + + def prof_init(version: str, status: str, account_name: str | None, fulljid: str | None) -> None: + prof.cons_show(f"MyPlugin for CProof {version} ({status}) has been loaded, account: {account_name}") """ pass +def prof_on_start() -> None: + """Called when CProof starts. -def prof_on_start(): - """Called when Profanity is started + Use this to perform setup tasks that should occur at application startup. + + Args: + None + + Returns: + None + + Example: + + :: + + def prof_on_start() -> None: + prof.cons_show("CProof has started...") """ pass +def prof_on_shutdown() -> None: + """Called when CProof is shutting down. -def prof_on_shutdown(): - """Called when the user quits Profanity + Use this to perform cleanup tasks before the application exits. + + Args: + None + + Returns: + None + + Example: + + :: + + def prof_on_shutdown() -> None: + prof.cons_show("CProof is shutting down...") """ pass +def prof_on_unload() -> None: + """Called when the plugin is unloaded via the ``/plugins unload`` command. -def prof_on_unload(): - """Called when a plugin is unloaded with the ``/plugins unload`` command + Use this to clean up plugin-specific resources. + + Args: + None + + Returns: + None + + Example: + + :: + + def prof_on_unload() -> None: + prof.cons_show("Plugin unloaded") """ pass +def prof_on_connect(account_name: str, fulljid: str) -> None: + """Called when a user connects to CProof with an account. -def prof_on_connect(account_name, fulljid): - """Called when the user connects with an account + Args: + account_name: The account name used for login. + fulljid: The full Jabber ID (barejid/resource) of the connected account. - :param account_name: account name of the account used for logging in - :param fulljid: the full Jabber ID (barejid and resource) of the account - :type account_name: str or unicode - :type fulljid: str or unicode + Returns: + None + + Example: + + :: + + def prof_on_connect(account_name: str, fulljid: str) -> None: + prof.cons_show(f"Connected as {account_name} ({fulljid})") """ pass +def prof_on_disconnect(account_name: str, fulljid: str) -> None: + """Called when a user disconnects an account from CProof. -def prof_on_disconnect(account_name, fulljid): - """Called when the user disconnects an account + Args: + account_name: The account name being disconnected. + fulljid: The full Jabber ID (barejid/resource) of the disconnected account. - :param account_name: account name of the account being disconnected - :param fulljid: the full Jabber ID (barejid and resource) of the account - :type account_name: str or unicode - :type fulljid: str or unicode + Returns: + None + + Example: + + :: + + def prof_on_disconnect(account_name: str, fulljid: str) -> None: + prof.cons_show(f"Disconnected {account_name} ({fulljid})") """ pass +# Chat Message Handlers +# --------------------- -def prof_pre_chat_message_display(barejid, resource, message): - """Called before a chat message is displayed +def prof_pre_chat_message_display(barejid: str, resource: str, message: str) -> str | None: + """Called before a chat message is displayed in a chat window. - :param barejid: Jabber ID of the message sender - :param resource: resource of the message sender - :param message: the received message - :type barejid: str or unicode - :type resource: str or unicode - :type message: str or unicode - :return: the new message to display, or ``None`` to preserve the original message - :rtype: str or unicode + Allows the plugin to modify or cancel the message display. + + Args: + barejid: The Jabber ID of the message sender (e.g., ``bob@example.com``). + resource: The sender's resource (e.g., ``laptop``). + message: The received message. + + Returns: + str | None: The modified message to display, or None to preserve the original. + + Example: + + :: + + def prof_pre_chat_message_display(barejid: str, resource: str, message: str) -> str | None: + new_message = f"{message} (from {barejid})" + return new_message """ pass +def prof_post_chat_message_display(barejid: str, resource: str, message: str) -> None: + """Called after a chat message is displayed in a chat window. -def prof_post_chat_message_display(barejid, resource, message): - """Called after a chat message is displayed + Use this to perform actions after the message is shown. - :param barejid: Jabber ID of the message sender - :param resource: resource of the message sender - :param message: the received message - :type barejid: str or unicode - :type resource: str or unicode - :type message: str or unicode + Args: + barejid: The Jabber ID of the message sender (e.g., ``bob@example.com``). + resource: The sender's resource (e.g., ``laptop``). + message: The displayed message. + + Returns: + None + + Example: + + :: + + def prof_post_chat_message_display(barejid: str, resource: str, message: str) -> None: + prof.cons_show(f"Displayed message from {barejid}/{resource}: {message}") """ pass +def prof_pre_chat_message_send(barejid: str, message: str) -> str | None: + """Called before a chat message is sent from CProof. -def prof_pre_chat_message_send(barejid, message): - """Called before a chat message is sent + Allows the plugin to modify or cancel the message. - :param barejid: Jabber ID of the message recipient - :param message: the message to be sent - :type barejid: str or unicode - :type message: str or unicode - :return: the modified or original message to send, or ``None`` to cancel sending of the message - :rtype: str or unicode + Args: + barejid: The Jabber ID of the recipient (e.g., ``bob@example.com``). + message: The message to be sent. + + Returns: + str | None: The modified message to send, or None to cancel sending. + + Example: + + :: + + def prof_pre_chat_message_send(barejid: str, message: str) -> str | None: + return f"{message} (sent by plugin)" """ pass +def prof_post_chat_message_send(barejid: str, message: str) -> None: + """Called after a chat message is sent from CProof. -def prof_post_chat_message_send(barejid, message): - """Called after a chat message has been sent + Use this to log or react to sent messages. - :param barejid: Jabber ID of the message recipient - :param message: the sent message - :type barejid: str or unicode - :type message: str or unicode + Args: + barejid: The Jabber ID of the recipient (e.g., ``bob@example.com``). + message: The sent message. + + Returns: + None + + Example: + + :: + + def prof_post_chat_message_send(barejid: str, message: str) -> None: + prof.cons_show(f"Sent to {barejid}: {message}") """ pass +# Room Message Handlers +# --------------------- -def prof_pre_room_message_display(barejid, nick, message): - """Called before a chat room message is displayed +def prof_pre_room_message_display(barejid: str, nick: str, message: str) -> str | None: + """Called before a chat room message is displayed. - :param barejid: Jabber ID of the room - :param nick: nickname of message sender - :param message: the received message - :type barejid: str or unicode - :type nick: str or unicode - :type message: str or unicode - :return: the new message to display, or ``None`` to preserve the original message - :rtype: str or unicode + Allows the plugin to modify or cancel the message display. + + Args: + barejid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + nick: The nickname of the message sender. + message: The received message. + + Returns: + str | None: The modified message to display, or None to preserve the original. + + Example: + + :: + + def prof_pre_room_message_display(barejid: str, nick: str, message: str) -> str | None: + return f"{message} (from {nick})" """ pass +def prof_post_room_message_display(barejid: str, nick: str, message: str) -> None: + """Called after a chat room message is displayed. -def prof_post_room_message_display(barejid, nick, message): - """Called after a chat room message is displayed + Use this to perform actions after the message is shown. - :param barejid: Jabber ID of the room - :param nick: nickname of the message sender - :param message: the received message - :type barejid: str or unicode - :type nick: str or unicode - :type message: str or unicode + Args: + barejid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + nick: The nickname of the message sender. + message: The displayed message. + + Returns: + None + + Example: + + :: + + def prof_post_room_message_display(barejid: str, nick: str, message: str) -> None: + prof.cons_show(f"Displayed in {barejid} from {nick}: {message}") """ pass +def prof_pre_room_message_send(barejid: str, message: str) -> str | None: + """Called before a chat room message is sent. -def prof_pre_room_message_send(barejid, message): - """Called before a chat room message is sent + Allows the plugin to modify or cancel the message. - :param barejid: Jabber ID of the room - :param message: the message to be sent - :type barejid: str or unicode - :type message: str or unicode - :return: the modified or original message to send, or ``None`` to cancel sending of the message - :rtype: str or unicode + Args: + barejid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + message: The message to be sent. + + Returns: + str | None: The modified message to send, or None to cancel sending. + + Example: + + :: + + def prof_pre_room_message_send(barejid: str, message: str) -> str | None: + return f"{message} (sent by plugin)" """ pass +def prof_post_room_message_send(barejid: str, message: str) -> None: + """Called after a chat room message is sent. -def prof_post_room_message_send(barejid, message): - """Called after a chat room message has been sent + Use this to log or react to sent messages. - :param barejid: Jabber ID of the room - :param message: the sent message - :type barejid: str or unicode - :type message: str or unicode + Args: + barejid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + message: The sent message. + + Returns: + None + + Example: + + :: + + def prof_post_room_message_send(barejid: str, message: str) -> None: + prof.cons_show(f"Sent to {barejid}: {message}") """ pass +def prof_on_room_history_message(barejid: str, nick: str, message: str, timestamp: str) -> None: + """Called when a chat room history message is received from the server. -def prof_on_room_history_message(barejid, nick, message, timestamp): - """Called when the server sends a chat room history message + Args: + barejid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + nick: The nickname of the message sender. + message: The received message. + timestamp: The message's original send time in ISO 8601 format (e.g., ``2025-09-10T19:45:00Z``). - :param barejid: Jabber ID of the room - :param nick: nickname of the message sender - :param message: the message to be sent - :param timestamp: time the message was originally sent to the room, in ISO8601 format - :type barejid: str or unicode - :type nick: str or unicode - :type message: str or unicode - :type timestamp: str or unicode + Returns: + None + + Example: + + :: + + def prof_on_room_history_message(barejid: str, nick: str, message: str, timestamp: str) -> None: + prof.cons_show(f"History in {barejid} from {nick} at {timestamp}: {message}") """ pass +# Private Message Handlers +# ------------------------ -def prof_pre_priv_message_display(barejid, nick, message): - """Called before a private chat room message is displayed +def prof_pre_priv_message_display(barejid: str, nick: str, message: str) -> str | None: + """Called before a private chat room message is displayed. - :param barejid: Jabber ID of the room - :param nick: nickname of message sender - :param message: the received message - :type barejid: str or unicode - :type nick: str or unicode - :type message: str or unicode - :return: the new message to display, or ``None`` to preserve the original message - :rtype: str or unicode + Allows the plugin to modify or cancel the message display. + + Args: + barejid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + nick: The nickname of the message sender. + message: The received message. + + Returns: + str | None: The modified message to display, or None to preserve the original. + + Example: + + :: + + def prof_pre_priv_message_display(barejid: str, nick: str, message: str) -> str | None: + return f"{message} (private from {nick})" """ pass +def prof_post_priv_message_display(barejid: str, nick: str, message: str) -> None: + """Called after a private chat room message is displayed. -def prof_post_priv_message_display(barejid, nick, message): - """Called after a private chat room message is displayed + Use this to perform actions after the message is shown. - :param barejid: Jabber ID of the room - :param nick: nickname of the message sender - :param message: the received message - :type barejid: str or unicode - :type nick: str or unicode - :type message: str or unicode + Args: + barejid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + nick: The nickname of the message sender. + message: The displayed message. + + Returns: + None + + Example: + + :: + + def prof_post_priv_message_display(barejid: str, nick: str, message: str) -> None: + prof.cons_show(f"Displayed private in {barejid} from {nick}: {message}") """ pass +def prof_pre_priv_message_send(barejid: str, nick: str, message: str) -> str | None: + """Called before a private chat room message is sent. -def prof_pre_priv_message_send(barejid, nick, message): - """Called before a private chat room message is sent + Allows the plugin to modify or cancel the message. - :param barejid: Jabber ID of the room - :param nick: nickname of message recipient - :param message: the message to be sent - :type barejid: str or unicode - :type nick: str or unicode - :type message: str or unicode - :return: the modified or original message to send, or ``None`` to cancel sending of the message - :rtype: str or unicode + Args: + barejid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + nick: The nickname of the message recipient. + message: The message to be sent. + + Returns: + str | None: The modified message to send, or None to cancel sending. + + Example: + + :: + + def prof_pre_priv_message_send(barejid: str, nick: str, message: str) -> str | None: + return f"{message} (private to {nick})" """ pass +def prof_post_priv_message_send(barejid: str, nick: str, message: str) -> None: + """Called after a private chat room message is sent. -def prof_post_priv_message_send(barejid, nick, message): - """Called after a private chat room message has been sent + Use this to log or react to sent messages. - :param barejid: Jabber ID of the room - :param nick: nickname of the message recipient - :param message: the sent message - :type barejid: str or unicode - :type nick: str or unicode - :type message: str or unicode + Args: + barejid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + nick: The nickname of the message recipient. + message: The sent message. + + Returns: + None + + Example: + + :: + + def prof_post_priv_message_send(barejid: str, nick: str, message: str) -> None: + prof.cons_show(f"Sent private to {nick} in {barejid}: {message}") """ pass +# Stanza Handlers +# --------------- -def prof_on_message_stanza_send(stanza): - """Called before an XMPP message stanza is sent +def prof_on_message_stanza_send(stanza: str) -> str | None: + """Called before an XMPP message stanza is sent. - :param stanza: The stanza to send - :type stanza: str or unicode - :return: The new stanza to send, or ``None`` to preserve the original stanza - :rtype: str or unicode + Allows the plugin to modify or cancel the stanza. + + Args: + stanza: The XMPP message stanza to send. + + Returns: + str | None: The modified stanza to send, or None to preserve the original. + + Example: + + :: + + def prof_on_message_stanza_send(stanza: str) -> str | None: + prof.cons_show(f"Sending message stanza: {stanza}") + return stanza """ pass +def prof_on_message_stanza_receive(stanza: str) -> bool: + """Called when an XMPP message stanza is received. -def prof_on_message_stanza_receive(stanza): - """Called when an XMPP message stanza is received + Allows the plugin to control whether CProof processes the stanza. - :param stanza: The stanza received - :type stanza: str or unicode - :return: ``True`` if Profanity should continue to process the message stanza, ``False`` otherwise - :rtype: boolean + Args: + stanza: The received XMPP message stanza. + + Returns: + bool: True to allow CProof to process the stanza, False to block processing. + + Example: + + :: + + def prof_on_message_stanza_receive(stanza: str) -> bool: + prof.cons_show(f"Received message stanza: {stanza}") + return True """ pass +def prof_on_presence_stanza_send(stanza: str) -> str | None: + """Called before an XMPP presence stanza is sent. -def prof_on_presence_stanza_send(stanza): - """Called before an XMPP presence stanza is sent + Allows the plugin to modify or cancel the stanza. - :param stanza: The stanza to send - :type stanza: str or unicode - :return: The new stanza to send, or ``None`` to preserve the original stanza - :rtype: str or unicode + Args: + stanza: The XMPP presence stanza to send. + + Returns: + str | None: The modified stanza to send, or None to preserve the original. + + Example: + + :: + + def prof_on_presence_stanza_send(stanza: str) -> str | None: + prof.cons_show(f"Sending presence stanza: {stanza}") + return stanza """ pass +def prof_on_presence_stanza_receive(stanza: str) -> bool: + """Called when an XMPP presence stanza is received. -def prof_on_presence_stanza_receive(stanza): - """Called when an XMPP presence stanza is received + Allows the plugin to control whether CProof processes the stanza. - :param stanza: The stanza received - :type stanza: str or unicode - :return: ``True`` if Profanity should continue to process the presence stanza, ``False`` otherwise - :rtype: boolean + Args: + stanza: The received XMPP presence stanza. + + Returns: + bool: True to allow CProof to process the stanza, False to block processing. + + Example: + + :: + + def prof_on_presence_stanza_receive(stanza: str) -> bool: + prof.cons_show(f"Received presence stanza: {stanza}") + return True """ pass +def prof_on_iq_stanza_send(stanza: str) -> str | None: + """Called before an XMPP IQ stanza is sent. -def prof_on_iq_stanza_send(stanza): - """Called before an XMPP iq stanza is sent + Allows the plugin to modify or cancel the stanza. - :param stanza: The stanza to send - :type stanza: str or unicode - :return: The new stanza to send, or ``None`` to preserve the original stanza - :rtype: str or unicode + Args: + stanza: The XMPP IQ stanza to send. + + Returns: + str | None: The modified stanza to send, or None to preserve the original. + + Example: + + :: + + def prof_on_iq_stanza_send(stanza: str) -> str | None: + prof.cons_show(f"Sending IQ stanza: {stanza}") + return stanza """ pass +def prof_on_iq_stanza_receive(stanza: str) -> bool: + """Called when an XMPP IQ stanza is received. -def prof_on_iq_stanza_receive(stanza): - """Called when an XMPP iq stanza is received + Allows the plugin to control whether CProof processes the stanza. - :param stanza: The stanza received - :type stanza: str or unicode - :return: ``True`` if Profanity should continue to process the iq stanza, ``False`` otherwise - :rtype: boolean + Args: + stanza: The received XMPP IQ stanza. + + Returns: + bool: True to allow CProof to process the stanza, False to block processing. + + Example: + + :: + + def prof_on_iq_stanza_receive(stanza: str) -> bool: + prof.cons_show(f"Received IQ stanza: {stanza}") + return True """ pass +# Contact Presence Handlers +# ------------------------- -def prof_on_contact_offline(barejid, resource, status): - """Called when a contact goes offline +def prof_on_contact_offline(barejid: str, resource: str, status: str | None) -> None: + """Called when a contact goes offline. - :param barejid: Jabber ID of the contact - :param resource: the resource being disconnected - :param status: the status message received with the offline presence, or ``None`` - :type barejid: str or unicode - :type resource: str or unicode - :type status: str or unicode + Args: + barejid: The Jabber ID of the contact (e.g., ``bob@example.com``). + resource: The resource being disconnected (e.g., ``laptop``). + status: The status message received with the offline presence, or None. + + Returns: + None + + Example: + + :: + + def prof_on_contact_offline(barejid: str, resource: str, status: str | None) -> None: + prof.cons_show(f"{barejid}/{resource} went offline: {status or 'No status'}") """ pass +def prof_on_contact_presence(barejid: str, resource: str, presence: str, status: str | None, priority: int) -> None: + """Called when a presence notification is received from a contact. -def prof_on_contact_presence(barejid, resource, presence, status, priority): - """Called when a presence notification is received from a contact + Args: + barejid: The Jabber ID of the contact (e.g., ``bob@example.com``). + resource: The resource of the contact (e.g., ``laptop``). + presence: The contact's presence (``"chat"``, ``"online"``, ``"away"``, ``"xa"``, or ``"dnd"``). + status: The status message received with the presence, or None. + priority: The priority associated with the resource. - :param barejid: Jabber ID of the contact - :param resource: the resource being disconnected - :param presence: presence of the contact, one of ``"chat"``, ``"online"``, ``"away"``, ``"xa"`` or ``"dnd"`` - :param status: the status message received with the presence, or ``None`` - :param priority: the priority associated with the resource - :type barejid: str or unicode - :type resource: str or unicode - :type presence: str or unicode - :type status: str or unicode - :type priority: int + Returns: + None + + Example: + + :: + + def prof_on_contact_presence(barejid: str, resource: str, presence: str, status: str | None, priority: int) -> None: + prof.notify(f"{barejid} is {presence}", 5000, "Presence") """ pass +# Window Focus Handlers +# --------------------- -def prof_on_chat_win_focus(barejid): - """Called when a chat window is focused +def prof_on_chat_win_focus(barejid: str) -> None: + """Called when a chat window is focused. - :param barejid: Jabber ID of the chat window recipient - :type barejid: str or unicode + Args: + barejid: The Jabber ID of the chat window recipient (e.g., ``bob@example.com``). + + Returns: + None + + Example: + + :: + + def prof_on_chat_win_focus(barejid: str) -> None: + prof.cons_show(f"Focused chat window for {barejid}") """ pass +def prof_on_room_win_focus(barejid: str) -> None: + """Called when a chat room window is focused. -def prof_on_room_win_focus(barejid): - """Called when a chat room window is focused + Args: + barejid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). - :param barejid: Jabber ID of the room - :type barejid: str or unicode + Returns: + None + + Example: + + :: + + def prof_on_room_win_focus(barejid: str) -> None: + prof.cons_show(f"Focused room window for {barejid}") """ pass diff --git a/apidocs/python/src/prof.py b/apidocs/python/src/prof.py index 64b3ab13..1902faaf 100644 --- a/apidocs/python/src/prof.py +++ b/apidocs/python/src/prof.py @@ -1,903 +1,1211 @@ """ -This module contains the functions available to plugins to interact with Profanity. +The prof module provides a Python API for plugins to interact with CProof. +Plugins must import this module to access its functions: -The ``prof`` module must be imported :: + import prof -Profanity accepts both ``str`` and ``unicode`` objects as string arguments, to allow plugins to work with both Python 2 and 3. +Functions are grouped into sections for console interaction, command management, +autocompletion, window management, chat and room messaging, XMPP operations, +settings, user/room information, and notifications/logging. """ +from typing import Protocol +# Callback Protocols +# ----------------- +class CommandCallback(Protocol): + """Protocol for command callbacks accepting variable string arguments.""" + def __call__(self, *command_parameters: str) -> None: ... -def cons_alert(): - """ - Highlights the console window in the status bar. - """ - pass +class TimedCallback(Protocol): + """Protocol for timed callbacks accepting no arguments.""" + def __call__(self) -> None: ... +class WindowCallback(Protocol): + """Protocol for window callbacks accepting a window ID and message.""" + def __call__(self, win_id: str, message: str) -> None: ... -def cons_show(message): - """Show a message in the console window. +# Console Functions +# ----------------- - :param message: the message to print - :type message: str or unicode +def cons_alert() -> None: + """Highlights the console window in the CProof status bar to indicate activity. + + Args: + None + + Returns: + None Example: - :: - prof.cons_show("This will appear in the console window") + + :: + + prof.cons_alert() # Highlights the console window """ pass +def cons_show(message: str) -> None: + """Displays a message in the CProof console window. -def cons_show_themed(group, key, default, message): - """Show a message in the console, using the specified theme.\n - Themes are specified in ``~/.local/share/profanity/plugin_themes`` + Args: + message: The message to display. - :param group: the group name in the themes file - :param key: the item name within the group - :param default: default colour if the theme cannot be found - :param message: the message to print - :type group: str, unicode or None - :type key: str, unicode or None - :type default: str, unicode or None - :type message: str or unicode + Returns: + None Example: - :: - prof.cons_show_themed("myplugin", "text", None, "Plugin themed message") + + :: + + prof.cons_show("This appears in the console window") """ pass +def cons_show_themed(group: str | None, key: str | None, default: str | None, message: str) -> None: + """Displays a message in the console window using a specified theme. -def cons_bad_cmd_usage(command): - """Show a message indicating the command has been called incorrectly. + Themes are defined in ``~/.local/share/cproof/plugin_themes``. If the theme is + not found, the default color is used. - :param command: the command name with leading slash, e.g. ``"/say"`` - :type command: str or unicode + Args: + group: The theme group name, or None to use default styling. + key: The item name within the group, or None to use default styling. + default: The default color if the theme is not found, or None for no color. + message: The message to display. + + Returns: + None Example: - :: - prof.cons_bad_cmd_usage("/mycommand") + + :: + + prof.cons_show_themed("myplugin", "text", "white", "Themed message") """ pass +def cons_bad_cmd_usage(command: str) -> None: + """Displays an error message in the console for incorrect command usage. -def register_command(name, min_args, max_args, synopsis, description, arguments, examples, callback): - """Register a new command, with help information, and callback for command execution.\n - Profanity will do some basic validation when the command is called using the argument range. + Args: + command: The command name, including the leading slash (e.g., ``/say``). - :param name: the command name with leading slash, e.g. ``"/say"`` - :param min_args: minimum number or arguments that the command considers to be a valid call - :param max_args: maximum number or arguments that the command considers to be a valid call - :param synopsis: command usages - :param description: a short description of the command - :param arguments: argument descriptions, each element should be of the form [arguments, description] - :param examples: example usages - :param callback: function to call when the command is executed - :type name: str or unicode - :type min_args: int - :type max_args: int - :type synopsis: list of str or unicode - :type description: str or unicode - :type arguments: list of list of str or unicode - :type examples: list of str or unicode - :type callback: function + Returns: + None Example: - :: - synopsis = [ - "/newcommand action1|action2", - "/newcommand print ", - "/newcommand dosomething []" - ] - description = "An example for the documentation" - args = [ - [ "action1|action2", "Perform action1 or action2" ], - [ "print ", "Print argument" ], - [ "dosomething []", "Do something, optionally with the argument" ] - ] - examples = [ - "/newcommand action1", - "/newcommand print \\"Test debug message\\"", - "/newcommand dosomething" - ] - prof.register_command("/newcommand", 1, 2, synopsis, description, args, examples, my_function) + :: + + prof.cons_bad_cmd_usage("/mycommand") # Shows usage error for /mycommand """ pass +# Command Management +# ------------------ -def register_timed(callback, interval): - """Register a function that Profanity will call periodically. +def register_command( + name: str, + min_args: int, + max_args: int, + synopsis: list[str], + description: str, + arguments: list[list[str]], + examples: list[str], + callback: CommandCallback, +) -> None: + """Registers a new command in CProof with help information and a callback. - :param callback: the function to call - :param interval: the time between each call to the function, in seconds - :type callback: function - :type interval: int + CProof validates the number of arguments (between min_args and max_args) when + the command is invoked. The callback function accepts variable string arguments + representing the command parameters. + + Args: + name: The command name, including the leading slash (e.g., ``/say``). + min_args: Minimum number of arguments required. + max_args: Maximum number of arguments allowed. + synopsis: List of command usage strings. + description: Short description of the command. + arguments: List of [argument, description] pairs for help text. + examples: List of example command invocations. + callback: Function to call when the command is executed, taking variable string arguments. + + Returns: + None Example: - :: - prof.register_timed(some_function, 30) + + :: + + def command_handler(*args: str) -> None: + prof.cons_show(f"Received: {args}") + if len(args) == 1 and args[0] in ("on", "off"): + prof.cons_show(f"{args[0].capitalize()}ing something") + elif len(args) == 2 and args[0] == "print": + prof.cons_show(args[1]) + else: + prof.cons_bad_cmd_usage("/new_command") + + synopsis = ["/new_command on|off", "/new_command print "] + description = "Enables, disables, or prints an argument." + arguments = [ + ["on|off", "Enable or disable something."], + ["print ", "Print the argument."] + ] + examples = ["/new_command on", "/new_command print 'test'"] + prof.register_command( + "/new_command", 1, 2, synopsis, description, arguments, examples, command_handler + ) """ pass +# Periodic Callback +# ----------------- -def completer_add(key, items): - """Add values to be autocompleted by Profanity for a command, or command argument. If the key already exists, Profanity will add the items to the existing autocomplete items for that key. +def register_timed(callback: TimedCallback, interval: int) -> None: + """Registers a function to be called periodically by CProof. - :param key: the prefix to trigger autocompletion - :param items: the items to return on autocompletion - :type key: str or unicode - :type items: list of str or unicode + Args: + callback: The function to call periodically. + interval: The time between calls, in seconds. - Examples: - :: - prof.completer_add("/mycommand", [ - "action1", - "action2", - "dosomething" - ]) - - prof.completer_add("/mycommand dosomething", [ - "thing1", - "thing2" - ]) - """ - pass - - -def completer_remove(key, items): - """Remove values from autocompletion for a command, or command argument. - - :param key: the prefix from which to remove the autocompletion items - :param items: the items to remove - :type key: str or unicode - :type items: list of str or unicode - - Examples: - :: - prof.completer_remove("/mycommand", [ - "action1", - "action2" - ]) - - prof.completer_add("/mycommand dosomething", [ - "thing1" - ]) - """ - pass - - -def completer_clear(key): - """Remove all values from autocompletion for a command, or command argument. - - :param key: the prefix from which to clear the autocompletion items - - Examples: - :: - prof.completer_clear("/mycommand") - - prof.completer_add("/mycommand dosomething") - """ - pass - - -def filepath_completer_add(prefix): - """Add filepath autocompletion for a command, or command argument. - - :param prefix: the prefix from which filepath autocompletion will be triggered - - Examples: - :: - prof.filepath_completer_add("/filecmd") - - prof.filepath_completer_add("/mycommand open") - """ - pass - - -def send_line(line): - """Send a line of input to Profanity to execute. - - :param line: the line to send - :type line: str or unicode + Returns: + None Example: - :: - prof.send_line("/who online") + + :: + + def periodic_task() -> None: + prof.cons_show("Periodic update") + + prof.register_timed(periodic_task, 30) # Calls every 30 seconds """ pass +# Autocompletion +# -------------- -def notify(message, timeout, category): - """Send a desktop notification. +def completer_add(key: str, items: list[str]) -> None: + """Adds values for autocompletion of a command or command argument. - :param message: the message to display in the notification - :param timeout: the length of time before the notification disappears in milliseconds - :param category: the category of the notification, also displayed - :type message: str or unicode - :type timeout: int - :type category: str or unicode + If the key already exists, the items are appended to the existing autocomplete + list. + + Args: + key: The prefix to trigger autocompletion (e.g., ``/mycommand`` or ``/mycommand action``). + items: The items to return on autocompletion. + + Returns: + None Example: - :: - prof.notify("Example notification for 5 seconds", 5000, "Example plugin") + + :: + + prof.completer_add("/mycommand", ["action1", "action2"]) + prof.completer_add("/mycommand dosomething", ["thing1", "thing2"]) """ pass +def completer_remove(key: str, items: list[str]) -> None: + """Removes values from autocompletion for a command or command argument. -def get_current_recipient(): - """Retrieve the Jabber ID of the current chat recipient, when in a chat window. + Args: + key: The prefix from which to remove autocomplete items (e.g., ``/mycommand``). + items: The items to remove from the autocomplete list. - :return: the Jabber ID of the current chat recipient e.g. ``"buddy@chat.org"``, or ``None`` if not in a chat window. - :rtype: str - """ - pass - - -def get_current_muc(): - """Retrieve the Jabber ID of the current room, when in a chat room window. - - :return: the Jabber ID of the current chat room e.g. ``"metalchat@conference.chat.org"``, or ``None`` if not in a chat room window. - :rtype: str - """ - pass - - -def get_current_nick(): - """Retrieve the users nickname in a chat room, when in a chat room window. - - :return: the users nickname in the current chat room e.g. ``"eddie"``, or ``None`` if not in a chat room window. - :rtype: str - """ - pass - - -def get_name_from_roster(barejid): - """Retrieve a nickname from a barejid if it is in the roster. - - :return: the users nickname e.g. "eddie", or the input barejid if it is not in the roster. - :rtype: str - """ - pass - - -def get_barejid_from_roster(name): - """Retrieve the barejid for a given nickname if it is in the roster. - - :return: the users barejid e.g. "eddie@server.tld", or ``None`` if the nickname is not in the roster. - :rtype: str - """ - pass - - -def get_current_occupants(): - """Retrieve nicknames of all occupants in a chat room, when in a chat room window. - - :return: nicknames of all occupants in the current room or an empty list if not in a chat room window. - :rtype: list of str - """ - pass - - -def get_room_nick(barejid): - """Retrieve current nickname used in chat room. - - :return: Room nickname. - :rtype: str - """ - pass - - -def current_win_is_console(): - """Determine whether or not the Console window is currently focused. - - :return: ``True`` if the user is currently in the Console window, ``False`` otherwise. - :rtype: boolean - """ - pass - - -def log_debug(message): - """Write to the Profanity log at level ``DEBUG``. - - :param message: the message to log - :type message: str or unicode - """ - pass - - -def log_info(): - """Write to the Profanity log at level ``INFO``. - - :param message: the message to log - :type message: str or unicode - """ - pass - - -def log_warning(): - """Write to the Profanity log at level ``WARNING``. - - :param message: the message to log - :type message: str or unicode - """ - pass - - -def log_error(): - """Write to the Profanity log at level ``ERROR``. - - :param message: the message to log - :type message: str or unicode - """ - pass - - -def win_exists(tag): - """Determine whether or not a plugin window currently exists for the tag. - - :param tag: The tag used when creating the plugin window - :type tag: str or unicode - :return: ``True`` if the window exists, ``False`` otherwise. - :rtype: boolean + Returns: + None Example: - :: - prof.win_exists("My Plugin") + + :: + + prof.completer_remove("/mycommand", ["action1", "action2"]) """ pass +def completer_clear(key: str) -> None: + """Clears all autocomplete values for a command or command argument. -def win_create(tag, callback): - """Create a plugin window. + Args: + key: The prefix to clear autocomplete items for (e.g., ``/mycommand``). - :param tag: The tag used to refer to the window - :type tag: str or unicode - :param callback: function to call when the window receives input - :type callback: function + Returns: + None Example: - :: - prof.win_create("My Plugin", window_handler) + + :: + + prof.completer_clear("/mycommand") """ pass +def filepath_completer_add(prefix: str) -> None: + """Enables filepath autocompletion for a command or command argument. -def win_focus(tag): - """Focus a plugin window. + Args: + prefix: The prefix to trigger filepath autocompletion (e.g., ``/filecmd``). - :param tag: The tag of the window to focus - :type tag: str or unicode + Returns: + None Example: - :: - prof.win_focus("My Plugin") + + :: + + prof.filepath_completer_add("/filecmd") # Enables filepath completion """ pass +# Window Management +# ----------------- -def win_show(tag, message): - """Show a message in the plugin window. +def win_exists(tag: str) -> bool: + """Checks if a plugin window with the specified tag exists. - :param tag: The tag of the window to display the message - :type tag: str or unicode - :param message: the message to print - :type message: str or unicode + Args: + tag: The tag identifying the plugin window. + + Returns: + bool: True if the window exists, False otherwise. Example: - :: - prof.win_show("My Plugin", "This will appear in the plugin window") + + :: + + if prof.win_exists("MyPlugin"): + prof.cons_show("Window exists") """ pass +def win_create(tag: str, callback: WindowCallback) -> None: + """Creates a plugin window with the specified tag. -def win_show_themed(tag, group, key, default, message): - """Show a message in the plugin window, using the specified theme.\n - Themes are specified in ``~/.local/share/profanity/plugin_themes`` + The callback processes input messages, typically using the model from the window + title, and is called with the window tag and message. - :param tag: The tag of the window to display the message - :type tag: str or unicode - :param group: the group name in the themes file - :param key: the item name within the group - :param default: default colour if the theme cannot be found - :param message: the message to print - :type group: str, unicode or None - :type key: str, unicode or None - :type default: str, unicode or None - :type message: str or unicode + Args: + tag: The tag identifying the plugin window. + callback: Function to process window input, taking the window tag and message. + + Returns: + None Example: - :: - prof.win_show_themed("My Plugin", "myplugin", "text", None, "Plugin themed message") + + :: + + def handler(win_id: str, message: str) -> None: + prof.win_show(win_id, f"Processed: {message}") + + prof.win_create("MyPlugin", handler) """ pass +def win_focus(tag: str) -> None: + """Focuses the plugin window with the specified tag. -def send_stanza(stanza): - """Send an XMPP stanza + Args: + tag: The tag identifying the plugin window. - :param stanza: An XMPP stanza - :type stanza: str or unicode - :return: ``True`` if the stanza was sent successfully, ``False`` otherwise - :rtype: boolean + Returns: + None Example: - :: - prof.send_stanza("") + + :: + + prof.win_focus("MyPlugin") # Focuses the MyPlugin window """ pass +def win_show(tag: str, message: str) -> None: + """Displays a message in the plugin window with the specified tag. -def settings_boolean_get(group, key, default): - """Get a boolean setting\n - Settings must be specified in ``~/.local/share/profanity/plugin_settings`` + Args: + tag: The tag identifying the plugin window. + message: The message to display. - :param group: the group name in the settings file - :param key: the item name within the group - :param default: default value if setting not found - :type group: str or unicode - :type key: str or unicode - :type default: boolean + Returns: + None Example: - :: - prof.settings_boolean_get("myplugin", "notify", False) + + :: + + prof.win_show("MyPlugin", "Message in plugin window") """ pass +def win_show_themed(tag: str, group: str | None, key: str | None, default: str | None, message: str) -> None: + """Displays a message in the plugin window using a specified theme. -def settings_boolean_set(group, key, value): - """Set a boolean setting\n - Settings must be specified in ``~/.local/share/profanity/plugin_settings`` + Themes are defined in ``~/.local/share/cproof/plugin_themes``. If the theme is + not found, the default color is used. - :param group: the group name in the settings file - :param key: the item name within the group - :param value: value to set - :type group: str or unicode - :type key: str or unicode - :type value: boolean + Args: + tag: The tag identifying the plugin window. + group: The theme group name, or None to use default styling. + key: The item name within the group, or None to use default styling. + default: The default color if the theme is not found, or None for no color. + message: The message to display. + + Returns: + None Example: - :: - prof.settings_boolean_set("myplugin", "activate", True) + + :: + + prof.win_show_themed("MyPlugin", "myplugin", "text", "white", "Themed message") """ pass +# Chat and Room Messaging +# ----------------------- -def settings_string_get(group, key, default): - """Get a string setting\n - Settings must be specified in ``~/.local/share/profanity/plugin_settings`` +def chat_show(barejid: str, message: str) -> bool: + """Displays a message in the chat window for the specified contact. - :param group: the group name in the settings file - :param key: the item name within the group - :param default: default value if setting not found - :type group: str or unicode - :type key: str or unicode - :type default: str + Args: + barejid: The Jabber ID of the recipient (e.g., ``bob@example.com``). + message: The message to display. + + Returns: + bool: True if the message was displayed, False if the chat window does not + exist. Example: - :: - prof.settings_string_get("myplugin", "prefix", "prefix-->") + + :: + + if prof.chat_show("bob@example.com", "Hello from plugin"): + prof.cons_show("Message displayed") """ pass +def chat_show_themed( + barejid: str, + group: str | None, + key: str | None, + default: str | None, + ch: str | None, + message: str, +) -> bool: + """Displays a message in the chat window with a theme and prefix character. -def settings_string_set(group, key, value): - """Set a string setting\n - Settings must be specified in ``~/.local/share/profanity/plugin_settings`` + Themes are defined in ``~/.local/share/cproof/plugin_themes``. If the theme is + not found, the default color is used. - :param group: the group name in the settings file - :param key: the item name within the group - :param value: value to set - :type group: str or unicode - :type key: str or unicode - :type value: str + Args: + barejid: The Jabber ID of the recipient (e.g., ``bob@example.com``). + group: The theme group name, or None to use default styling. + key: The item name within the group, or None to use default styling. + default: The default color if the theme is not found, or None for no color. + ch: The prefix character to display, or None for default behavior. + message: The message to display. + + Returns: + bool: True if the message was displayed, False if the chat window does not + exist. Example: - :: - prof.settings_string_set("myplugin", "prefix", "myplugin, ") + + :: + + prof.chat_show_themed("bob@example.com", "myplugin", "text", None, "!", "Themed message") """ pass +def room_show(roomjid: str, message: str) -> bool: + """Displays a message in the chat room window for the specified room. -def settings_string_list_get(group, key): - """Get a string list setting\n - Settings must be specified in ``~/.local/share/profanity/plugin_settings``\n - The string list setting items are separated by semicolons. + Args: + roomjid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + message: The message to display. - :param group: the group name in the settings file - :param key: the item name within the group - :type group: str or unicode - :type key: str or unicode - :return: the list setting - :rtype: list of str or unicode + Returns: + bool: True if the message was displayed, False if the room window does not + exist. Example: - :: - prof.settings_string_list_get("someplugin", "somelist") + + :: + + prof.room_show("chat@conference.example.com", "Room message from plugin") """ pass +def room_show_themed( + roomjid: str, + group: str | None, + key: str | None, + default: str | None, + ch: str | None, + message: str, +) -> bool: + """Displays a message in the chat room window with a theme and prefix character. -def settings_string_list_add(group, key, value): - """Add an item to a string list setting\n - Settings must be specified in ``~/.local/share/profanity/plugin_settings``\n - If the list does not exist, a new one will be created with the element added + Themes are defined in ``~/.local/share/cproof/plugin_themes``. If the theme is + not found, the default color is used. - :param group: the group name in the settings file - :param key: the item name within the group - :param value: item to add - :type group: str or unicode - :type key: str or unicode - :type value: str + Args: + roomjid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + group: The theme group name, or None to use default styling. + key: The item name within the group, or None to use default styling. + default: The default color if the theme is not found, or None for no color. + ch: The prefix character to display, or None for default behavior. + message: The message to display. + + Returns: + bool: True if the message was displayed, False if the room window does not + exist. Example: - :: - prof.settings_string_list_add("someplugin", "somelist", "anelement") + + :: + + prof.room_show_themed("chat@conference.example.com", "myplugin", "text", None, "!", "Themed room message") """ pass +# XMPP Operations +# --------------- -def settings_string_list_remove(group, key, value): - """Remove an item from a string list setting\n - Settings must be specified in ``~/.local/share/profanity/plugin_settings``\n +def send_line(line: str) -> None: + """Sends a line of input to CProof for execution, as if typed by the user. - :param group: the group name in the settings file - :param key: the item name within the group - :param value: item to remove - :type group: str or unicode - :type key: str or unicode - :type value: str - :return: ``True`` if the item was removed, or is not in the list, ``False`` if the list does not exist - :rtype: boolean + Args: + line: The input line to execute (e.g., ``/who online``). + + Returns: + None Example: - :: - prof.settings_string_list_remove("someplugin", "somelist", "anelement") + + :: + + prof.send_line("/who online") # Executes the /who online command """ pass +def send_stanza(stanza: str) -> bool: + """Sends an XMPP stanza to the server. -def settings_string_list_clear(group, key): - """Remove all items from a string list setting\n - Settings must be specified in ``~/.local/share/profanity/plugin_settings``\n + Args: + stanza: The XMPP stanza to send (e.g., an IQ or message stanza). - :param group: the group name in the settings file - :param key: the item name within the group - :type group: str or unicode - :type key: str or unicode - :return: ``True`` if the list was cleared, ``False`` if the list does not exist - :rtype: boolean + Returns: + bool: True if the stanza was sent successfully, False if it was invalid or + failed to send. Example: - :: - prof.settings_string_list_clear("someplugin", "somelist") + + :: + + stanza = "" + if prof.send_stanza(stanza): + prof.cons_show("Stanza sent successfully") """ pass +def incoming_message(barejid: str, resource: str, message: str) -> None: + """Triggers CProof to handle an incoming message as if received from a contact. -def settings_int_get(group, key, default): - """Get an integer setting\n - Settings must be specified in ``~/.local/share/profanity/plugin_settings`` + Args: + barejid: The Jabber ID of the sender (e.g., ``bob@example.com``). + resource: The sender's resource (e.g., ``laptop``). + message: The message text. - :param group: the group name in the settings file - :param key: the item name within the group - :param default: default value if setting not found - :type group: str or unicode - :type key: str or unicode - :type default: int + Returns: + None Example: - :: - prof.settings_int_get("myplugin", "timeout", 10) + + :: + + prof.incoming_message("bob@example.com", "laptop", "Hello from plugin") """ pass +def disco_add_feature(feature: str) -> None: + """Adds a service discovery feature to CProof's supported features. -def settings_int_set(group, key, value): - """Set an integer setting\n - Settings must be specified in ``~/.local/share/profanity/plugin_settings`` + If a session is active, a presence update is sent to refresh client/server + feature caches. - :param group: the group name in the settings file - :param key: the item name within the group - :param value: value to set - :type group: str or unicode - :type key: str or unicode - :type value: int + Args: + feature: The service discovery feature to advertise (e.g., ``urn:xmpp:omemo:0``). + + Returns: + None Example: - :: - prof.settings_int_set("myplugin", "timeout", 100) + + :: + + prof.disco_add_feature("urn:xmpp:omemo:0:devicelist+notify") """ pass +def encryption_reset(barejid: str) -> None: + """Ends any encrypted session with the specified contact. -def incoming_message(barejid, resource, message): - """Trigger incoming message handling, this plugin will make profanity act as if the message has been received + Args: + barejid: The Jabber ID of the contact (e.g., ``alice@example.com``). - :param barejid: Jabber ID of the sender of the message - :param resource: resource of the sender of the message - :param message: the message text - :type barejid: str or unicode - :type resource: str or unicode - :type message: str or unicode + Returns: + None Example: - :: - prof.incoming_message("bob@server.org", "laptop", "Hello there") + + :: + + prof.encryption_reset("alice@example.com") # Resets encryption """ pass +def chat_set_titlebar_enctext(barejid: str, enctext: str) -> bool: + """Sets the encryption indicator text in the titlebar for a contact's chat window. -def disco_add_feature(feature): - """Add a service discovery feature the list supported by Profanity.\n - If a session is already connected, a presence update will be sent to allow any client/server caches to update their feature list for Profanity + Args: + barejid: The Jabber ID of the contact (e.g., ``bob@example.com``). + enctext: The text to display in the titlebar. - :param feature: the service discovery feature to be added - :type feature: str + Returns: + bool: True if the text was set, False if the chat window does not exist. Example: - :: - prof.disco_add_feature("urn:xmpp:omemo:0:devicelist+notify") + + :: + + prof.chat_set_titlebar_enctext("bob@example.com", "secure") """ pass +def chat_unset_titlebar_enctext(barejid: str) -> bool: + """Resets the encryption indicator text in the titlebar for a contact's chat window. -def encryption_reset(barejid): - """End any encrypted session with the specified user + CProof will determine the default text to display. - :param barejid: Jabber ID of the recipient - :type barejid: str or unicode + Args: + barejid: The Jabber ID of the contact (e.g., ``bob@example.com``). + + Returns: + bool: True if the text was reset, False if the chat window does not exist. Example: - :: - prof.encryption_reset("alice@server.org") + + :: + + prof.chat_unset_titlebar_enctext("bob@example.com") """ pass +def chat_set_incoming_char(barejid: str, ch: str) -> bool: + """Sets the prefix character for incoming messages from a contact. -def chat_set_titlebar_enctext(barejid, enctext): - """Set the text to display in the titlebar encryption indicator for recipient. + Args: + barejid: The Jabber ID of the contact (e.g., ``bob@example.com``). + ch: The prefix character to display. - :param barejid: Jabber ID of the recipient - :param enctext: The text to display - :type barejid: str or unicode - :type enctext: str or unicode - :return: ``True`` if the text was set successfully, ``False`` otherwise - :rtype: boolean + Returns: + bool: True if the character was set, False if the chat window does not exist. Example: - :: - prof.chat_set_titlebar_enctext("bob@chat.org", "safe") + + :: + + prof.chat_set_incoming_char("bob@example.com", "*") """ pass +def chat_unset_incoming_char(barejid: str) -> bool: + """Resets the prefix character for incoming messages from a contact. -def chat_unset_titlebar_enctext(barejid): - """Let profanity decide what to show in the titlebar encryption indicator for recipient. + Args: + barejid: The Jabber ID of the contact (e.g., ``bob@example.com``). - :param barejid: Jabber ID of the recipient - :type barejid: str or unicode - :return: ``True`` if the text was unset successfully, ``False`` otherwise - :rtype: boolean + Returns: + bool: True if the character was reset, False if the chat window does not exist. Example: - :: - prof.chat_unset_titlebar_enctext("bob@chat.org") + + :: + + prof.chat_unset_incoming_char("bob@example.com") """ pass +def chat_set_outgoing_char(barejid: str, ch: str) -> bool: + """Sets the prefix character for outgoing messages to a contact. -def chat_set_incoming_char(barejid, ch): - """Set the incoming message prefix character for specified contact. + Args: + barejid: The Jabber ID of the contact (e.g., ``bob@example.com``). + ch: The prefix character to display. - :param barejid: Jabber ID of the recipient - :param enctext: The character to display - :type barejid: str or unicode - :type enctext: str or unicode - :return: ``True`` if the character was set successfully, ``False`` otherwise - :rtype: boolean + Returns: + bool: True if the character was set, False if the chat window does not exist. Example: - :: - prof.chat_set_incoming_char("kristine@chat.org", "*") + + :: + + prof.chat_set_outgoing_char("bob@example.com", "+") """ pass +def chat_unset_outgoing_char(barejid: str) -> bool: + """Resets the prefix character for outgoing messages to a contact. -def chat_unset_incoming_char(barejid): - """Reset the incoming message prefix character for specified contact. + Args: + barejid: The Jabber ID of the contact (e.g., ``bob@example.com``). - :param barejid: Jabber ID of the recipient - :type barejid: str or unicode - :return: ``True`` if the char was unset successfully, ``False`` otherwise - :rtype: boolean + Returns: + bool: True if the character was reset, False if the chat window does not exist. Example: - :: - prof.chat_unset_incoming_char("kristine@chat.org") + + :: + + prof.chat_unset_outgoing_char("bob@example.com") """ pass +def room_set_titlebar_enctext(roomjid: str, enctext: str) -> bool: + """Sets the encryption indicator text in the titlebar for a room's chat window. -def chat_set_outgoing_char(barejid, ch): - """Set the outgoing message prefix character for specified contact. + Args: + roomjid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + enctext: The text to display in the titlebar. - :param barejid: Jabber ID of the recipient - :param enctext: The character to display - :type barejid: str or unicode - :type enctext: str or unicode - :return: ``True`` if the character was set successfully, ``False`` otherwise - :rtype: boolean + Returns: + bool: True if the text was set, False if the room window does not exist. Example: - :: - prof.chat_set_outgoing_char("david@chat.org", "+") + + :: + + prof.room_set_titlebar_enctext("chat@conference.example.com", "secure") """ pass +def room_unset_titlebar_enctext(roomjid: str) -> bool: + """Resets the encryption indicator text in the titlebar for a room's chat window. -def chat_unset_outgoing_char(barejid): - """Reset the outgoing message prefix character for specified contact. + CProof will determine the default text to display. - :param barejid: Jabber ID of the recipient - :type barejid: str or unicode - :return: ``True`` if the char was unset successfully, ``False`` otherwise - :rtype: boolean + Args: + roomjid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + + Returns: + bool: True if the text was reset, False if the room window does not exist. Example: - :: - prof.chat_unset_outgoing_char("david@chat.org") + + :: + + prof.room_unset_titlebar_enctext("chat@conference.example.com") """ pass +def room_set_message_char(roomjid: str, ch: str) -> bool: + """Sets the prefix character for messages in a chat room. -def room_set_titlebar_enctext(roomjid, enctext): - """Set the text to display in the titlebar encryption indicator for room. + Args: + roomjid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + ch: The prefix character to display. - :param roomjid: Jabber ID of the room - :param enctext: The text to display - :type roomjid: str or unicode - :type enctext: str or unicode - :return: ``True`` if the text was set successfully, ``False`` otherwise - :rtype: boolean + Returns: + bool: True if the character was set, False if the room window does not exist. Example: - :: - prof.room_set_titlebar_enctext("generalchat@conference.service.com", "secret") + + :: + + prof.room_set_message_char("chat@conference.example.com", "^") """ pass +def room_unset_message_char(roomjid: str) -> bool: + """Resets the prefix character for messages in a chat room. -def room_unset_titlebar_enctext(roomjid): - """Let profanity decide what to show in the titlebar encryption indicator for room. + Args: + roomjid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). - :param roomjid: Jabber ID of the room - :type roomjid: str or unicode - :return: ``True`` if the text was unset successfully, ``False`` otherwise - :rtype: boolean + Returns: + bool: True if the character was reset, False if the room window does not exist. Example: - :: - prof.room_unset_titlebar_enctext("generalchat@conference.service.com") + + :: + + prof.room_unset_message_char("chat@conference.example.com") """ pass +# Settings Management +# ------------------- -def room_set_message_char(roomjid, ch): - """Set the message prefix character for specified room. +def settings_boolean_get(group: str, key: str, default: bool) -> bool: + """Retrieves a boolean setting from the CProof settings file. - :param roomjid: Jabber ID of the room - :param enctext: The character to display - :type roomjid: str or unicode - :type enctext: str or unicode - :return: ``True`` if the character was set successfully, ``False`` otherwise - :rtype: boolean + Settings are stored in ``~/.local/share/cproof/plugin_settings``. + + Args: + group: The group name in the settings file. + key: The item name within the group. + default: The default value if the setting is not found. + + Returns: + bool: The setting value, or the default if not found. Example: - :: - prof.room_set_message_char("ohnoes@conference.chat.org", "^") + + :: + + notify = prof.settings_boolean_get("myplugin", "notify", False) """ pass +def settings_boolean_set(group: str, key: str, value: bool) -> None: + """Sets a boolean setting in the CProof settings file. -def room_unset_message_char(roomjid): - """Reset the message prefix character for specified room. + Settings are stored in ``~/.local/share/cproof/plugin_settings``. - :param roomjid: Jabber ID of the room - :type roomjid: str or unicode - :return: ``True`` if the char was unset successfully, ``False`` otherwise - :rtype: boolean + Args: + group: The group name in the settings file. + key: The item name within the group. + value: The boolean value to set. + + Returns: + None Example: - :: - prof.room_unset_message_char("ohnoes@conference.chat.org") + + :: + + prof.settings_boolean_set("myplugin", "notify", True) """ pass +def settings_string_get(group: str, key: str, default: str) -> str: + """Retrieves a string setting from the CProof settings file. -def chat_show(barejid, message): - """Show a message in a chat window. + Settings are stored in ``~/.local/share/cproof/plugin_settings``. - :param barejid: Jabber ID of the recipient - :param message: the message to print - :type barejid: str or unicode - :type message: str or unicode - :return: ``True`` if the message was printed, ``False`` otherwise - :rtype: boolean + Args: + group: The group name in the settings file. + key: The item name within the group. + default: The default value if the setting is not found. + + Returns: + str: The setting value, or the default if not found. Example: - :: - prof.chat_show("bob@server.org", "From a plugin in the chat window for bob") + + :: + + prefix = prof.settings_string_get("myplugin", "prefix", "myplugin>") """ pass +def settings_string_set(group: str, key: str, value: str) -> None: + """Sets a string setting in the CProof settings file. -def chat_show_themed(barejid, group, key, default, ch, message): - """Show a message a chat window, using the specified theme and prefix character.\n - Themes are specified in ``~/.local/share/profanity/plugin_themes`` + Settings are stored in ``~/.local/share/cproof/plugin_settings``. - :param barejid: Jabber ID of the recipient - :param group: the group name in the themes file or ``None`` - :param key: the item name within the group or ``None`` - :param default: default colour if the theme cannot be found or ``None`` - :param ch: The prefix character to show, or ``None`` for default behaviour - :param message: the message to print - :type barejid: str or unicode - :type group: str, unicode or None - :type key: str, unicode or None - :type default: str, unicode or None - :type ch: str or unicode - :type message: str or unicode - :return: ``True`` if the message was printed, ``False`` otherwise - :rtype: boolean + Args: + group: The group name in the settings file. + key: The item name within the group. + value: The string value to set. + + Returns: + None Example: - :: - prof.chat_show_themed("bob@server.org", "myplugin", "text", None, "!", "Plugin themed message") + + :: + + prof.settings_string_set("myplugin", "prefix", "myplugin>") """ pass +def settings_string_list_get(group: str, key: str) -> list[str]: + """Retrieves a list of strings from a setting in the CProof settings file. -def room_show(roomjid, message): - """Show a message in a chat room window. + Settings are stored in ``~/.local/share/cproof/plugin_settings``, with list items + separated by semicolons. - :param roomjid: Jabber ID of the room - :param message: the message to print - :type roomjid: str or unicode - :type message: str or unicode - :return: ``True`` if the message was printed, ``False`` otherwise - :rtype: boolean + Args: + group: The group name in the settings file. + key: The item name within the group. + + Returns: + list[str]: The list of strings, or an empty list if the setting does not + exist. Example: - :: - prof.room_show("chat@conference.chat.org", "From a plugin in the chat room window") + + :: + + items = prof.settings_string_list_get("myplugin", "items") """ pass +def settings_string_list_add(group: str, key: str, value: str) -> None: + """Adds a string to a list setting in the CProof settings file. -def room_show_themed(roomjid, group, key, default, ch, message): - """Show a message a chat room window, using the specified theme and prefix character.\n - Themes are specified in ``~/.local/share/profanity/plugin_themes`` + If the list does not exist, it is created with the new item. Settings are + stored in ``~/.local/share/cproof/plugin_settings``. - :param roomjid: Jabber ID of the room - :param group: the group name in the themes file or ``None`` - :param key: the item name within the group or ``None`` - :param default: default colour if the theme cannot be found or ``None`` - :param ch: The prefix character to show, or ``None`` for default behaviour - :param message: the message to print - :type roomjid: str or unicode - :type group: str, unicode or None - :type key: str, unicode or None - :type default: str, unicode or None - :type ch: str or unicode - :type message: str or unicode - :return: ``True`` if the message was printed, ``False`` otherwise - :rtype: boolean + Args: + group: The group name in the settings file. + key: The item name within the group. + value: The string to add to the list. + + Returns: + None Example: - :: - prof.room_show_themed("chat@conference.chat.org", "myplugin", "text", None, "!", "Plugin themed message") + + :: + + prof.settings_string_list_add("myplugin", "items", "item1") + """ + pass + +def settings_string_list_remove(group: str, key: str, value: str) -> bool: + """Removes a string from a list setting in the CProof settings file. + + Settings are stored in ``~/.local/share/cproof/plugin_settings``. + + Args: + group: The group name in the settings file. + key: The item name within the group. + value: The string to remove from the list. + + Returns: + bool: True if the item was removed or not in the list, False if the list + does not exist. + + Example: + + :: + + prof.settings_string_list_remove("myplugin", "items", "item1") + """ + pass + +def settings_string_list_clear(group: str, key: str) -> bool: + """Clears all items from a list setting in the CProof settings file. + + Settings are stored in ``~/.local/share/cproof/plugin_settings``. + + Args: + group: The group name in the settings file. + key: The item name within the group. + + Returns: + bool: True if the list was cleared, False if the list does not exist. + + Example: + + :: + + prof.settings_string_list_clear("myplugin", "items") + """ + pass + +def settings_int_get(group: str, key: str, default: int) -> int: + """Retrieves an integer setting from the CProof settings file. + + Settings are stored in ``~/.local/share/cproof/plugin_settings``. + + Args: + group: The group name in the settings file. + key: The item name within the group. + default: The default value if the setting is not found. + + Returns: + int: The setting value, or the default if not found. + + Example: + + :: + + timeout = prof.settings_int_get("myplugin", "timeout", 10) + """ + pass + +def settings_int_set(group: str, key: str, value: int) -> None: + """Sets an integer setting in the CProof settings file. + + Settings are stored in ``~/.local/share/cproof/plugin_settings``. + + Args: + group: The group name in the settings file. + key: The item name within the group. + value: The integer value to set. + + Returns: + None + + Example: + + :: + + prof.settings_int_set("myplugin", "timeout", 100) + """ + pass + +# User and Room Information +# ------------------------- + +def get_current_recipient() -> str | None: + """Retrieves the Jabber ID of the current chat recipient. + + Args: + None + + Returns: + str | None: The Jabber ID of the recipient (e.g., ``bob@example.com``), or + None if not in a chat window. + + Example: + + :: + + recipient = prof.get_current_recipient() + if recipient: + prof.cons_show(f"Chatting with: {recipient}") + """ + pass + +def get_current_muc() -> str | None: + """Retrieves the Jabber ID of the current chat room. + + Args: + None + + Returns: + str | None: The Jabber ID of the room (e.g., ``chat@conference.example.com``), + or None if not in a chat room window. + + Example: + + :: + + room = prof.get_current_muc() + if room: + prof.cons_show(f"In room: {room}") + """ + pass + +def get_current_nick() -> str | None: + """Retrieves the user's nickname in the current chat room. + + Args: + None + + Returns: + str | None: The user's nickname (e.g., ``alice``), or None if not in a chat + room window. + + Example: + + :: + + nick = prof.get_current_nick() + if nick: + prof.cons_show(f"Nickname: {nick}") + """ + pass + +def get_name_from_roster(barejid: str) -> str: + """Retrieves the nickname for a Jabber ID from the roster. + + Args: + barejid: The Jabber ID to look up (e.g., ``bob@example.com``). + + Returns: + str: The nickname from the roster, or the input barejid if not found. + + Example: + + :: + + name = prof.get_name_from_roster("bob@example.com") + prof.cons_show(f"Name: {name}") + """ + pass + +def get_barejid_from_roster(name: str) -> str | None: + """Retrieves the Jabber ID for a nickname from the roster. + + Args: + name: The nickname to look up. + + Returns: + str | None: The Jabber ID (e.g., ``bob@example.com``), or None if the + nickname is not in the roster. + + Example: + + :: + + jid = prof.get_barejid_from_roster("bob") + if jid: + prof.cons_show(f"JID: {jid}") + """ + pass + +def get_current_occupants() -> list[str]: + """Retrieves the nicknames of all occupants in the current chat room. + + Args: + None + + Returns: + list[str]: List of occupant nicknames, or an empty list if not in a chat + room window. + + Example: + + :: + + occupants = prof.get_current_occupants() + prof.cons_show(f"Occupants: {', '.join(occupants)}") + """ + pass + +def get_room_nick(barejid: str) -> str: + """Retrieves the user's nickname in the specified chat room. + + Args: + barejid: The Jabber ID of the room (e.g., ``chat@conference.example.com``). + + Returns: + str: The user's nickname in the room. + + Example: + + :: + + nick = prof.get_room_nick("chat@conference.example.com") + prof.cons_show(f"Room nick: {nick}") + """ + pass + +def current_win_is_console() -> bool: + """Checks if the console window is currently focused. + + Args: + None + + Returns: + bool: True if the console window is focused, False otherwise. + + Example: + + :: + + if prof.current_win_is_console(): + prof.cons_show("Console is focused") + """ + pass + +# Notifications and Logging +# ------------------------- + +def notify(message: str, timeout: int, category: str) -> None: + """Sends a desktop notification through CProof. + + Args: + message: The notification message to display. + timeout: The duration before the notification disappears, in milliseconds. + category: The notification category, displayed with the message. + + Returns: + None + + Example: + + :: + + prof.notify("New message received", 5000, "MyPlugin") + """ + pass + +def log_debug(message: str) -> None: + """Logs a message to the CProof log at the DEBUG level. + + Args: + message: The message to log. + + Returns: + None + + Example: + + :: + + prof.log_debug("Debugging plugin initialization") + """ + pass + +def log_info(message: str) -> None: + """Logs a message to the CProof log at the INFO level. + + Args: + message: The message to log. + + Returns: + None + + Example: + + :: + + prof.log_info("Plugin started successfully") + """ + pass + +def log_warning(message: str) -> None: + """Logs a message to the CProof log at the WARNING level. + + Args: + message: The message to log. + + Returns: + None + + Example: + + :: + + prof.log_warning("Configuration issue detected") + """ + pass + +def log_error(message: str) -> None: + """Logs a message to the CProof log at the ERROR level. + + Args: + message: The message to log. + + Returns: + None + + Example: + + :: + + prof.log_error("Failed to connect to server") """ pass