diff options
author | Sebastien Helleu <flashcode@flashtux.org> | 2014-02-02 09:49:59 +0100 |
---|---|---|
committer | Sebastien Helleu <flashcode@flashtux.org> | 2014-02-02 09:49:59 +0100 |
commit | 74d236dfeb1c07b8af60966b38b51ef75ba1c8d1 (patch) | |
tree | 2fea7633eff9ef26061e6749e8bba30b83ae0f63 /doc | |
parent | 6b0bd1302a3762595e07dee3978332fd00bb81ee (diff) | |
download | weechat-74d236dfeb1c07b8af60966b38b51ef75ba1c8d1.zip |
doc: add French developer's guide
Diffstat (limited to 'doc')
-rw-r--r-- | doc/en/weechat_dev.en.txt | 139 | ||||
-rw-r--r-- | doc/en/weechat_plugin_api.en.txt | 2 | ||||
-rw-r--r-- | doc/en/weechat_quickstart.en.txt | 2 | ||||
-rw-r--r-- | doc/en/weechat_relay_protocol.en.txt | 2 | ||||
-rw-r--r-- | doc/en/weechat_scripting.en.txt | 2 | ||||
-rw-r--r-- | doc/en/weechat_tester.en.txt | 2 | ||||
-rw-r--r-- | doc/en/weechat_user.en.txt | 2 | ||||
-rw-r--r-- | doc/fr/CMakeLists.txt | 11 | ||||
-rw-r--r-- | doc/fr/Makefile.am | 8 | ||||
-rw-r--r-- | doc/fr/weechat_dev.fr.txt | 1055 | ||||
-rw-r--r-- | doc/fr/weechat_plugin_api.fr.txt | 2 | ||||
-rw-r--r-- | doc/fr/weechat_quickstart.fr.txt | 2 | ||||
-rw-r--r-- | doc/fr/weechat_scripting.fr.txt | 2 | ||||
-rw-r--r-- | doc/fr/weechat_user.fr.txt | 2 | ||||
-rw-r--r-- | doc/ja/weechat_dev.ja.txt | 81 |
15 files changed, 1205 insertions, 109 deletions
diff --git a/doc/en/weechat_dev.en.txt b/doc/en/weechat_dev.en.txt index fc24a34fa..6dc97a865 100644 --- a/doc/en/weechat_dev.en.txt +++ b/doc/en/weechat_dev.en.txt @@ -1,4 +1,4 @@ -= WeeChat Developer's Guide += WeeChat developer's guide :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: en @@ -34,7 +34,7 @@ WeeChat has two main repositories: * core repository: it contains source code and documentation, URL is: http://git.savannah.gnu.org/gitweb/?p=weechat.git * scripts: the 'official' scripts submitted on weechat.org, - URL is: http://git.savannah.gnu.org/gitweb/?p=weechat/scripts.git;a=summary + URL is: http://git.savannah.gnu.org/gitweb/?p=weechat/scripts.git This manual documents only core repository. @@ -46,7 +46,6 @@ The main WeeChat directories are: [width="100%",cols="1v,5",options="header"] |=== | Directory | Description -| debian/ | Debian packaging | src/ | Root of sources | core/ | Core functions: entry point, internal structures | gui/ | Functions for buffers, windows, ... (used by all interfaces) @@ -56,7 +55,7 @@ The main WeeChat directories are: | aspell/ | Aspell plugin | charset/ | Charset plugin | fifo/ | Fifo plugin (FIFO pipe used to remotely send commands to WeeChat) -| irc/ | IRC plugin +| irc/ | IRC (Internet Relay Chat) plugin | logger/ | Logger plugin (write messages displayed to files) | relay/ | Relay plugin (irc proxy + relay for remote interfaces) | rmodifier/ | Rmodifier plugin (alter modifier strings with regular expressions) @@ -67,10 +66,11 @@ The main WeeChat directories are: | lua/ | Lua scripting API | tcl/ | Tcl scripting API | guile/ | Guile (scheme) scripting API -| xfer/ | Xfer (IRC DCC file/chat) +| xfer/ | Xfer plugin (IRC DCC file/chat) | doc/ | Documentation | po/ | Translations files (gettext) -| test/ | Weercd: WeeChat flood irc server, written in Python +| test/ | Tools/files to test WeeChat (like Weercd, an IRC server) +| debian/ | Debian packaging |=== [[sources]] @@ -79,7 +79,7 @@ The main WeeChat directories are: [[sources_core]] ==== Core -WeeChat "core" reside in following directories: +WeeChat "core" is located in following directories: * 'src/core/': core functions (for data manipulation) * 'src/gui/': functions about interface (buffers, windows, ...) @@ -89,21 +89,21 @@ WeeChat "core" reside in following directories: | Path/file | Description | core/ | Core functions: entry point, internal structures | weechat.c | Entry point, command line options, main functions, startup -| wee-backtrace.c | Display backtrace after a segfault +| wee-backtrace.c | Display a backtrace after a crash | wee-command.c | WeeChat core commands -| wee-completion.c | Completion on command line +| wee-completion.c | Default completions | wee-config-file.c | Configuration file management | wee-config.c | Configuration options for WeeChat core (file weechat.conf) | wee-debug.c | Some debug functions -| wee-eval.c | Evaluate expressions with references to internal vars +| wee-eval.c | Evaluation of expressions with references to internal vars | wee-hashtable.c | Hashtables | wee-hdata.c | Hdata (direct access to data using hashtables) | wee-hook.c | Hooks -| wee-infolist.c | Infolists (lists built with data about objects) +| wee-infolist.c | Infolists (lists with objects data) | wee-input.c | Input of commands/text | wee-list.c | Sorted lists | wee-log.c | Write to WeeChat log file (weechat.log) -| wee-network.c | Network functions (connection to servers, proxy) +| wee-network.c | Network functions (connection to servers/proxies) | wee-proxy.c | Proxy management | wee-secure.c | Secured data options (file sec.conf) | wee-string.c | Functions on strings @@ -120,11 +120,11 @@ WeeChat "core" reside in following directories: | gui-buffer.c | Buffers | gui-chat.c | Chat functions (display message, ...) | gui-color.c | Color functions -| gui-completion.c | Default completions +| gui-completion.c | Completion on command line | gui-cursor.c | Cursor mode (free movement of cursor) | gui-filter.c | Filters | gui-focus.c | Functions about focus (for cursor mode and mouse) -| gui-history.c | commands/text saved in buffers +| gui-history.c | Commands/text saved in buffers | gui-hotlist.c | Hotlist management (list of buffers with activity) | gui-input.c | Input functions (input bar) | gui-key.c | Keyboard functions @@ -183,7 +183,7 @@ WeeChat "core" reside in following directories: | irc-bar-item.c | IRC bar items | irc-buffer.c | IRC buffers | irc-channel.c | IRC channels -| irc-color.c | Color functions +| irc-color.c | IRC colors | irc-command.c | IRC commands | irc-completion.c | IRC completions | irc-config.c | IRC config options (file irc.conf) @@ -201,14 +201,14 @@ WeeChat "core" reside in following directories: | irc-raw.c | IRC raw buffer | irc-redirect.c | Redirection of IRC command output | irc-sasl.c | SASL authentication with IRC server -| irc-server.c | I/O communication with IRC servers -| irc-upgrade.c | Save/restore IRC data when upgrading WeeChat +| irc-server.c | I/O communication with IRC server +| irc-upgrade.c | Save/restore of IRC data when upgrading WeeChat | logger/ | Logger plugin | logger.c | Main logger functions | logger-buffer.c | Logger buffer list management | logger-config.c | Logger config options (file logger.conf) | logger-info.c | Logger info/infolists/hdata -| logger-tail.c | Return last lines of a file +| logger-tail.c | Functions to get last lines of a file | lua/ | Lua plugin | weechat-lua.c | Main lua functions (load/unload scripts, execute lua code) | weechat-lua-api.c | Lua scripting API functions @@ -229,12 +229,12 @@ WeeChat "core" reside in following directories: | relay-network.c | Network functions for relay | relay-raw.c | Relay raw buffer | relay-server.c | Relay server -| relay-upgrade.c | Save/restore relay data when upgrading WeeChat -| relay-websocket.c | Websocket server functions for relay (RFC 6455) +| relay-upgrade.c | Save/restore of relay data when upgrading WeeChat +| relay-websocket.c | WebSocket server functions (RFC 6455) | irc/ | IRC proxy | relay-irc.c | Main IRC proxy functions -| weechat/ | Relay for remote interface -| relay-weechat.c | Relay for remote interface (main functions) +| weechat/ | Relay for remote interfaces +| relay-weechat.c | Relay for remote interfaces (main functions) | relay-weechat-msg.c | Send binary messages to clients | relay-weechat-nicklist.c | Nicklist functions | relay-weechat-protocol.c | Read commands from clients @@ -250,7 +250,7 @@ WeeChat "core" reside in following directories: | weechat-ruby-api.c | Ruby scripting API functions | script/ | Scripts manager | script.c | Main functions for scripts manager -| script-action.c | Actions on scripts (load/unload, install/remove, hold, ...) +| script-action.c | Actions on scripts (load/unload, install/remove, ...) | script-buffer.c | Buffer for scripts manager | script-command.c | Commands for scripts manager | script-completion.c | Completions for scripts manager @@ -263,15 +263,15 @@ WeeChat "core" reside in following directories: | xfer/ | Xfer plugin (IRC DCC file/chat) | xfer.c | Main xfer functions | xfer-buffer.c | Xfer buffer -| xfer-chat.c | Xfer DCC chat +| xfer-chat.c | DCC chat | xfer-command.c | Xfer commands | xfer-completion.c | Xfer completions | xfer-config.c | Xfer config options (file xfer.conf) -| xfer-dcc.c | Xfer DCC file +| xfer-dcc.c | DCC file transfer | xfer-file.c | File functions for xfer | xfer-info.c | Xfer info/infolists/hdata | xfer-network.c | Network functions for xfer -| xfer-upgrade.c | Save/restore xfer data when upgrading WeeChat +| xfer-upgrade.c | Save/restore of xfer data when upgrading WeeChat |=== [[documentation_translations]] @@ -297,12 +297,13 @@ Documentation files: | weechat_dev.XX.txt | Developer's guide (this document) | weechat_relay_protocol.XX.txt | Relay protocol | cmdline_options.XX.txt | Command-line options (file included in man page and user's guide) -| autogen/ | Files auto-built with script docgen.py (do *NEVER* update manually!) +| autogen/ | Files auto-built with script docgen.py | user/ | Files auto-built for user's guide (do *NEVER* update manually!) | plugin_api/ | Files auto-built for plugin API (do *NEVER* update manually!) |=== -Translations for WeeChat and plugins are done with gettext, files are in 'po/' directory: +Translations for WeeChat and plugins are done with gettext, files are in 'po/' +directory: [width="100%",cols="1v,5",options="header"] |=== @@ -319,9 +320,15 @@ Translations for WeeChat and plugins are done with gettext, files are in 'po/' d === General rules * In source code, your comments, variable names, .. must be written in English - *only* (no other language is allowed) -* Use a copyright header in each new source file, with date, name, e-mail, - license and below that a short description of file. Example in C: + *only* (no other language is allowed). +* Use a copyright header in each new source file with: +** short description of file (one line), +** date, +** name, +** e-mail, +** license. + +Example in C: [source,C] ---- @@ -356,8 +363,8 @@ Some basic rules you *must* follow when you write C code: * Try to not exceed 80 chars by line, except if this is needed to increase readability. * Use comments `/* comment */` (not C99-style comments like `// comment`). -* Add a comment before any function, to explain what does the function (always - use a multi-line comment, even if description is very short). +* Add a comment before any function, to explain what it does (always use a + multi-line comment, even if description is very short). Example: @@ -406,7 +413,7 @@ foo () ---- * Use parentheses to explicitly show how expression is evaluated, even if - they are not required, for example: write `x + (y * z)` instead of `x + y * z` + they are not required, for example: write `x + (y * z)` instead of `x + y * z`. * Place curly brackets `{ }` alone on lines, and indent them with number of spaces used for line above opening curly bracket (the `if` in example): @@ -504,7 +511,7 @@ switch (string[0]) } ---- -* Use `typedef` for function prototypes, not structures: +* Use `typedef` for function prototypes but not for structures: [source,C] ---- @@ -554,8 +561,8 @@ See http://www.python.org/dev/peps/pep-0008/ ==== Files File names are composed by letters and hyphens, with format: 'xxx-yyyyy.[ch]', -where 'xxx' is directory/component (can be abbreviation) where the file is, and -'yyyyy' a name for the file, which shows the purpose of file. +where 'xxx' is directory/component (can be abbreviation) and 'yyyyy' a name for +the file. The main file of a directory may have same name as directory, for example 'irc.c' in irc plugin. @@ -625,7 +632,7 @@ struct t_gui_window *gui_current_window = NULL; /* current window */ ---- There is no naming convention for local variables (in functions). The only -recommendation is that name is explicit (not too short). +recommendation is that name is explicit (not too short). + Nevertheless, pointers to structures are often named 'ptr_xxxx', for example a pointer on a 'struct t_gui_buffer *' will be: '*ptr_buffer'. @@ -633,7 +640,7 @@ pointer on a 'struct t_gui_buffer *' will be: '*ptr_buffer'. ==== Functions Naming convention for functions is the same as -<<naming_convention_variables,variables,>>. +<<naming_convention_variables,variables>>. Example: creation of a new window (from 'src/gui/gui-window.c'): @@ -730,7 +737,7 @@ In following table, these conventions are used: All combinations are summarized in this table: -[width="100%",cols="3,2,1,5",options="header"] +[width="100%",cols="4,2,2,8",options="header"] |=== | Code | Example | Areas | Description | hex[19] + STD | hex[19]`01` | chat + bars | Set attributes and color using option, see table below @@ -753,16 +760,17 @@ All combinations are summarized in this table: | hex[19] + "b" + "#" | hex[19]`b#` | input bar | Move cursor char (used only in item "input_text") | hex[19] + "b" + "i" | hex[19]`bi` | bars | Start item | hex[19] + "b" + "l" (lower L) | hex[19]`bl` | bars | Start line item -| hex[19] + "E" | hex[19]`E` | chat + bars | Emphasize text _(new in version 0.4.2)_ +| hex[19] + "E" | hex[19]`E` | chat + bars | Emphasize text _(WeeChat ≥ 0.4.2)_ | hex[19] + hex[1C] | hex[19]hex[1C] | chat + bars | Reset color (keep attributes) | hex[1A] + ATTR | hex[1A]`*` | chat + bars | Set attribute | hex[1B] + ATTR | hex[1B]`*` | chat + bars | Remove attribute | hex[1C] | hex[1C] | chat + bars | Reset attributes and color |=== -Color codes using options (see 't_gui_color_enum', in file 'src/gui/gui-color.h'): +Color codes using options (see 't_gui_color_enum', in file +'src/gui/gui-color.h'): -[width="60%",cols="^1m,10",options="header"] +[width="70%",cols="^1m,10",options="header"] |=== | Code | Option | 00 | weechat.color.separator @@ -799,21 +807,21 @@ Color codes using options (see 't_gui_color_enum', in file 'src/gui/gui-color.h' | 31 | weechat.color.chat_text_found | 32 | weechat.color.chat_value | 33 | weechat.color.chat_prefix_buffer -| 34 | weechat.color.chat_tags _(new in version 0.3.6)_ -| 35 | weechat.color.chat_inactive_window _(new in version 0.3.6)_ -| 36 | weechat.color.chat_inactive_buffer _(new in version 0.3.6)_ -| 37 | weechat.color.chat_prefix_buffer_inactive_buffer _(new in version 0.3.6)_ -| 38 | weechat.color.chat_nick_offline _(new in version 0.3.9)_ -| 39 | weechat.color.chat_nick_offline_highlight _(new in version 0.3.9)_ -| 40 | weechat.color.chat_nick_prefix _(new in version 0.4.1)_ -| 41 | weechat.color.chat_nick_suffix _(new in version 0.4.1)_ -| 42 | weechat.color.emphasis _(new in version 0.4.2)_ -| 43 | weechat.color.chat_day_change _(new in version 0.4.2)_ +| 34 | weechat.color.chat_tags _(WeeChat ≥ 0.3.6)_ +| 35 | weechat.color.chat_inactive_window _(WeeChat ≥ 0.3.6)_ +| 36 | weechat.color.chat_inactive_buffer _(WeeChat ≥ 0.3.6)_ +| 37 | weechat.color.chat_prefix_buffer_inactive_buffer _(WeeChat ≥ 0.3.6)_ +| 38 | weechat.color.chat_nick_offline _(WeeChat ≥ 0.3.9)_ +| 39 | weechat.color.chat_nick_offline_highlight _(WeeChat ≥ 0.3.9)_ +| 40 | weechat.color.chat_nick_prefix _(WeeChat ≥ 0.4.1)_ +| 41 | weechat.color.chat_nick_suffix _(WeeChat ≥ 0.4.1)_ +| 42 | weechat.color.emphasis _(WeeChat ≥ 0.4.2)_ +| 43 | weechat.color.chat_day_change _(WeeChat ≥ 0.4.2)_ |=== WeeChat colors are: -[width="40%",cols="^1m,6",options="header"] +[width="70%",cols="^1m,6",options="header"] |=== | Code | Color | 00 | Default (terminal foreground/background) @@ -837,7 +845,7 @@ WeeChat colors are: Examples of color codes: -[width="50%",cols="1,2",options="header"] +[width="70%",cols="1,2",options="header"] |=== | Code | Description | hex[19]`01` | Color of option "01" (chat text) @@ -853,13 +861,13 @@ Examples of color codes: == Plugin internals The file 'src/plugins/weechat-plugin.h' defines and exports all functions -available for API. +available in the API. A structure called 't_weechat_plugin' is used to store info about plugin (filename, name, author, description, ...) and all API functions, as pointers to WeeChat functions. -Then some macros are defined to call these functions in an easier way. +Then some macros are defined to call these functions. For example, function 'hook_timer' is defined in structure 't_weechat_plugin' like this: @@ -915,7 +923,7 @@ component: fix a problem (bug #12345) Where 'component' is one of following: -* WeeChat core: 'core' (files in directory 'src/' except doc and plugins) +* WeeChat core: 'core' (files in directory 'src/' except 'doc' and 'plugins') * documentation files: 'doc' (files in directory 'doc/') * name of a plugin: 'irc', 'python', 'relay', ... (files in directory 'src/plugins/') @@ -943,6 +951,7 @@ core: update Japanese translations (patch #7783) ==== Gettext Gettext files are in directory 'po/'. + If you want to initialize a new language, use command `msginit`. For example to create a dutch empty file: @@ -951,8 +960,8 @@ $ cd po $ msginit -i weechat.pot -l nl_NL -o nl.po ---- -Base language for WeeChat is English, so you must of course understand English -in order to translate to your language. +Base language for WeeChat is English, so you must of course perfectly understand +English in order to translate to your language. When done, you *have* to check your file with script 'msgcheck.py' (https://github.com/flashcode/msgcheck): @@ -980,18 +989,20 @@ Then create this alias to build files: /alias doc /perl unload; /python unload; /ruby unload; /lua unload; /tcl unload; /guile unload; /python load docgen.py; /wait 1ms /docgen ---- -And use command `/doc` to build all auto-generated files (for all languages). +And use command `/doc` to build all files, for all languages. [IMPORTANT] When using command `/doc`, be sure all C plugins (irc, charset, ...) are loaded, -because files are built using options currently in memory. +because files are built using data currently in memory. [[asciidoc]] ==== Asciidoc -Asciidoc files are in directory 'doc/XX/' where 'XX' is language (en, fr, de, it, ...) +Asciidoc files are in directory 'doc/XX/' where 'XX' is language (en, fr, de, +it, ...). -First make a copy of an English asciidoc file (in directory 'doc/en/'), then work on it. +First make a copy of an English asciidoc file (in directory 'doc/en/'), then +work on it. The translations missing in files are indicated by this string: diff --git a/doc/en/weechat_plugin_api.en.txt b/doc/en/weechat_plugin_api.en.txt index fdcb1c329..4a24853ec 100644 --- a/doc/en/weechat_plugin_api.en.txt +++ b/doc/en/weechat_plugin_api.en.txt @@ -1,4 +1,4 @@ -= WeeChat Plugin API Reference += WeeChat plugin API reference :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: en diff --git a/doc/en/weechat_quickstart.en.txt b/doc/en/weechat_quickstart.en.txt index ae2e9311e..c4e42cf59 100644 --- a/doc/en/weechat_quickstart.en.txt +++ b/doc/en/weechat_quickstart.en.txt @@ -1,4 +1,4 @@ -= WeeChat Quick Start Guide += WeeChat quick start guide :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: en diff --git a/doc/en/weechat_relay_protocol.en.txt b/doc/en/weechat_relay_protocol.en.txt index e9f56b446..1640b95d3 100644 --- a/doc/en/weechat_relay_protocol.en.txt +++ b/doc/en/weechat_relay_protocol.en.txt @@ -1,4 +1,4 @@ -= WeeChat Relay Protocol += WeeChat Relay protocol :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: en diff --git a/doc/en/weechat_scripting.en.txt b/doc/en/weechat_scripting.en.txt index 27fc45525..f0b77af3b 100644 --- a/doc/en/weechat_scripting.en.txt +++ b/doc/en/weechat_scripting.en.txt @@ -1,4 +1,4 @@ -= WeeChat Scripting Guide += WeeChat scripting guide :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: en diff --git a/doc/en/weechat_tester.en.txt b/doc/en/weechat_tester.en.txt index addfbc664..248caf922 100644 --- a/doc/en/weechat_tester.en.txt +++ b/doc/en/weechat_tester.en.txt @@ -1,4 +1,4 @@ -= WeeChat Tester's Guide += WeeChat tester's guide :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: en diff --git a/doc/en/weechat_user.en.txt b/doc/en/weechat_user.en.txt index 82cdc7b6c..d6d61c031 100644 --- a/doc/en/weechat_user.en.txt +++ b/doc/en/weechat_user.en.txt @@ -1,4 +1,4 @@ -= WeeChat User's Guide += WeeChat user's guide :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: en diff --git a/doc/fr/CMakeLists.txt b/doc/fr/CMakeLists.txt index d4165a367..d79f085d5 100644 --- a/doc/fr/CMakeLists.txt +++ b/doc/fr/CMakeLists.txt @@ -104,4 +104,15 @@ IF(ENABLE_DOC AND SOURCEHIGHLIGHT_FOUND) ADD_CUSTOM_TARGET(doc-tester-fr ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/weechat_tester.fr.html) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/weechat_tester.fr.html DESTINATION ${SHAREDIR}/doc/${PROJECT_NAME}) + # developer's guide + ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/weechat_dev.fr.html + COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a revision="${VERSION}" -a stylesheet=${CMAKE_CURRENT_SOURCE_DIR}/../asciidoc.css -f ${CMAKE_CURRENT_SOURCE_DIR}/../asciidoc.conf -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_dev.fr.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_dev.fr.txt + DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/weechat_dev.fr.txt + COMMENT "Building weechat_dev.fr.html" + ) + ADD_CUSTOM_TARGET(doc-dev-fr ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/weechat_dev.fr.html) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/weechat_dev.fr.html DESTINATION ${SHAREDIR}/doc/${PROJECT_NAME}) + ENDIF(ENABLE_DOC AND SOURCEHIGHLIGHT_FOUND) diff --git a/doc/fr/Makefile.am b/doc/fr/Makefile.am index 0f833445d..78a4b15c1 100644 --- a/doc/fr/Makefile.am +++ b/doc/fr/Makefile.am @@ -29,6 +29,7 @@ EXTRA_DIST = CMakeLists.txt \ weechat_faq.fr.txt \ weechat_quickstart.fr.txt \ weechat_tester.fr.txt \ + weechat_dev.fr.txt \ $(wildcard autogen/user/*.txt) \ $(wildcard autogen/plugin_api/*.txt) @@ -43,7 +44,8 @@ if DOC weechat_scripting.fr.html \ weechat_faq.fr.html \ weechat_quickstart.fr.html \ - weechat_tester.fr.html + weechat_tester.fr.html \ + weechat_dev.fr.html doc_install = install-doc doc_uninstall = uninstall-doc endif @@ -79,6 +81,10 @@ weechat_quickstart.fr.html: weechat_quickstart.fr.txt weechat_tester.fr.html: weechat_tester.fr.txt $(ASCIIDOC) -a revision="$(VERSION)" -a stylesheet=$(abs_top_srcdir)/doc/asciidoc.css -f $(abs_top_srcdir)/doc/asciidoc.conf -n -o weechat_tester.fr.html $(abs_top_srcdir)/doc/fr/weechat_tester.fr.txt +# developer's guide +weechat_dev.fr.html: weechat_dev.fr.txt + $(ASCIIDOC) -a revision="$(VERSION)" -a stylesheet=$(abs_top_srcdir)/doc/asciidoc.css -f $(abs_top_srcdir)/doc/asciidoc.conf -n -o weechat_dev.fr.html $(abs_top_srcdir)/doc/fr/weechat_dev.fr.txt + # install man/docs install-data-hook: $(man_install) $(doc_install) diff --git a/doc/fr/weechat_dev.fr.txt b/doc/fr/weechat_dev.fr.txt new file mode 100644 index 000000000..489dc9558 --- /dev/null +++ b/doc/fr/weechat_dev.fr.txt @@ -0,0 +1,1055 @@ += Guide du développeur WeeChat +:author: Sébastien Helleu +:email: flashcode@flashtux.org +:lang: fr +:toc: +:toclevels: 4 + + +Ce manuel documente le client de messagerie instantanée WeeChat, il fait +partie de WeeChat. + +La dernière version de ce document peut être téléchargée sur cette page : +http://weechat.org/doc + + +[[introduction]] +== Introduction + +WeeChat (Wee Enhanced Environment for Chat) est un client de discussion libre, +rapide et léger, conçu pour différents systèmes d'exploitation. + +Ce manuel documente l'intérieur de WeeChat : + +* dépôt (sources, documentation, ...) +* règles de développement +* le cœur +* les extensions +* comment contribuer à WeeChat + +[[repository]] +== Dépôt + +WeeChat a deux dépôts principaux : + +* dépôt principal : il contient le code source et la documentation, l'URL est : + http://git.savannah.gnu.org/gitweb/?p=weechat.git +* scripts : les scripts 'officiels' soumis sur weechat.org, l'URL est : + http://git.savannah.gnu.org/gitweb/?p=weechat/scripts.git + +Ce manuel documente seulement le dépôt principal. + +[[overview]] +=== Vue d'ensemble + +Les répertoires principaux de WeeChat sont : + +[width="100%",cols="1v,5",options="header"] +|=== +| Répertoire | Description +| src/ | Racine des sources +| core/ | Fonctions du cœur : point d'entrée, structures internes +| gui/ | Fonctions pour les tampons, fenêtres, ... (utilisées par toutes les interfaces) +| curses/ | Interface Curses +| plugins/ | API extension/script +| alias/ | Extension Alias +| aspell/ | Extension Aspell +| charset/ | Extension Charset +| fifo/ | Extension Fifo (tube FIFO utilisé pour envoyer des commandes à WeeChat) +| irc/ | Extension IRC (Internet Relay Chat) +| logger/ | Extension Logger (enregistrer les messages affichés dans des fichiers) +| relay/ | Extension Relay (proxy IRC + relai pour interfaces distantes) +| rmodifier/ | Extension Rmodifier (modifier des chaînes de modificateur avec des expressions régulières) +| script/ | Gestionnaire de scripts +| python/ | API script Python +| perl/ | API script Perl +| ruby/ | API script Ruby +| lua/ | API script Lua +| tcl/ | API script Tcl +| guile/ | API script Guile (scheme) +| xfer/ | Extension Xfer (IRC DCC fichier/discussion) +| doc/ | Documentation +| po/ | Fichiers de traductions (gettext) +| test/ | Outils/fichiers pour tester WeeChat (comme Weercd, un serveur IRC) +| debian/ | Empaquetage Debian +|=== + +[[sources]] +=== Sources + +[[sources_core]] +==== Cœur + +Le cœur de WeeChat est situé dans les répertoires suivants : + +* 'src/core/' : fonctions du cœur (pour manipuler des données) +* 'src/gui/' : fonctions pour l'interface (tampons, fenêtres, ...) + +[width="100%",cols="1v,5",options="header"] +|=== +| Chemin/fichier | Description +| core/ | Fonctions du cœur : point d'entrée, structures internes +| weechat.c | Point d'entrée, options de ligne de commande, fonctions principales, démarrage +| wee-backtrace.c | Afficher une trace après un plantage +| wee-command.c | Commandes du cœur de WeeChat +| wee-completion.c | Complétions par défaut +| wee-config-file.c | Gestion des fichiers de configuration +| wee-config.c | Options de configuration du cœur de WeeChat (fichier weechat.conf) +| wee-debug.c | Quelques fonctions de debug +| wee-eval.c | Évaluation d'expressions avec des références à des variables internes +| wee-hashtable.c | Tables de hachage +| wee-hdata.c | Hdata (accès direct aux données en utilisant des tables de hachage) +| wee-hook.c | Crochets ("hooks") +| wee-infolist.c | Infolists (listes avec les données des objets) +| wee-input.c | Entrée de commandes/texte +| wee-list.c | Listes triées +| wee-log.c | Écriture dans le fichier de log WeeChat (weechat.log) +| wee-network.c | Fonctions réseau (connexion aux serveurs/proxies) +| wee-proxy.c | Gestion des proxies +| wee-secure.c | Options des données sécurisées (fichier sec.conf) +| wee-string.c | Fonctions sur les chaînes de caractères +| wee-upgrade-file.c | Système de mise à jour interne +| wee-upgrade.c | Mise à jour du cœur de WeeChat (tampons, lignes, historique, ...) +| wee-url.c | Transfert d'URL (en utilisant libcurl) +| wee-utf8.c | Fonctions UTF-8 +| wee-util.c | Quelques autres fonctions +| wee-version.c | Fonctions pour la version de WeeChat +| gui/ | Fonctions pour les tampons, fenêtres, ... (utilisées par toutes les interfaces) +| gui-bar-item.c | Objets de barre +| gui-bar-window.c | Fenêtres de barre +| gui-bar.c | Barres +| gui-buffer.c | Tampons +| gui-chat.c | Fonctions pour la discussion (afficher un message, ...) +| gui-color.c | Fonctions de couleur +| gui-completion.c | Complétion sur la ligne de commande +| gui-cursor.c | Mode curseur (mouvement libre du curseur) +| gui-filter.c | Filtres +| gui-focus.c | Fonctions concernant le focus (pour les modes curseur et souris) +| gui-history.c | Commandes/texte sauvés dans les tampons +| gui-hotlist.c | Gestion de la "hotlist" (liste des tampons avec activité) +| gui-input.c | Fonctions d'entrée (barre "input") +| gui-key.c | Fonctions pour le clavier +| gui-layout.c | Dispositions ("layout") +| gui-line.c | Lignes dans les tampons +| gui-mouse.c | Souris +| gui-nicklist.c | Liste de pseudos dans les tampons +| gui-window.c | Fenêtres +| curses/ | Interface Curses +| gui-curses-bar-window.c | Affichage dans les fenêtres de barre +| gui-curses-chat.c | Affichage dans la zone de discussion (messages) +| gui-curses-color.c | Fonctions pour les couleurs +| gui-curses-key.c | Fonctions pour le clavier (touches par défaut, lecture du clavier) +| gui-curses-main.c | Boucle principale de WeeChat (attente des évènements clavier/réseau) +| gui-curses-mouse.c | Souris +| gui-curses-term.c | Fonctions pour le terminal +| gui-curses-window.c | Fenêtres +|=== + +[[sources_plugins]] +==== Extensions + +[width="100%",cols="1v,5",options="header"] +|=== +| Chemin/fichier | Description +| plugins/ | Racine des extensions +| plugin.c | Gestion des extensions (chargement/déchargement des librairies C dynamiques) +| plugin-api.c | Fonctions supplémentaires pour l'API extension (enveloppes autour des fonctions du cœur de WeeChat) +| plugin-config.c | Options de configuration des extensions (fichier plugins.conf) +| plugin-script.c | Fonctions communes utilisés par les extensions pour les scripts +| plugin-script-api.c | Fonctions pour l'API script : enveloppes autour de quelques fonctions de l'API extension +| plugin-script-callback.c | Gestion des "callbacks" pour les scripts +| weechat-plugin.h | En-tête destiné à être distribué avec les extensions WeeChat, pour les compiler +| alias/ | Extension Alias +| alias.c | Fonctions principales pour les alias +| alias-config.c | Options de configuration des alias (fichier alias.conf) +| alias-info.c | Info/infolists/hdata pour les alias +| aspell/ | Extension Aspell +| weechat-aspell.c | Fonctions principales pour Aspell +| weechat-aspell-bar-item.c | Objets de barre Aspell +| weechat-aspell-command.c | Commandes Aspell +| weechat-aspell-completion.c | Complétions pour Aspell +| weechat-aspell-config.c | Options de configuration pour Aspell (fichier aspell.conf) +| weechat-aspell-info.c | Info/infolists/hdata pour Aspell +| weechat-aspell-speller.c | Gestion des correcteurs orthographiques +| charset/ | Extension Charset +| charset.c | Fonctions pour Charset +| fifo/ | Extension Fifo +| fifo.c | Fonctions principales de Fifo +| fifo-info.c | Info/infolists/hdata pour Fifo +| guile/ | Extension Guile (scheme) +| weechat-guile.c | Fonctions principales pour Guile (chargement/déchargement des scripts, exécution de code Guile) +| weechat-guile-api.c | Fonctions de l'API script Guile +| irc/ | Extension IRC (Internet Relay Chat) +| irc.c | Fonctions principales IRC +| irc-bar-item.c | Objets de barre IRC +| irc-buffer.c | Tampons IRC +| irc-channel.c | Canaux IRC +| irc-color.c | Couleurs IRC +| irc-command.c | Commandes IRC +| irc-completion.c | Complétions IRC +| irc-config.c | Options de configuration IRC (fichier irc.conf) +| irc-ctcp.c | CTCP IRC +| irc-debug.c | Fonctions de debug IRC +| irc-ignore.c | Ignore IRC +| irc-info.c | Info/infolists/hdata pour IRC +| irc-input.c | Entrée de commandes/texte +| irc-message.c | Fonctions pour manipuler les messages IRC +| irc-mode.c | Fonctions pour les modes de canal/pseudo +| irc-msgbuffer.c | Tampon cible pour les messages IRC +| irc-nick.c | Pseudos IRC +| irc-notify.c | Listes de notification IRC +| irc-protocol.c | Protocole IRC (RFCs 1459/2810/2811/2812/2813) +| irc-raw.c | Tampon des données brutes IRC +| irc-redirect.c | Redirection de la sortie des commandes IRC +| irc-sasl.c | Authentification SASL avec le serveur IRC +| irc-server.c | Communication avec le serveur IRC +| irc-upgrade.c | Sauvegarde/restauration des données IRC lors de la mise à jour de WeeChat +| logger/ | Extension Logger +| logger.c | Fonctions principales pour Logger +| logger-buffer.c | Gestion des listes de tampons pour Logger +| logger-config.c | Options de configuration pour Logger (fichier logger.conf) +| logger-info.c | Info/infolists/hdata pour Logger +| logger-tail.c | Fonctions pour obtenir les dernières lignes d'un fichier +| lua/ | Extension Lua +| weechat-lua.c | Fonctions principales pour Lua (chargement/déchargement des scripts, exécution de code Lua) +| weechat-lua-api.c | Fonctions de l'API script Lua +| perl/ | Extension Perl +| weechat-perl.c | Fonctions principales pour Perl (chargement/déchargement des scripts, exécution de code Perl) +| weechat-perl-api.c | Fonctions de l'API script Perl +| python/ | Extension Python +| weechat-python.c | Fonctions principales pour Python (chargement/déchargement des scripts, exécution de code Python) +| weechat-python-api.c | Fonctions de l'API script Python +| relay/ | Extension Relay (proxy IRC et relai pour des interfaces distantes) +| relay.c | Fonctions principales de Relay +| relay-buffer.c | Tampon Relay +| relay-client.c | Clients du relai +| relay-command.c | Commandes de Relay +| relay-completion.c | Complétions de Relay +| relay-config.c | Options de configuration pour Relay (fichier relay.conf) +| relay-info.c | Info/infolists/hdata pour Relay +| relay-network.c | Fonctions de réseau pour Relay +| relay-raw.c | Tampon des données brutes de Relay +| relay-server.c | Serveur Relay +| relay-upgrade.c | Sauvegarde/restauration des données Relay lors de la mise à jour de WeeChat +| relay-websocket.c | Fonctions pour le serveur WebSocket (RFC 6455) +| irc/ | Proxy IRC +| relay-irc.c | Fonctions principales pour le proxy IRC +| weechat/ | Relai pour les interfaces distantes +| relay-weechat.c | Relai pour les interfaces distantes (fonctions principales) +| relay-weechat-msg.c | Envoi de messages binaires aux clients +| relay-weechat-nicklist.c | Fonctions pour la liste de pseudos +| relay-weechat-protocol.c | Lecture des commandes des clients +| rmodifier/ | Extension Rmodifier +| rmodifier.c | Fonctions principales de Rmodifier +| rmodifier-command.c | Commandes de Rmodifier +| rmodifier-completion.c | Complétions de Rmodifier +| rmodifier-config.c | Options de configuration pour Rmodifier (fichier rmodifier.conf) +| rmodifier-debug.c | Fonctions de debug pour Rmodifier +| rmodifier-info.c | Info/infolists/hdata pour Rmodifier +| ruby/ | Extension Ruby +| weechat-ruby.c | Fonctions principales pour Ruby (chargement/déchargement des scripts, exécution de code Ruby) +| weechat-ruby-api.c | Fonctions de l'API script Ruby +| script/ | Gestionnaire de scripts +| script.c | Fonctions principales du gestionnaire de scripts +| script-action.c | Actions sur les scripts (chargement/déchargement, installation/suppression, ...) +| script-buffer.c | Tampon pour le gestionnaire de scripts +| script-command.c | Commandes pour le gestionnaire de scripts +| script-completion.c | Complétions pour le gestionnaire de scripts +| script-config.c | Options de configuration pour le gestionnaire de scripts (fichier script.conf) +| script-info.c | Info/infolists/hdata pour le gestionnaire de scripts +| script-repo.c | Téléchargement et lecture du dépôt de scripts +| tcl/ | Extension Tcl +| weechat-tcl.c | Fonctions principales pour Tcl (chargement/déchargement de scripts, exécution de code Tcl) +| weechat-tcl-api.c | Fonctions de l'API script Tcl +| xfer/ | Extension Xfer (IRC DCC fichier/discussion) +| xfer.c | Fonctions principales de Xfer +| xfer-buffer.c | Tampon Xfer +| xfer-chat.c | Discussion DCC +| xfer-command.c | Commandes pour Xfer +| xfer-completion.c | Complétions pour Xfer +| xfer-config.c | Options de configuration pour Xfer (fichier xfer.conf) +| xfer-dcc.c | Transfert de fichier par DCC +| xfer-file.c | Fonctions pour les fichiers dans Xfer +| xfer-info.c | Info/infolists/hdata pour Xfer +| xfer-network.c | Fonctions réseau pour Xfer +| xfer-upgrade.c | Sauvegarde/restauration des données Xfer lors de la mise à jour de WeeChat +|=== + +[[documentation_translations]] +=== Documentation / traductions + +Fichiers de documentation : + +[width="100%",cols="1v,5",options="header"] +|=== +| Chemin/fichier | Description +| doc/ | Documentation +| asciidoc.conf | Fichier de configuration Asciidoc (quelques macros) +| asciidoc.css | Style Asciidoc +| docgen.py | Script Python pour construire les fichiers dans le répertoire "autogen/" (voir ci-dessous) +| XX/ | Documentation pour la langue XX (langues : en, fr, de, it, ...) +| weechat.1.XX.txt | Page de manuel +| weechat_quickstart.XX.txt | Guide de démarrage +| weechat_user.XX.txt | Guide utilisateur +| weechat_faq.XX.txt | FAQ (questions fréquemment posées) +| weechat_plugin_api.XX.txt | Référence API extension +| weechat_scripting.XX.txt | Guide pour scripts +| weechat_tester.XX.txt | Guide du testeur +| weechat_dev.XX.txt | Guide du développeur (ce document) +| weechat_relay_protocol.XX.txt | Protocole Relay +| cmdline_options.XX.txt | Options de ligne de commande (fichier inclus dans la page de manuel et le guide utilisateur) +| autogen/ | Fichiers automatiquement générés avec le script docgen.py +| user/ | Fichiers automatiquement générés pour le guide utilisateur (ne *JAMAIS* les mettre à jour manuellement !) +| plugin_api/ | Fichiers automatiquement générés pour l'API extension (ne *JAMAIS* les mettre à jour manuellement !) +|=== + +Les traductions pour WeeChat et les extensions sont effectuées avec gettext, les +fichiers sont dans le répertoire 'po/' : + +[width="100%",cols="1v,5",options="header"] +|=== +| Chemin/fichier | Description +| po/ | Fichiers de traduction (gettext) +| XX.po | Traductions pour la langue XX (fr, de, it, ...), la langue par défaut est l'anglais +| weechat.pot | Modèle pour les traductions (automatiquement généré) +|=== + +[[coding_rules]] +== Règles de développement + +[[coding_general_rules]] +=== Règles générales + +* Dans le code source, vos commentaires, noms de variables, ... doivent être + écrits en anglais *uniquement* (aucune autre langue n'est autorisée). +* Utilisez un en-tête de copyright dans chaque nouveau fichier source avec : +** une brève description du fichier (une seule ligne), +** la date, +** le nom, +** l'e-mail, +** la licence. + +Exemple en C : + +[source,C] +---- +/* + * weechat.c - core functions for WeeChat + * + * Copyright (C) 2014 Your Name <your@email.com> + * + * 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 <http://www.gnu.org/licenses/>. + */ +---- + +[[coding_c_style]] +=== Style C + +Quelques règles basiques que vous *devez* suivre quand vous écrivez du code C : + +* Utilisez 4 espaces pour l'indentation. N'utilisez pas de tabulations, c'est le + mal. +* Essayez de ne pas dépasser 80 caractères par ligne, sauf si cela est + nécessaire pour améliorer la lisibilité. +* Utilisez les commentaires `/* comment */` (pas de style C99 comme + `// comment`). +* Ajoutez un commentaire avant chaque fonction, pour expliquer ce qu'elle fait + (utilisez toujours un commentaire multi-lignes, même si la description est + très courte). + +Exemple : + +[source,C] +---- +/* + * Checks if a string with boolean value is valid. + * + * Returns: + * 1: boolean value is valid + * 0: boolean value is NOT valid + */ + +int +foo () +{ + int i; + + /* one line comment */ + i = 1; + + /* + * multi-line comment: this is a very long description about next block + * of code + */ + i = 2; + printf ("%d\n", i); +} +---- + +* Utilisez des noms de variable explicites, par exemple "nicks_count" au lieu de + "n" ou "nc". Exception : dans les boucles `for`, où les variables comme "i" ou + "n" sont OK. +* Initialisez les variables locales après la déclaration, dans le corps de la + fonction, exemple : + +[source,C] +---- +void +foo () +{ + int nick_count, buffer_count; + + nick_count = 0; + buffer_count = 1; + /* ... */ +} +---- + +* Utilisez des parenthèses pour montrer explicitement comment l'expression est + évaluée, même si cela n'est pas obligatoire, par exemple écrivez `x + (y * z)` + au lieu de `x + y * z`. +* Disposez les accolades `{ }` seules sur la ligne, et indentez les avec le + nombre d'espaces utilisés sur la ligne au dessus de l'accolade ouvrante (le + `if` dans l'exemple) : + +[source,C] +---- +if (nicks_count == 1) +{ + /* something */ +} +---- + +* Utilisez des lignes vides pour séparer différents blocs dans les fonctions, et + si possible ajoutez un commentaire pour chacun, comme ceci : + +[source,C] +---- +/* + * Sends a message from out queue. + */ + +void +irc_server_outqueue_send (struct t_irc_server *server) +{ + /* ... */ + + /* send signal with command that will be sent to server */ + irc_server_send_signal (server, "irc_out", + server->outqueue[priority]->command, + server->outqueue[priority]->message_after_mod, + NULL); + tags_to_send = irc_server_get_tags_to_send (server->outqueue[priority]->tags); + irc_server_send_signal (server, "irc_outtags", + server->outqueue[priority]->command, + server->outqueue[priority]->message_after_mod, + (tags_to_send) ? tags_to_send : ""); + if (tags_to_send) + free (tags_to_send); + + /* send command */ + irc_server_send (server, server->outqueue[priority]->message_after_mod, + strlen (server->outqueue[priority]->message_after_mod)); + server->last_user_message = time_now; + + /* start redirection if redirect is set */ + if (server->outqueue[priority]->redirect) + { + irc_redirect_init_command (server->outqueue[priority]->redirect, + server->outqueue[priority]->message_after_mod); + } + + /* ... */ +} +---- + +* Indentez les conditions `if`, et utilisez des parenthèses autour des + conditions avec un opérateur (pas nécessaire pour un booléen simple), comme + ceci : + +[source,C] +---- +if (something) +{ + /* something */ +} +else +{ + /* something else */ +} + +if (my_boolean1 && my_boolean2 && (i == 10) + && ((buffer1 != buffer2) || (window1 != window2))) +{ + /* something */ +} +else +{ + /* something else */ +} +---- + +* Indentez les `switch` comme ceci : + +[source,C] +---- +switch (string[0]) +{ + case 'A': /* first case */ + foo ("abc", "def"); + break; + case 'B': /* second case */ + bar (1, 2, 3); + break; + default: /* other cases */ + baz (); + break; +} +---- + +* Utilisez `typedef` pur les prototypes de fonctions mais pas pour les + structures : + +[source,C] +---- +typedef int (t_hook_callback_fd)(void *data, int fd); + +struct t_hook_fd +{ + t_hook_callback_fd *callback; /* fd callback */ + int fd; /* socket or file descriptor */ + int flags; /* fd flags (read,write,..) */ + int error; /* contains errno if error occurred */ + /* with fd */ +}; + +/* ... */ + +struct t_hook_fd *new_hook_fd; + +new_hook_fd = malloc (sizeof (*new_hook_fd)); +---- + +* Ce code lisp peut être utilisé dans votre '~/.emacs.el' pour indenter + correctement si vous utilisez l'éditeur de texte Emacs : + +[source,lisp] +---- +(add-hook 'c-mode-common-hook '(lambda () + (c-toggle-hungry-state t) + (c-set-style "k&r") + (setq c-basic-offset 4 + c-tab-always-indent t) + (c-set-offset 'case-label '+))) +---- + +[[coding_python_style]] +=== Style Python + +Voir http://www.python.org/dev/peps/pep-0008/ + +[[core_internals]] +== Intérieur du cœur + +[[naming_convention]] +=== Conventions pour les noms + +[[naming_convention_files]] +==== Fichiers + +Les noms de fichiers sont composés de lettres et tirets, avec le format : +'xxx-yyyyy.[ch]', où 'xxx' est le répertoire/composant (peut être une +abréviation) et 'yyyyy' un nom pour le fichier. + +Le fichier principal d'un répertoire peut avoir le même nom que le répertoire, +par exemple 'irc.c' pour l'extension irc. + +Exemples : + +[width="100%",cols="1l,5",options="header"] +|=== +| Répertoire | Fichiers +| src/core/ | weechat.c, wee-backtrace.c, wee-command.c, ... +| src/gui/ | gui-bar.c, gui-bar-item.c, gui-bar-window.c, ... +| src/gui/curses/ | gui-curses-bar.c, gui-curses-bar-window.c, gui-curses-chat.c, ... +| src/plugins/ | plugin.c, plugin-api.c, plugin-config.c, plugin-script.c, ... +| src/plugins/irc/ | irc.c, irc-bar-item.c, irc-buffer.c, ... +| src/plugins/python/ | weechat-python.c, weechat-python-api.c, ... +|=== + +Les en-têtes des fichiers C doivent avoir le même nom que le fichier, par +exemple 'wee-command.h' pour le fichier 'wee-command.c'. + +[[naming_convention_structures]] +==== Structures + +Les structures ont le nom 't_X_Y' ou 't_X_Y_Z' : + +* 'X' : répertoire/composant (peut être une abréviation) +* 'Y' : fin du nom de fichier +* 'Z' : nom de la structure (facultatif) + +Exemple : un pseudo IRC (de 'src/plugins/irc/irc-nick.h') : + +[source,C] +---- +struct t_irc_nick +{ + char *name; /* nickname */ + char *host; /* full hostname */ + char *prefixes; /* string with prefixes enabled for nick */ + char prefix[2]; /* current prefix (higher prefix set in */ + /* prefixes) */ + int away; /* 1 if nick is away */ + char *color; /* color for nickname in chat window */ + struct t_irc_nick *prev_nick; /* link to previous nick on channel */ + struct t_irc_nick *next_nick; /* link to next nick on channel */ +}; +---- + +[[naming_convention_variables]] +==== Variables + +Les variables globales (en dehors des fonctions) ont le nom 'X_Y_Z' : + +* 'X' : répertoire/composant (peut être une abréviation) +* 'Y' : fin du nom de fichier +* 'Z' : nom de la variable + +Exception : pour les variables des derniers éléments d'une liste, le nom est +'last_X' (où 'X' est le nom de la variable, en utilisant le singulier). + +Exemple : fenêtres (de 'src/gui/gui-window.c') : + +[source,C] +---- +struct t_gui_window *gui_windows = NULL; /* first window */ +struct t_gui_window *last_gui_window = NULL; /* last window */ +struct t_gui_window *gui_current_window = NULL; /* current window */ +---- + +Il n'y a pas de convention pour les variables locales (dans les fonctions). +La seule recommendation est que le nom soit explicite (et pas trop court). + +Cependant, les pointeurs vers les structures sont souvent nommés 'ptr_xxxx', par +exemple un pointeur sur 'struct t_gui_buffer *' sera : '*ptr_buffer'. + +[[naming_convention_functions]] +==== Fonctions + +La convention pour les noms des fonctions est le même que celui des +<<naming_convention_variables,variables>>. + +Exemple : création d'une nouvelle fenêtre (de 'src/gui/gui-window.c') : + +[source,C] +---- +/* + * Creates a new window. + * + * Returns pointer to new window, NULL if error. + */ + +struct t_gui_window * +gui_window_new (struct t_gui_window *parent_window, struct t_gui_buffer *buffer, + int x, int y, int width, int height, + int width_pct, int height_pct) +{ + /* ... */ + + return new_window; +} +---- + +[[single_thread]] +=== Thread unique + +WeeChat a un seul thread. Cela signifie que chaque partie du code doit +s'exécuter très rapidement, et que les appels aux fonctions comme `sleep` sont +*strictement interdits* (cela est vrai pour le cœur de WeeChat mais aussi les +extensions et les scripts). + +Si pour une raison quelconque vous devez attendre un peu, utilisez `hook_timer` +avec un "callback". + +[[doubly_linked_lists]] +=== Listes doublement chaînées + +La plupart des listes chaînes WeeChat sont doublement chaînées : chaque nœud a +un pointeur vers le nœud précédent/suivant. + +Exemple : liste des tampons (de 'src/gui/gui-buffer.h') : + +[source,C] +---- +struct t_gui_buffer +{ + /* data */ + + /* ... */ + + struct t_gui_buffer *prev_buffer; /* link to previous buffer */ + struct t_gui_buffer *next_buffer; /* link to next buffer */ +}; +---- + +Et les deux pointeurs vers la tête et la fin de liste : + +[source,C] +---- +struct t_gui_buffer *gui_buffers = NULL; /* first buffer */ +struct t_gui_buffer *last_gui_buffer = NULL; /* last buffer */ +---- + +[[color_codes_in_strings]] +=== Codes couleur dans les chaînes + +WeeChat utilise ses propres codes couleur dans les chaînes pour afficher les +attributs (gras, souligné, ...) et les couleurs à l'écran. + +Tous les attributs/couleurs sont préfixés par un caractère dans la chaîne, qui +peuvent être : + +* '0x19' : code couleur (suivi par un/des code(s) couleur) +* '0x1A' : activer un attribut (suivi par un attribut sur un caractère) +* '0x1B' : supprimer un attribut (suivi par un attribut sur un caractère) +* '0x1C' : réinitialiser (rien après) + +Les attributs autorisés sont (un ou plusieurs caractères) : + +* `*` : gras +* `!` : vidéo inverse +* `/` : italique +* `_` : souligné +* `|` : garder les attributs + +Les couleurs possibles sont : + +* couleur standard : attributs facultatifs + nombre sur 2 digits +* couleur étendue : `@` + attributs facultatifs + nombre sur 5 digits + +Dans le tableau qui suit, les conventions suivantes sont utilisées : + +* `STD` : couleur standard (2 digits) +* `(A)STD` : couleur standard avec des attributs facultatifs + (attributs + 2 digits) +* `EXT` : couleur étendue (`@` + 5 digits) +* `(A)EXT` : couleur étendue avec des attributs facultatifs + (`@` + attributs + 5 digits) +* `ATTR` : un caractère d'attribut (`*`, `!`, `/`, `_` ou `|`) + +Toutes les combinaisons sont résumées dans ce tableau : + +[width="100%",cols="4,2,2,8",options="header"] +|=== +| Code | Exemple | Aires | Description +| hex[19] + STD | hex[19]`01` | chat + barres | Définir les attributs et la couleur en utilisant une option, voir le tableau ci-dessous +| hex[19] + EXT | hex[19]`@00001` | chat | Définir une couleur avec la paire ncurses (utilisé seulement sur le tampon `/color`) +| hex[19] + "F" + (A)STD | hex[19]`F*05` | chat + barres | Définir la couleur de texte (couleur WeeChat) +| hex[19] + "F" + (A)EXT | hex[19]`F@00214` | chat + barres | Définir la couleur de texte (couleur étendue) +| hex[19] + "B" + STD | hex[19]`B05` | chat + barres | Définir la couleur de fond (couleur WeeChat) +| hex[19] + "B" + EXT | hex[19]`B@00124` | chat + barres | Définir le couleur de fond (couleur étendue) +| hex[19] + "*" + (A)STD | hex[19]`*05` | chat + barres | Définir la couleur de texte (couleur WeeChat) +| hex[19] + "*" + (A)EXT | hex[19]`*@00214` | chat + barres | Définir la couleur de texte (couleur étendue) +| hex[19] + "*" + (A)STD + "," + STD | hex[19]`*08,05` | chat + barres | Définir la couleur de texte/fond (couleurs WeeChat) +| hex[19] + "*" + (A)STD + "," + EXT | hex[19]`*01,@00214` | chat + barres | Définir la couleur de texte (couleur WeeChat) et de fond (couleur étendue) +| hex[19] + "*" + (A)EXT + "," + STD | hex[19]`*@00214,05` | chat + barres | Définir la couleur de texte (couleur étendue) et de fond (couleur WeeChat) +| hex[19] + "*" + (A)EXT + "," + EXT | hex[19]`*@00214,@00017` | chat + barres | Définir la couleur de texte/fond (couleurs étendues) +| hex[19] + "b" + "F" | hex[19]`bF` | barres | Définir la couleur de texte de la barre +| hex[19] + "b" + "D" | hex[19]`bD` | barres | Définir la couleur du délimiteur de la barre +| hex[19] + "b" + "B" | hex[19]`bB` | barres | Définir la couleur de fond de la barre +| hex[19] + "b" + "_" | hex[19]`b_` | barre input | Caractère de démarrage dans l'entrée (utilisé seulement dans l'objet "input_text") +| hex[19] + "b" + "-" | hex[19]`b-` | barre input | Caractère de démarrage caché dans l'entrée (utilisé seulement dans l'objet "input_text") +| hex[19] + "b" + "#" | hex[19]`b#` | barre input | Caractère de déplacement du curseur (utilisé seulement dans l'objet "input_text") +| hex[19] + "b" + "i" | hex[19]`bi` | barres | Début d'objet +| hex[19] + "b" + "l" (lower L) | hex[19]`bl` | barres | Ligne de démarrage d'objet +| hex[19] + "E" | hex[19]`E` | chat + barres | Texte mis en valeur _(WeeChat ≥ 0.4.2)_ +| hex[19] + hex[1C] | hex[19]hex[1C] | chat + barres | Réinitialiser la couleur (garder les attributs) +| hex[1A] + ATTR | hex[1A]`*` | chat + barres | Activer un attribut +| hex[1B] + ATTR | hex[1B]`*` | chat + barres | Supprimer un attribut +| hex[1C] | hex[1C] | chat + barres | Réinitialiser les attributs et la couleur +|=== + +Les codes couleur utilisant des options (voir 't_gui_color_enum', dans le +fichier 'src/gui/gui-color.h') : + +[width="70%",cols="^1m,10",options="header"] +|=== +| Code | Option +| 00 | weechat.color.separator +| 01 | weechat.color.chat +| 02 | weechat.color.chat_time +| 03 | weechat.color.chat_time_delimiters +| 04 | weechat.color.chat_prefix_error +| 05 | weechat.color.chat_prefix_network +| 06 | weechat.color.chat_prefix_action +| 07 | weechat.color.chat_prefix_join +| 08 | weechat.color.chat_prefix_quit +| 09 | weechat.color.chat_prefix_more +| 10 | weechat.color.chat_prefix_suffix +| 11 | weechat.color.chat_buffer +| 12 | weechat.color.chat_server +| 13 | weechat.color.chat_channel +| 14 | weechat.color.chat_nick +| 15 | weechat.color.chat_nick_self +| 16 | weechat.color.chat_nick_other +| 17 | _(n'est plus utilisé depuis WeeChat 0.3.4)_ +| 18 | _(n'est plus utilisé depuis WeeChat 0.3.4)_ +| 19 | _(n'est plus utilisé depuis WeeChat 0.3.4)_ +| 20 | _(n'est plus utilisé depuis WeeChat 0.3.4)_ +| 21 | _(n'est plus utilisé depuis WeeChat 0.3.4)_ +| 22 | _(n'est plus utilisé depuis WeeChat 0.3.4)_ +| 23 | _(n'est plus utilisé depuis WeeChat 0.3.4)_ +| 24 | _(n'est plus utilisé depuis WeeChat 0.3.4)_ +| 25 | _(n'est plus utilisé depuis WeeChat 0.3.4)_ +| 26 | _(n'est plus utilisé depuis WeeChat 0.3.4)_ +| 27 | weechat.color.chat_host +| 28 | weechat.color.chat_delimiters +| 29 | weechat.color.chat_highlight +| 30 | weechat.color.chat_read_marker +| 31 | weechat.color.chat_text_found +| 32 | weechat.color.chat_value +| 33 | weechat.color.chat_prefix_buffer +| 34 | weechat.color.chat_tags _(WeeChat ≥ 0.3.6)_ +| 35 | weechat.color.chat_inactive_window _(WeeChat ≥ 0.3.6)_ +| 36 | weechat.color.chat_inactive_buffer _(WeeChat ≥ 0.3.6)_ +| 37 | weechat.color.chat_prefix_buffer_inactive_buffer _(WeeChat ≥ 0.3.6)_ +| 38 | weechat.color.chat_nick_offline _(WeeChat ≥ 0.3.9)_ +| 39 | weechat.color.chat_nick_offline_highlight _(WeeChat ≥ 0.3.9)_ +| 40 | weechat.color.chat_nick_prefix _(WeeChat ≥ 0.4.1)_ +| 41 | weechat.color.chat_nick_suffix _(WeeChat ≥ 0.4.1)_ +| 42 | weechat.color.emphasis _(WeeChat ≥ 0.4.2)_ +| 43 | weechat.color.chat_day_change _(WeeChat ≥ 0.4.2)_ +|=== + +Les couleurs WeeChat sont : + +[width="70%",cols="^1m,6",options="header"] +|=== +| Code | Couleur +| 00 | Défaut (couleur de texte/fond du terminal) +| 01 | Noir +| 02 | Gris foncé +| 03 | Rouge foncé +| 04 | Rouge clair +| 05 | Vert foncé +| 06 | Vert clair +| 07 | Marron +| 08 | Jaune +| 09 | Bleu foncé +| 10 | Bleu clair +| 11 | Magenta foncé +| 12 | Magenta clair +| 13 | Cyan foncé +| 14 | Cyan clair +| 15 | Gris +| 16 | Blanc +|=== + +Exemples de codes couleur : + +[width="70%",cols="1,2",options="header"] +|=== +| Code | Description +| hex[19]`01` | Couleur de l'option "01" (texte de discussion) +| hex[19]`*08,03` | Jaune sur rouge +| hex[19]`*@00214` | Orange (couleur étendue 214) +| hex[19]`*@*_00214,@00017` | Orange (214) gras souligné sur bleu foncé (17) +| hex[1A]`_` | Activer le souligné +| hex[1B]`_` | Supprimer le souligné +| hex[1C] | Réinitialiser les attributs et la couleur +|=== + +[[plugin_internals]] +== Intérieur des extensions + +Le fichier 'src/plugins/weechat-plugin.h' définit et exporte toutes les +fonctions disponibles dans l'API. + +Une structure appelée 't_weechat_plugin' est utilisée pour stocker les +informations sur l'extension (nom de fichier, nom, auteur, description, ...) et +toutes les fonctions de l'API, sous forme de pointeurs vers les fonctions +WeeChat. + +Et puis des macros sont utilisées pour appeler ces fonctions. + +Par exemple, la fonction 'hook_timer' est définie dans la structure +'t_weechat_plugin' comme ceci : + +[source,C] +---- +struct t_hook *(*hook_timer) (struct t_weechat_plugin *plugin, + long interval, + int align_second, + int max_calls, + int (*callback)(void *data, + int remaining_calls), + void *callback_data); +---- + +Et la macro utilisée pour appeler cette fonction est : + +[source,C] +---- +#define weechat_hook_timer(__interval, __align_second, __max_calls, \ + __callback, __data) \ + weechat_plugin->hook_timer(weechat_plugin, __interval, \ + __align_second, __max_calls, \ + __callback, __data) +---- + +Donc dans une extension, l'appel à cette fonction sera par exemple : + +[source,C] +---- +server->hook_timer_sasl = weechat_hook_timer (timeout * 1000, + 0, 1, + &irc_server_timer_sasl_cb, + server); +---- + +[[contribute]] +== Contribuer à WeeChat + +[[git_repository]] +=== Dépôt Git + +Le dépôt Git est à cette URL : http://git.savannah.gnu.org/gitweb/?p=weechat.git + +Tout patch pour un bug ou une nouvelle fonctionnalité doit être effectué sur la +branche master, le format préféré étant un patch fait avec `git diff` ou +`git format-patch`, envoyé par e-mail. + +Le format du message de commit est le suivant : + +---- +component: fix a problem (bug #12345) +---- + +Où 'component' est : + +* pour le cœur WeeChat : 'core' (les fichiers dans le répertoire 'src/', sauf + 'doc' et 'plugins') +* fichiers de documentation : 'doc' (fichiers dans le répertoire 'doc/') +* nom d'une extension : 'irc', 'python', 'relay', ... (fichiers dans le + répertoire 'src/plugins/') + +Quelques règles à suivre : + +* utilisez seulement l'anglais +* utilisez des verbes à l'infinitif +* si le commit est relatif au tracker (bug, task, patch), écrivez-le entre + parenthèses après le message (format: bug #12345, task #12345, patch #12345) + +Exemples de messages de commit : + +---- +core: add callback "nickcmp" for nick comparison in buffers +irc: fix freeze when reading on socket with SSL enabled (bug #35097) +ruby: add detection of ruby version 1.9.3 in cmake +python: fix crash when unloading a script without pointer to interpreter +core: update Japanese translations (patch #7783) +---- + +[[translations]] +=== Traductions + +[[gettext]] +==== Gettext + +Les fichiers gettext sont dans le répertoire 'po/'. + +Si vous souhaitez initialiser une nouvelle langue, utilisez la commande +`msginit`. Par exemple pour créer un fichier vide pour le néerlandais : + +---- +$ cd po +$ msginit -i weechat.pot -l nl_NL -o nl.po +---- + +La langue de base pour WeeChat est l'anglais, donc vous devez évidemment +comprendre parfaitement l'anglais pour traduire vers votre langue. + +Une fois terminé, vous *devez* vérifier votre fichier avec le script +'msgcheck.py' (https://github.com/flashcode/msgcheck) : + +---- +$ msgcheck.py xx.po +---- + +[[build_autogen_files]] +===== Construire les fichier auto-générés + +Les fichiers dans le répertoire 'doc/XX/autogen/' sont automatiquement générés +par le script 'doc/docgen.py'. + +Copiez ce script python dans votre répertoire python (par exemple +'~/.weechat/python'). +Vous pouvez alors charger le script dans votre WeeChat, et configurer le chemin +vers votre répertoire '/doc' : + +---- +/python load docgen.py +/set plugins.var.python.docgen.path "~/src/weechat/doc" +---- + +Créez alors cet alias pour construire les fichiers : + +---- +/alias doc /perl unload; /python unload; /ruby unload; /lua unload; /tcl unload; /guile unload; /python load docgen.py; /wait 1ms /docgen +---- + +Et utilisez la commande `/doc` pour construire tous les fichiers, pour toutes +les langues. + +[IMPORTANT] +En utilisant la commande `/doc`, assurez-vous que toutes les extensions (irc, +charset, ...) sont chargées, car les fichiers sont construits en utilisant les +données actuellement en mémoire. + +[[asciidoc]] +==== Asciidoc + +Les fichiers asciidoc donc dans le répertoire 'doc/XX/' où 'XX' est la langue +(en, fr, de, it, ...). + +Faites d'abord une copie du fichier asciidoc en anglais (dans le répertoire +'doc/en/'), puis travaillez dessus. + +Les traductions manquantes dans les fichiers sont indiquées par cette chaîne : + +---- +// TRANSLATION MISSING +---- + +Vous devez traduire tous le fichier sauf les liens et les mots-clés spéciaux +pour les notes, avertissements, ... Ces mots doivent être gardés tels quels : + +---- +[[link_name]] +<<link_name>> + +[NOTE] +[TIP] +[IMPORTANT] +[WARNING] +[CAUTION] +---- + +Lorsqu'il y a un nom après `<<link_name>>`, alors vous devez le traduire : + +---- +<<link_name,ce texte doit être traduit>> +---- diff --git a/doc/fr/weechat_plugin_api.fr.txt b/doc/fr/weechat_plugin_api.fr.txt index 3ae6af74f..a64729715 100644 --- a/doc/fr/weechat_plugin_api.fr.txt +++ b/doc/fr/weechat_plugin_api.fr.txt @@ -1,4 +1,4 @@ -= Référence API Extension WeeChat += Référence API extension WeeChat :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: fr diff --git a/doc/fr/weechat_quickstart.fr.txt b/doc/fr/weechat_quickstart.fr.txt index ad6861f96..e006d7f7d 100644 --- a/doc/fr/weechat_quickstart.fr.txt +++ b/doc/fr/weechat_quickstart.fr.txt @@ -1,4 +1,4 @@ -= Guide de Démarrage Rapide WeeChat += Guide de démarrage rapide WeeChat :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: fr diff --git a/doc/fr/weechat_scripting.fr.txt b/doc/fr/weechat_scripting.fr.txt index 0af064ddb..273452296 100644 --- a/doc/fr/weechat_scripting.fr.txt +++ b/doc/fr/weechat_scripting.fr.txt @@ -1,4 +1,4 @@ -= WeeChat Guide pour Scripts += Guide pour scripts WeeChat :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: fr diff --git a/doc/fr/weechat_user.fr.txt b/doc/fr/weechat_user.fr.txt index 0dcbd2640..8548feb9d 100644 --- a/doc/fr/weechat_user.fr.txt +++ b/doc/fr/weechat_user.fr.txt @@ -1,4 +1,4 @@ -= Guide Utilisateur WeeChat += Guide utilisateur WeeChat :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: fr diff --git a/doc/ja/weechat_dev.ja.txt b/doc/ja/weechat_dev.ja.txt index 09aa8d1f6..8302c6346 100644 --- a/doc/ja/weechat_dev.ja.txt +++ b/doc/ja/weechat_dev.ja.txt @@ -34,7 +34,7 @@ WeeChat の主要なリポジトリは 2 つあります: * コアリポジトリ: ソースコードと文書が含まれています、 URL は: http://git.savannah.gnu.org/gitweb/?p=weechat.git * スクリプト: weechat.org に投稿された '公式' スクリプト、 - URL は: http://git.savannah.gnu.org/gitweb/?p=weechat/scripts.git;a=summary + URL は: http://git.savannah.gnu.org/gitweb/?p=weechat/scripts.git このマニュアルはコアリポジトリの解説です。 @@ -46,7 +46,6 @@ WeeChat の主要なリポジトリは 2 つあります: [width="100%",cols="1v,5",options="header"] |=== | ディレクトリ | 説明 -| debian/ | Debian パッケージ用 | src/ | ソースコードのルートディレクトリ | core/ | コア関数: エントリポイント、内部構造体 | gui/ | バッファ、ウィンドウ、... を操作する関数 (全てのインターフェイスで使う) @@ -56,7 +55,7 @@ WeeChat の主要なリポジトリは 2 つあります: | aspell/ | aspell プラグイン | charset/ | charset プラグイン | fifo/ | fifo プラグイン (WeeChat にコマンドを送信する FIFO パイプ) -| irc/ | IRC プラグイン +| irc/ | IRC (Internet Relay Chat) プラグイン | logger/ | logger プラグイン (表示されたメッセージをファイルに書き込む) | relay/ | relay プラグイン (irc プロキシ + リモートインターフェイス用の中継) | rmodifier/ | rmodifier プラグイン (正規表現を含む修飾子文字列) @@ -70,7 +69,9 @@ WeeChat の主要なリポジトリは 2 つあります: | xfer/ | xfer (IRC DCC ファイル/チャット) | doc/ | 文書 | po/ | 翻訳ファイル (gettext) -| test/ | Weercd: WeeChat flood irc サーバ、Python 製 +// TRANSLATION MISSING +| test/ | Tools/files to test WeeChat (like Weercd, an IRC server) +| debian/ | Debian パッケージ用 |=== [[sources]] @@ -89,9 +90,10 @@ WeeChat "core" は以下のディレクトリに配置されています: | パス/ファイル名 | 説明 | core/ | コア関数: エントリポイント、内部構造体 | weechat.c | エントリポイント、コマンドラインオプション、main 関数、起動 -| wee-backtrace.c | セグメンテーション違反の後にバックトレースを表示 +// TRANSLATION MISSING +| wee-backtrace.c | Display a backtrace after a crash | wee-command.c | WeeChat コアコマンド -| wee-completion.c | コマンドラインの補完 +| wee-completion.c | デフォルト補完 | wee-config-file.c | 設定ファイル管理 | wee-config.c | WeeChat コアの設定オプション (weechat.conf ファイル) | wee-debug.c | デバッグ用関数 @@ -120,7 +122,7 @@ WeeChat "core" は以下のディレクトリに配置されています: | gui-buffer.c | バッファ | gui-chat.c | チャット関数 (メッセージの表示、...) | gui-color.c | 色関数 -| gui-completion.c | デフォルト補完 +| gui-completion.c | コマンドラインの補完 | gui-cursor.c | カーソルモード (カーソルを自由に移動) | gui-filter.c | フィルタ | gui-focus.c | フォーカスについての関数 (カーソルモードとマウス用) @@ -183,7 +185,8 @@ WeeChat "core" は以下のディレクトリに配置されています: | irc-bar-item.c | IRC バー要素 | irc-buffer.c | IRC バッファ | irc-channel.c | IRC チャンネル -| irc-color.c | 色関数 +// TRANSLATION MISSING +| irc-color.c | IRC colors | irc-command.c | IRC コマンド | irc-completion.c | IRC 補完 | irc-config.c | IRC 設定オプション (irc.conf ファイル) @@ -250,7 +253,8 @@ WeeChat "core" は以下のディレクトリに配置されています: | weechat-ruby-api.c | ruby スクリプト作成 API 関数 | script/ | スクリプトマネージャ | script.c | スクリプトマネージャの主要関数 -| script-action.c | スクリプトに対する操作 (ロード/アンロード、インストール/削除、ホールド、...) +// TRANSLATION MISSING +| script-action.c | Actions on scripts (load/unload, install/remove, ...) | script-buffer.c | スクリプトマネージャ用のバッファ | script-command.c | スクリプトマネージャ用のコマンド | script-completion.c | スクリプトマネージャ用の補完 @@ -267,7 +271,8 @@ WeeChat "core" は以下のディレクトリに配置されています: | xfer-command.c | xfer コマンド | xfer-completion.c | xfer 補完 | xfer-config.c | xfer 設定オプション (xfer.conf ファイル) -| xfer-dcc.c | xfer DCC ファイル +// TRANSLATION MISSING +| xfer-dcc.c | DCC file transfer | xfer-file.c | xfer のファイル関数 | xfer-info.c | xfer の情報/インフォリスト/hdata | xfer-network.c | xfer のネットワーク関数 @@ -297,7 +302,7 @@ WeeChat "core" は以下のディレクトリに配置されています: | weechat_dev.XX.txt | 開発者リファレンス (この文書) | weechat_relay_protocol.XX.txt | リレープロトコル | cmdline_options.XX.txt | コマンドラインオプション (man ページとユーザガイドに含まれるファイル) -| autogen/ | docgen.py スクリプトが自動生成するファイル (手作業による編集は*禁止* !) +| autogen/ | docgen.py スクリプトが自動生成するファイル | user/ | ユーザーガイド用の自動生成ファイル (手作業による編集は*禁止* !) | plugin_api/ | プラグイン API 用の自動生成ファイル (手作業による編集は*禁止* !) |=== @@ -320,8 +325,13 @@ WeeChat とプラグインの翻訳は gettext で行います、ファイルは * ソースコード内で使用する、コメント、変数名、... は必ず*英語* で記述してください (他の言語を使わないでください) -* 新しいファイルのヘッダにはコピーライトを入れてください。日付、名前、電子メールアドレス、ライセンスを明記し、その後に短い説明を入れてください。C - 言語の例: +// TRANSLATION MISSING +* Use a copyright header in each new source file with: +** short description of file (one line), +** date, +** name, +** e-mail, +** license. [source,C] ---- @@ -552,9 +562,10 @@ http://www.python.org/dev/peps/pep-0008/ を参照 [[naming_convention_files]] ==== ファイル -ファイル名に使えるのは文字とハイフンだけで、フォーマット: 'xxx-yyyyy.[ch]' -に従ってください。'xxx' はファイルを置くディレクトリおよび構成要素 -(略称も可)で、'yyyyy' はファイルの目的を表す名前です。 +// TRANSLATION MISSING +File names are composed by letters and hyphens, with format: 'xxx-yyyyy.[ch]', +where 'xxx' is directory/component (can be abbreviation) and 'yyyyy' a name for +the file. 主要ファイルにはディレクトリと同じ名前を付ける事ができます。例えば irc プラグインの 'irc.c' など。 @@ -631,7 +642,7 @@ struct t_gui_window *gui_current_window = NULL; /* current window */ [[naming_convention_functions]] ==== 関数 -関数に対する命名規則は<<naming_convention_variables,変数,>>と同じです。 +関数に対する命名規則は<<naming_convention_variables,変数>>と同じです。 例: 新しいウィンドウの作成 ('src/gui/gui-window.c' より): @@ -728,7 +739,7 @@ WeeChat は文字列中に独自の色コードを使うことで、属性 以下の表にすべての組み合わせをまとめています: -[width="100%",cols="3,2,1,5",options="header"] +[width="100%",cols="4,2,2,8",options="header"] |=== | コード | 例 | エリア | 説明 | hex[19] + STD | hex[19]`01` | chat + bars | オプションを使って属性と色を指定、色コードは以下の表を参照 @@ -751,7 +762,7 @@ WeeChat は文字列中に独自の色コードを使うことで、属性 | hex[19] + "b" + "#" | hex[19]`b#` | input bar | カーソル文字を移動 ("input_text" 要素のみで利用可) | hex[19] + "b" + "i" | hex[19]`bi` | bars | 要素を開始 | hex[19] + "b" + "l" (小文字の L) | hex[19]`bl` | bars | 行要素を開始 -| hex[19] + "E" | hex[19]`E` | chat + bars | テキストを強調 _(バージョン 0.4.2 の新機能)_ +| hex[19] + "E" | hex[19]`E` | chat + bars | テキストを強調 _(WeeChat ≥ 0.4.2)_ | hex[19] + hex[1C] | hex[19]hex[1C] | chat + bars | 色をリセット (属性は保存) | hex[1A] + ATTR | hex[1A]`*` | chat + bars | 属性を設定 | hex[1B] + ATTR | hex[1B]`*` | chat + bars | 属性を削除 @@ -760,7 +771,7 @@ WeeChat は文字列中に独自の色コードを使うことで、属性 オプションを使う色コード ('src/gui/gui-color.h' ファイルの 't_gui_color_enum' を参照): -[width="60%",cols="^1m,10",options="header"] +[width="70%",cols="^1m,10",options="header"] |=== | コード | オプション | 00 | weechat.color.separator @@ -797,21 +808,21 @@ WeeChat は文字列中に独自の色コードを使うことで、属性 | 31 | weechat.color.chat_text_found | 32 | weechat.color.chat_value | 33 | weechat.color.chat_prefix_buffer -| 34 | weechat.color.chat_tags _(バージョン 0.3.6 の新機能)_ -| 35 | weechat.color.chat_inactive_window _(バージョン 0.3.6 の新機能)_ -| 36 | weechat.color.chat_inactive_buffer _(バージョン 0.3.6 の新機能)_ -| 37 | weechat.color.chat_prefix_buffer_inactive_buffer _(バージョン 0.3.6 の新機能)_ -| 38 | weechat.color.chat_nick_offline _(バージョン 0.3.9 の新機能)_ -| 39 | weechat.color.chat_nick_offline_highlight _(バージョン 0.3.9 の新機能)_ -| 40 | weechat.color.chat_nick_prefix _(バージョン 0.4.1 の新機能)_ -| 41 | weechat.color.chat_nick_suffix _(バージョン 0.4.1 の新機能)_ -| 42 | weechat.color.emphasis _(バージョン 0.4.2 の新機能)_ -| 43 | weechat.color.chat_day_change _(バージョン 0.4.2 の新機能)_ +| 34 | weechat.color.chat_tags _(WeeChat ≥ 0.3.6)_ +| 35 | weechat.color.chat_inactive_window _(WeeChat ≥ 0.3.6)_ +| 36 | weechat.color.chat_inactive_buffer _(WeeChat ≥ 0.3.6)_ +| 37 | weechat.color.chat_prefix_buffer_inactive_buffer _(WeeChat ≥ 0.3.6)_ +| 38 | weechat.color.chat_nick_offline _(WeeChat ≥ 0.3.9)_ +| 39 | weechat.color.chat_nick_offline_highlight _(WeeChat ≥ 0.3.9)_ +| 40 | weechat.color.chat_nick_prefix _(WeeChat ≥ 0.4.1)_ +| 41 | weechat.color.chat_nick_suffix _(WeeChat ≥ 0.4.1)_ +| 42 | weechat.color.emphasis _(WeeChat ≥ 0.4.2)_ +| 43 | weechat.color.chat_day_change _(WeeChat ≥ 0.4.2)_ |=== WeeChat 色は: -[width="40%",cols="^1m,6",options="header"] +[width="70%",cols="^1m,6",options="header"] |=== | コード | 色 | 00 | デフォルト (ターミナルの文字色/背景色) @@ -835,7 +846,7 @@ WeeChat 色は: 色コードの例: -[width="50%",cols="1,2",options="header"] +[width="70%",cols="1,2",options="header"] |=== | コード | 説明 | hex[19]`01` | オプション "01" の色 (チャットテキスト) @@ -941,6 +952,7 @@ core: update Japanese translations (patch #7783) ==== Gettext Gettext ファイルは 'po/' + ディレクトリに入っています。新しい言語の翻訳を始める際は、コマンド `msginit` を使ってください。例えばオランダ語の空ファイルを作成するには: @@ -980,9 +992,10 @@ $ msgcheck.py xx.po コマンド `/doc` を使って全ての (全てのプログラミング言語について) 自動生成するファイルを作成してください。 +// TRANSLATION MISSING [IMPORTANT] -コマンド `/doc` を使う際に、すべての C 言語プラグイン (irc、charset、...) -がロードされていることを確認して下さい、これはメモリ上にあるオプションを使ってファイルを作成するためです。 +When using command `/doc`, be sure all C plugins (irc, charset, ...) are loaded, +because files are built using data currently in memory. [[asciidoc]] ==== Asciidoc |