This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

@@ -133,6 +133,8 @@ WeeChat „језгро” се налази у следећим директо
|    wee-crypto.c | Криптографске функције.
|    wee-debug.c | Неке дибаг функције.
|    wee-dir.c | Функције директоријума/фајла.
// TRANSLATION MISSING
|    wee-doc.c | Build of files for documentation.
|    wee-eval.c | Израчунавање израза са референцама на интерне променљиве.
|    wee-hashtable.c | Хеш табеле.
|    wee-hdata.c | Hdata (директни приступ подацима употребом хеш табела).
@@ -474,7 +476,6 @@ WeeChat „језгро” се налази у следећим директо
| Путања/фајл | Опис
| doc/ | Документација.
|    docinfo.html | Asciidoctor стил.
|    docgen.py | Python скрипта која изграђује ауто-генерисане фајлу у директоријуму _includes/_ (погледајте ниже).
|    XX/ | Документација за језик XX (језици: en, fr, de, it, ...).
|       weechat.1.XX.adoc | Man страница(`man weechat`).
|       weechat_dev.XX.adoc | link:weechat_dev.sr.html[Водич за програмере ^↗^,window=_blank] (овај документ).
@@ -485,17 +486,6 @@ WeeChat „језгро” се налази у следећим директо
|       weechat_scripting.XX.adoc | link:weechat_scripting.sr.html[Водич за скриптовање ^↗^,window=_blank].
|       weechat_user.XX.adoc | link:weechat_user.sr.html[Корисничко упутство ^↗^,window=_blank].
|       includes/ | Фајлови укључени у документацију.
|          autogen_api_completions.XX.adoc | Ауто-генерисани фајл за Референцу API додатака: довршавања (*НИКАДА* не ажурирајте ручно!).
|          autogen_api_hdata.XX.adoc | Ауто-генерисани фајл за Референцу API додатака: hdata (*НИКАДА* не ажурирајте ручно!).
|          autogen_api_infolists.XX.adoc | Ауто-генерисани фајл за Референцу API додатака: infolists (*НИКАДА* не ажурирајте ручно!).
|          autogen_api_infos.XX.adoc | Ауто-генерисани фајл за Референцу API додатака: infos (*НИКАДА* не ажурирајте ручно!).
|          autogen_api_infos_hashtable.XX.adoc | Ауто-генерисани фајл за Референцу API додатака: infos hashtable (*НИКАДА* не ажурирајте ручно!).
|          autogen_api_plugins_priority.XX.adoc | Ауто-генерисани фајл за Референцу API додатака: приоритет додатака (*НИКАДА* не ажурирајте ручно!).
|          autogen_api_url_options.XX.adoc | Ауто-генерисани фајл за Референцу API додатака: URL опције (*НИКАДА* не ажурирајте ручно!).
|          autogen_user_commands.XX.adoc | Ауто-генерисани фајл за Корисничко упутство: команде (*НИКАДА* не ажурирајте ручно!).
|          autogen_user_default_aliases.XX.adoc | Ауто-генерисани фајл за Корисничко упутство: подразумевани алијаси (*НИКАДА* не ажурирајте ручно!).
|          autogen_user_irc_colors.XX.adoc | Ауто-генерисани фајл за Корисничко упутство: IRC боје (*НИКАДА* не ажурирајте ручно!).
|          autogen_user_options.XX.adoc | Ауто-генерисани фајл за Корисничко упутство: опције конфигурације (*НИКАДА* не ажурирајте ручно!).
|          cmdline_options.XX.adoc | Опције командне линије (фајл се укључује у man странице и корисничко упутство).
|          man.XX.adoc | Део man страница: опције додатака, фајлови и ауторска права.
|===
@@ -1245,17 +1235,6 @@ $ msgcheck.py xx.po

И након тога можете да рекомпајлирате програм WeeChat тако да користи нове преводе.

[[build_autogen_files]]
===== Изградња ауто-генерисаних фајлова

Фајлове са именом `+autogen_*+` у директоријуму _doc/XX/includes/_ аутоматски генерише скрипта _doc/docgen.py_.

Ауто-генерисане фајлове можете поново да изградите директни у својим WeeChat изворима покретањем програма WeeChat у привременом директоријуму и учитавањем скрипте:

----
weechat -t -r "/python load /путања/до/weechat/doc/docgen.py;/docgen;/quit"
----

[[asciidoc]]
==== Asciidoc

@@ -129,7 +129,7 @@ int weechat_plugin_init (struct t_weechat_plugin *plugin,

Подразумевани додаци програма WeeChat се иницијализују у следећем редоследу:

include::includes/autogen_api_plugins_priority.sr.adoc[tag=plugins_priority]
include::{autogendir}/autogen_api_plugins_priority.sr.adoc[tag=plugins_priority]

==== weechat_plugin_end

@@ -6164,7 +6164,7 @@ struct t_config_file *weechat_config_new (const char *name,

Приоритет подразумеваних конфигурационих фајлова:

include::includes/autogen_api_config_priority.sr.adoc[tag=config_priority]
include::{autogendir}/autogen_api_config_priority.sr.adoc[tag=config_priority]

C пример:

@@ -9198,7 +9198,7 @@ _completion_ шаблон је листа довршавања за сваки

Подразумевани кодови довршавања су:

include::includes/autogen_api_completions.sr.adoc[tag=completions]
include::{autogendir}/autogen_api_completions.sr.adoc[tag=completions]

Специјални кодови:

@@ -9853,7 +9853,7 @@ struct t_hook *weechat_hook_process_hashtable (const char *command,

За команду „url:...” су доступне следеће опције (за опис сваке опције погледајте `+man curl_easy_setopt+`):

include::includes/autogen_api_url_options.sr.adoc[tag=url_options]
include::{autogendir}/autogen_api_url_options.sr.adoc[tag=url_options]

[NOTE]
^(1)^ За опције типа „mask”, формат је: „вредност1+вредност2+вредност3”; за опције типа „list”, ставке листе морају да се раздвоје преломом линије (`\n`). +
@@ -15779,7 +15779,7 @@ char *weechat_info_get (const char *info_name, const char *arguments);

Информације:

include::includes/autogen_api_infos.sr.adoc[tag=infos]
include::{autogendir}/autogen_api_infos.sr.adoc[tag=infos]

C пример:

@@ -15838,7 +15838,7 @@ struct t_hashtable *weechat_info_get_hashtable (const char *info_name,

Информације:

include::includes/autogen_api_infos_hashtable.sr.adoc[tag=infos_hashtable]
include::{autogendir}/autogen_api_infos_hashtable.sr.adoc[tag=infos_hashtable]

C пример:

@@ -16227,7 +16227,7 @@ struct t_infolist *weechat_infolist_get (const char *infolist_name,

Инфолисте:

include::includes/autogen_api_infolists.sr.adoc[tag=infolists]
include::{autogendir}/autogen_api_infolists.sr.adoc[tag=infolists]

C пример:

@@ -16952,7 +16952,7 @@ struct t_hdata *weechat_hdata_get (const char *hdata_name);

Листа hdata:

include::includes/autogen_api_hdata.sr.adoc[tag=hdata]
include::{autogendir}/autogen_api_hdata.sr.adoc[tag=hdata]

C пример:

Large diffs are not rendered by default.

@@ -63,17 +63,19 @@ if(XGETTEXT_EXECUTABLE AND MSGMERGE_EXECUTABLE AND MSGFMT_EXECUTABLE)
COMMENT "Generating ${POT_FILE}"
)

set(GMO_FILES)
set(MO_FILES)
set(UPDATE_PO_TARGETS)
foreach(pofile ${PO_FILES})
get_filename_component(polang ${pofile} NAME_WE)

# Compile .po files in build directory (to binary .gmo files)
set(gmofile ${CMAKE_CURRENT_BINARY_DIR}/${polang}.gmo)
# Compile .po files in build directory (to binary .mo files)
set(modir "${CMAKE_CURRENT_BINARY_DIR}/${polang}/LC_MESSAGES")
file(MAKE_DIRECTORY "${modir}")
set(mofile "${modir}/${PROJECT_NAME}.mo")
add_custom_command(
OUTPUT ${gmofile}
OUTPUT ${mofile}
COMMAND ${MSGMERGE_EXECUTABLE} ARGS --quiet -o ${CMAKE_CURRENT_BINARY_DIR}/${pofile} ${CMAKE_CURRENT_SOURCE_DIR}/${pofile} ${POT_FILE_PATH}
COMMAND ${MSGFMT_EXECUTABLE} ARGS -o ${gmofile} ${CMAKE_CURRENT_BINARY_DIR}/${pofile}
COMMAND ${MSGFMT_EXECUTABLE} ARGS -o ${mofile} ${CMAKE_CURRENT_BINARY_DIR}/${pofile}
COMMAND ${MSGFMT_EXECUTABLE} ARGS -c --statistics --verbose --output-file=/dev/null ${CMAKE_CURRENT_BINARY_DIR}/${pofile}
DEPENDS ${POT_FILE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/${pofile}
COMMENT "Compiling ${polang}.po"
@@ -87,11 +89,11 @@ if(XGETTEXT_EXECUTABLE AND MSGMERGE_EXECUTABLE AND MSGFMT_EXECUTABLE)
)
set(UPDATE_PO_TARGETS ${UPDATE_PO_TARGETS} update-${pofile})

install(FILES ${gmofile} DESTINATION ${LOCALEDIR}/${polang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
set(GMO_FILES ${GMO_FILES} ${gmofile})
install(FILES ${mofile} DESTINATION ${LOCALEDIR}/${polang}/LC_MESSAGES)
set(MO_FILES ${MO_FILES} ${mofile})
endforeach()

add_custom_target(translations ALL DEPENDS ${GMO_FILES})
add_custom_target(translations ALL DEPENDS ${MO_FILES})

# Update weechat.pot in source directory (if needed)
add_custom_target(
@@ -1,5 +1,4 @@
SET(WEECHAT_SOURCES
./doc/docgen.py
./src/core/hook/wee-hook-command.c
./src/core/hook/wee-hook-command.h
./src/core/hook/wee-hook-command-run.c
@@ -58,6 +57,8 @@ SET(WEECHAT_SOURCES
./src/core/wee-debug.h
./src/core/wee-dir.c
./src/core/wee-dir.h
./src/core/wee-doc.c
./src/core/wee-doc.h
./src/core/wee-eval.c
./src/core/wee-eval.h
./src/core/wee-hashtable.c
@@ -31,6 +31,7 @@ set(LIB_CORE_SRC
wee-crypto.c wee-crypto.h
wee-debug.c wee-debug.h
wee-dir.c wee-dir.h
wee-doc.c wee-doc.h
wee-eval.c wee-eval.h
wee-hashtable.c wee-hashtable.h
wee-hdata.c wee-hdata.h
@@ -181,6 +181,8 @@ struct t_config_option
extern struct t_config_file *config_files;
extern struct t_config_file *last_config_file;

extern char *config_option_type_string[];

extern int config_file_valid (struct t_config_file *config_file);
extern struct t_config_file *config_file_search (const char *name);
extern struct t_config_file *config_file_new (struct t_weechat_plugin *plugin,

Large diffs are not rendered by default.

@@ -0,0 +1,25 @@
/*
* Copyright (C) 2023 Sébastien Helleu <flashcode@flashtux.org>
*
* This file is part of WeeChat, the extensible chat client.
*
* WeeChat is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* WeeChat is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
*/

#ifndef WEECHAT_DOC_H
#define WEECHAT_DOC_H

extern int doc_generate (const char *path);

#endif /* WEECHAT_DOC_H */
@@ -54,6 +54,7 @@ struct t_url_file
FILE *stream; /* file stream */
};

extern char *url_type_string[];
extern struct t_url_option url_options[];

extern int weeurl_download (const char *url, struct t_hashtable *options);
@@ -61,6 +61,7 @@
#include "wee-config.h"
#include "wee-debug.h"
#include "wee-dir.h"
#include "wee-doc.h"
#include "wee-eval.h"
#include "wee-hdata.h"
#include "wee-hook.h"
@@ -86,10 +87,11 @@
#include "../plugins/plugin.h"
#include "../plugins/plugin-api.h"

/* debug command line options */
#define OPTION_NO_DLCLOSE 1000
#define OPTION_NO_GNUTLS 1001
#define OPTION_NO_GCRYPT 1002
/* some command line options */
#define OPTION_DOCGEN 1000
#define OPTION_NO_DLCLOSE 1001
#define OPTION_NO_GNUTLS 1002
#define OPTION_NO_GCRYPT 1003

int weechat_headless = 0; /* 1 if running headless (no GUI) */
int weechat_daemon = 0; /* 1 if daemonized (no foreground) */
@@ -118,6 +120,9 @@ int weechat_locale_ok = 0; /* is locale OK? */
char *weechat_local_charset = NULL; /* example: ISO-8859-1, UTF-8 */
int weechat_server_cmd_line = 0; /* at least 1 server on cmd line */
char *weechat_force_plugin_autoload = NULL; /* force load of plugins */
int weechat_doc_gen = 0; /* doc generation */
char *weechat_doc_gen_path = NULL; /* path for doc generation */
int weechat_doc_gen_ok = 0; /* doc generation was successful? */
int weechat_plugin_no_dlclose = 0; /* remove calls to dlclose for libs */
/* (useful with valgrind) */
int weechat_no_gnutls = 0; /* remove init/deinit of gnutls */
@@ -168,7 +173,8 @@ weechat_display_usage ()
stdout,
_(" -a, --no-connect disable auto-connect to servers at "
"startup\n"
" -c, --colors display default colors in terminal\n"
" -c, --colors display default colors in terminal "
"and exit\n"
" -d, --dir <path> force a single WeeChat home directory\n"
" or 4 different directories separated "
"by colons (in this order: config, data, cache, runtime)\n"
@@ -177,8 +183,8 @@ weechat_display_usage ()
" -t, --temp-dir create a temporary WeeChat home "
"directory and delete it on exit\n"
" (incompatible with option \"-d\")\n"
" -h, --help display this help\n"
" -l, --license display WeeChat license\n"
" -h, --help display this help and exit\n"
" -l, --license display WeeChat license and exit\n"
" -p, --no-plugin don't load any plugin at startup\n"
" -P, --plugins <plugins> load only these plugins at startup\n"
" (see /help weechat.plugin.autoload)\n"
@@ -190,14 +196,18 @@ weechat_display_usage ()
" -s, --no-script don't load any script at startup\n"
" --upgrade upgrade WeeChat using session files "
"(see /help upgrade in WeeChat)\n"
" -v, --version display WeeChat version\n"
" -v, --version display WeeChat version and exit\n"
" plugin:option option for plugin (see man weechat)\n"));
string_fprintf (stdout, "\n");

/* extra options in headless mode */
if (weechat_headless)
{
string_fprintf (stdout, _("Extra options in headless mode:\n"));
string_fprintf (
stdout,
_(" --doc-gen <path> generate files to build "
"documentation and exit\n"));
string_fprintf (
stdout,
_(" --daemon run WeeChat as a daemon (fork, "
@@ -240,23 +250,24 @@ weechat_parse_args (int argc, char *argv[])
int opt;
struct option long_options[] = {
/* standard options */
{ "no-connect", no_argument, NULL, 'a' },
{ "colors", no_argument, NULL, 'c' },
{ "dir", required_argument, NULL, 'd' },
{ "temp-dir", no_argument, NULL, 't' },
{ "help", no_argument, NULL, 'h' },
{ "license", no_argument, NULL, 'l' },
{ "no-plugin", no_argument, NULL, 'p' },
{ "plugins", required_argument, NULL, 'P' },
{ "run-command", required_argument, NULL, 'r' },
{ "no-script", no_argument, NULL, 's' },
{ "upgrade", no_argument, NULL, 'u' },
{ "version", no_argument, NULL, 'v' },
{ "no-connect", no_argument, NULL, 'a' },
{ "colors", no_argument, NULL, 'c' },
{ "dir", required_argument, NULL, 'd' },
{ "temp-dir", no_argument, NULL, 't' },
{ "help", no_argument, NULL, 'h' },
{ "license", no_argument, NULL, 'l' },
{ "no-plugin", no_argument, NULL, 'p' },
{ "plugins", required_argument, NULL, 'P' },
{ "run-command", required_argument, NULL, 'r' },
{ "no-script", no_argument, NULL, 's' },
{ "upgrade", no_argument, NULL, 'u' },
{ "doc-gen", required_argument, NULL, OPTION_DOCGEN },
{ "version", no_argument, NULL, 'v' },
/* debug options */
{ "no-dlclose", no_argument, NULL, OPTION_NO_DLCLOSE },
{ "no-gnutls", no_argument, NULL, OPTION_NO_GNUTLS },
{ "no-gcrypt", no_argument, NULL, OPTION_NO_GCRYPT },
{ NULL, 0, NULL, 0 },
{ NULL, 0, NULL, 0 },
};

weechat_argv0 = (argv[0]) ? strdup (argv[0]) : NULL;
@@ -266,6 +277,7 @@ weechat_parse_args (int argc, char *argv[])
weechat_home_delete_on_exit = 0;
weechat_server_cmd_line = 0;
weechat_force_plugin_autoload = NULL;
weechat_doc_gen = 0;
weechat_plugin_no_dlclose = 0;

optind = 0;
@@ -330,6 +342,13 @@ weechat_parse_args (int argc, char *argv[])
case 'u': /* --upgrade */
weechat_upgrading = 1;
break;
case OPTION_DOCGEN: /* --doc-gen */
if (weechat_headless)
{
weechat_doc_gen = 1;
weechat_doc_gen_path = strdup (optarg);
}
break;
case 'v': /* -v / --version */
string_fprintf (stdout, version_get_version ());
fprintf (stdout, "\n");
@@ -572,9 +591,13 @@ weechat_shutdown (int return_code, int crash)
free (weechat_force_plugin_autoload);
if (weechat_startup_commands)
weelist_free (weechat_startup_commands);
if (weechat_doc_gen_path)
free (weechat_doc_gen_path);

if (crash)
abort ();
else if (weechat_doc_gen)
exit ((weechat_doc_gen_ok) ? 0 : 1);
else if (return_code >= 0)
exit (return_code);
}
@@ -650,7 +673,8 @@ weechat_init (int argc, char *argv[], void (*gui_init_cb)())
else
weechat_upgrading = 0;
}
weechat_startup_message (); /* display WeeChat startup message */
if (!weechat_doc_gen)
weechat_startup_message (); /* display WeeChat startup message */
gui_chat_print_lines_waiting_buffer (NULL); /* display lines waiting */
weechat_term_check (); /* warning about wrong $TERM */
weechat_locale_check (); /* warning about wrong locale */
@@ -662,6 +686,12 @@ weechat_init (int argc, char *argv[], void (*gui_init_cb)())
gui_layout_window_apply (gui_layout_current, -1);
if (weechat_upgrading)
upgrade_weechat_end (); /* remove .upgrade files + signal */

if (weechat_doc_gen)
{
weechat_doc_gen_ok = doc_generate (weechat_doc_gen_path);
weechat_quit = 1;
}
}

/*