You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Olivier Hallot cbe9601e59 Update git submodules 9 hours ago
.git-hooks git-hooks: show length of first line if it's too long 2 months ago
.github Add donation info for GitHub 1 week ago
UnoControls loplugin:sequenceloop in basic..cui 3 days ago
accessibility Fix typos 6 days ago
android android: support NDK 19 and above (20 as of this commit) 1 week ago
animations Improved loplugin:stringconstant (now that GCC 7 supports it): animations 2 weeks ago
apple_remote Fix typo 4 months ago
avmedia use more TOOLS_WARN_EXCEPTION 2 days ago
basctl use more TOOLS_WARN_EXCEPTION 2 days ago
basegfx Improved loplugin:stringconstant (now that GCC 7 supports it): basegfx 2 weeks ago
basic use more TOOLS_WARN_EXCEPTION 2 days ago
bean @deprecated should be with @Deprecated 2 months ago
bin remove some resolved ui suppressions 2 weeks ago
binaryurp Improved loplugin:stringconstant (now that GCC 7 supports it): binaryurp 2 weeks ago
bridges Fix typos 14 hours ago
canvas Fix typos 2 days ago
chart2 move RoadmapWizard to vcl 1 day ago
cli_ure Fix typos 2 days ago
codemaker New loplugin:data 2 months ago
comphelper tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
compilerplugins Revert "loplugin:unusedmethods" 19 hours ago
config_host tdf#125922 rename kde5 to kf5 + plasma5 4 weeks ago
configmgr Related tdf#90429: Don't erroneously pop unrelated path segments 2 days ago
connectivity tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
cppcanvas Fix typos 6 days ago
cppu cid#1448407 silence Resource leak 3 weeks ago
cppuhelper tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
cpputools fix wrong SET/QUERY flags passed to uno::Reference 3 months ago
cui tdf#126254 Help - About is black with Linux gen and gtk2 2 days ago
dbaccess Simplify Sequence uses in dbaccess/source/inc/apitools.hxx 18 hours ago
desktop tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
dictionaries @ 358cce8e62 Update git submodules 2 weeks ago
distro-configs tdf#125922 rename kde5 to kf5 + plasma5 4 weeks ago
drawinglayer tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
dtrans Fix typos 2 days ago
editeng Use simplified syntax for Sequence 1 day ago
embeddedobj tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
embedserv clang-tidy: Fix suspicious catches of WIP unhandled-self-assignment check 4 months ago
emfio Fix typos 6 days ago
eventattacher Improved loplugin:stringconstant (now that GCC 7 supports it): eventattacher 2 weeks ago
extensions Use mnemonic TWAIN state names; some simplification 18 hours ago
external upload libvisio 0.1.7 1 day ago
extras weld OGeneralPage and OGeneralPageWizard 2 weeks ago
filter Fix typos 1 day ago
forms tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
formula use more TOOLS_WARN_EXCEPTION 2 days ago
fpicker tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
framework Fix typo 15 hours ago
helpcompiler cid#1448495 Unchecked return value 1 month ago
helpcontent2 @ 6570689918 Update git submodules 7 hours ago
hwpfilter tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
i18nlangtag tdf#126282 add English (Sri Lanka) [en-LK] 0xA409 to language list 2 weeks ago
i18npool Use simplified syntax for Sequence 1 day ago
i18nutil tdf#42949 Fix IWYU warnings in: animations/ eventattacher/ i18nutil/ 2 months ago
icon-themes Colibre: Update gamma icons 6 days ago
idl cid#1448323 Unchecked return value 1 month ago
idlc Avoid -fsanitize=float-cast-overflow when converting to AstExprValue::u::byval 4 days ago
include Revert "loplugin:unusedmethods" 19 hours ago
instsetoo_native Fix typos 6 days ago
io tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
ios Fix typos 6 days ago
javaunohelper Fix typos 6 days ago
jurt Fix typos 6 days ago
jvmaccess tdf#42949 Fix IWYU warnings in jvmfwk/ & jvmaccess/ 3 months ago
jvmfwk Fix typos 6 days ago
l10ntools Fix typos 6 days ago
librelogo sanitize LibreLogo calls 2 months ago
libreofficekit LOK: move LOK callback-type-to-string helper to header 2 days ago
lingucomponent new loplugin:sequenceloop 2 days ago
linguistic tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
lotuswordpro Fix typos 6 days ago
m4 Fix typos 1 year ago
nlpsolver Fix typos 3 weeks ago
o3tl o3tl::make_unique -> std::make_unique in include/ & o3tl/ 5 months ago
odk Fix typos 2 days ago
offapi Fix typos 2 days ago
officecfg tdf#126908 Add lang to Tooltiplabel 2 days ago
onlineupdate Fix typos 6 days ago
oovbaapi Add ooo.vba.word.XDocument.SavePreviewPngAs() and implement 2 months ago
oox SmartArt: implement DiagramData::getString() 13 hours ago
opencl Improved loplugin:stringconstant (now that GCC 7 supports it): opencl 2 weeks ago
osx Rename Mac OS X to official name macOS in comments and documentation 8 months ago
package Fix typos 6 days ago
postprocess Simplify Sequence iterations in postprocess..sax 1 day ago
pyuno tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
qadevOOo Fix typos 6 days ago
readlicense_oo Related tdf#101957: glibc2 should be at least 2.14 3 days ago
registry Fix typos 6 days ago
remotebridges Improved loplugin:stringconstant (now that GCC 7 supports it): remotebridges 2 weeks ago
reportbuilder Fix typos 2 days ago
reportdesign tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
ridljar Fix typos 6 days ago
sal Avoid non-async-signal-safe functionality after fork 5 days ago
salhelper tdf#42949 Fix IWYU warnings in salhelper/ 7 months ago
sax Simplify Sequence iterations in postprocess..sax 1 day ago
sc Resolves: tdf#127002 keystrokes in edit engine passed on to dialog 9 hours ago
scaddins tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
sccomp loplugin:sequenceloop in scaddins..scripting 3 days ago
schema tdf#119228 Add storage and serialisation for the Resolved flag 3 weeks ago
scp2 Correct a fragmented sentence 3 weeks ago
scripting tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
sd Revert "loplugin:unusedmethods" 19 hours ago
sdext use more TOOLS_WARN_EXCEPTION 2 days ago
setup_native setup_native: document more obscure epmfile.pm input 2 weeks ago
sfx2 tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
shell loplugin:sequenceloop in shell..sot 3 days ago
slideshow use more TOOLS_WARN_EXCEPTION 2 days ago
smoketest Fix typos 6 days ago
solenv upload libvisio 0.1.7 1 day ago
soltools Fix typos 6 days ago
sot loplugin:sequenceloop in shell..sot 3 days ago
starmath Fix typos 2 days ago
stoc tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
store loplugin:sequentialassign in starmath..svl 4 months ago
svgio loplugin:sequenceloop in starmath..svl 3 days ago
svl Fix typos 2 days ago
svtools Revert "loplugin:unusedmethods" 19 hours ago
svx Fix typos 14 hours ago
sw Save a couple lines of code by using ::sw::UndoGuard 10 hours ago
swext Fix typos 6 days ago
sysui Fix typos 6 days ago
test loplugin:sequenceloop in test..toolkit 3 days ago
testtools tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
toolkit tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
tools Fix typos 6 days ago
translations @ 1416d2d6d4 Update git submodules 1 week ago
ucb tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
ucbhelper loplugin:sequenceloop in ucb..unotools 2 days ago
udkapi fix typo IndexOutOfBoundException 1 week ago
uitest Fix typos 1 week ago
unodevtools Fix typos 6 days ago
unoidl Improved loplugin:stringconstant (now that GCC 7 supports it): unoidl 2 weeks ago
unoil Use https instead of http 1 year ago
unotest Fix typos 6 days ago
unotools use more TOOLS_WARN_EXCEPTION 2 days ago
unoxml Simplify code in unoxml about initializations 21 hours ago
ure remove more rtl::OUString and OString prefixes 9 months ago
uui tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 17 hours ago
vbahelper loplugin:sequenceloop in unoxml..vcl 3 days ago
vcl Related: tdf#53029 escape backslash in username for 'domain\username' 9 hours ago
winaccessibility Fix typos 6 days ago
wizards Access2Base - access2base.py fix DebugPrint 1 day ago
writerfilter Fix typos 2 days ago
writerperfect Use simplified syntax for Sequence 1 day ago
xmerge Fix typos 2 days ago
xmlhelp tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 17 hours ago
xmloff tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor 1 day ago
xmlreader tdf#42949 Fix IWYU warnings in xmlreader/ 6 months ago
xmlscript new loplugin:sequenceloop 2 days ago
xmlsecurity use more TOOLS_WARN_EXCEPTION 2 days ago
.buckconfig Add build toolchain to upload LibreOffice API to Maven Central 3 years ago
.buckversion Add build toolchain to upload LibreOffice API to Maven Central 3 years ago
.clang-format Retrofit "KeepEmptyLinesAtTheStartOfBlocks: false" into .clang-format 1 year ago
.editorconfig We have some Objective-C source files, too 1 year ago
.gitattributes Ignore schema files for src tarball generation 3 years ago
.gitignore Add QtCreator-specific file to .gitignore 2 months ago
.gitmodules uset https:// instead of git:// for submodules 8 months ago
.gitreview git-review: Use the hostname instead of alias. 3 months ago
BUCK Add build toolchain to upload LibreOffice API to Maven Central 3 years ago
COPYING Licencing files 8 years ago
COPYING.LGPL Licencing files 8 years ago
COPYING.MPL Targetted text updates, with seasonable changes before l10n freeze. 5 years ago
Library_merged.mk gbuild: Remove MSVC 2013 legacy code 2 years ago
Makefile.fetch bundle external: qrcodegen 1 month ago
Makefile.gbuild updater: workaround cygwin python bug around command line arguments 2 years ago
Makefile.in Add vs2019-ide-integration 2 months ago
README.Solaris remove use of Archive::Zip 3 years ago
README.cross Rename Mac OS X to official name macOS in comments and documentation 8 months ago
README.md Fix MSVC version in README.md 3 days ago
Repository.mk tdf#125922 rename kde5 to kf5 + plasma5 4 weeks ago
RepositoryExternal.mk Switch mdds to 1.5.0 and liborcus to 0.15.0. 4 days ago
RepositoryFixes.mk Rename Mac OS X to official name macOS in comments and documentation 8 months ago
RepositoryModule_build.mk migrate to boost::gettext 2 years ago
RepositoryModule_host.mk Make font-based unit test depend on instdir fonts 1 month ago
TEMPLATE.SOURCECODE.HEADER Add fill-column: 100 to the Emacs mode line 2 years ago
autogen.sh autogen.sh: add --help description about the --with-distro switch 4 months ago
config.guess Update config.{guess,sub} 3 months ago
config.sub Update config.{guess,sub} 3 months ago
config_host.mk.in tdf#125922 rename kde5 to kf5 + plasma5 4 weeks ago
config_host_lang.mk.in gbuild: allow to react on change in configured langs 4 years ago
configure.ac Switch mdds to 1.5.0 and liborcus to 0.15.0. 4 days ago
download.lst upload libvisio 0.1.7 1 day ago
g ./g: don't exit early on ./g checkout -f 1 year ago
hardened_runtime.xcent macOS: enable hardened runtime when signing 2 months ago
install-sh Fix typos 6 days ago
leak-suppress.txt migrate to boost::gettext 2 years ago
lo.xcent No more need to generate lo.xcent from lo.xcent.in 8 months ago
logerrit Fix typo 5 months ago
sanitize-ubsan-blacklist file for ci-based ubsan build 3 years ago
setup.cfg pep8 -> pycodestyle 10 months ago

README.md

LibreOffice

Coverity Scan Build Status CII Best Practices

LibreOffice is an integrated office suite based on copyleft licenses and compatible with most document formats and standards. Libreoffice is backed by The Document Foundation, which represents a large independent community of enterprises, developers and other volunteers moved by the common goal of bringing to the market the best software for personal productivity. LibreOffice is open source, and free to download, use and distribute.

A quick overview of the LibreOffice code structure.

Overview

You can develop for LibreOffice in one of two ways, one recommended and one much less so. First the somewhat less recommended way: it is possible to use the SDK to develop an extension, for which you can read the API docs here and here. This re-uses the (extremely generic) UNO APIs that are also used by macro scripting in StarBasic.

The best way to add a generally useful feature to LibreOffice is to work on the code base however. Overall this way makes it easier to compile and build your code, it avoids any arbitrary limitations of our scripting APIs, and in general is far more simple and intuitive - if you are a reasonably able C++ programmer.

The build chain and runtime baselines

These are the current minimal operating system and compiler versions to run and compile LibreOffice, also used by the TDF builds:

  • Windows:
    • Runtime: Windows 7
    • Build: Cygwin + Visual Studio 2017 version 15.7
  • macOS:
    • Runtime: 10.10
    • Build: 10.13.2 + Xcode 9.3
  • Linux:
    • Runtime: RHEL 7 or CentOS 7
    • Build: either GCC 7.0.0; or Clang 5.0.2 with libstdc++ 7.3.0
  • iOS (only for LibreOfficeKit):
    • Runtime: 11.4 (only support for newer i devices == 64 bit)
    • Build: Xcode 9.3 and iPhone SDK 11.4

If you want to use Clang with the LibreOffice compiler plugins, the minimal version of Clang is 5.0.2. Since Xcode doesn’t provide the compiler plugin headers, you have to compile your own Clang to use them on macOS.

You can find the TDF configure switches in the distro-configs/ directory.

To setup your initial build environment on Windows and macOS, we provide the LibreOffice Development Environment (LODE) scripts.

For more information see the build instructions for your platform in the TDF wiki.

The important bits of code

Each module should have a README file inside it which has some degree of documentation for that module; patches are most welcome to improve those. We have those turned into a web page here:

https://docs.libreoffice.org/

However, there are two hundred modules, many of them of only peripheral interest for a specialist audience. So - where is the good stuff, the code that is most useful. Here is a quick overview of the most important ones:

Module Description
sal/ this provides a simple System Abstraction Layer
tools/ this provides basic internal types: ‘Rectangle’, ‘Color’ etc.
vcl/ this is the widget toolkit library and one rendering abstraction
framework UNO framework, responsible for building toolbars, menus, status bars, and the chrome around the document using widgets from VCL, and XML descriptions from /uiconfig/ files
sfx2/ legacy core framework used by Writer/Calc/Draw: document model / load/save / signals for actions etc.
svx/ drawing model related helper code, including much of Draw/Impress

Then applications

Module Description
desktop/ this is where the ‘main’ for the application lives, init / bootstrap. the name dates back to an ancient StarOffice that also drew a desktop
sw/ Writer
sc/ Calc
sd/ Draw / Impress

There are several other libraries that are helpful from a graphical perspective:

Module Description
basegfx/ algorithms and data-types for graphics as used in the canvas
canvas/ new (UNO) canvas rendering model with various backends
cppcanvas/ C++ helper classes for using the UNO canvas
drawinglayer/ View code to render drawable objects and break them down into primitives we can render more easily.

Rules for #include directives (C/C++)

Use the "..." form if and only if the included file is found next to the including file. Otherwise, use the <...> form. (For further details, see the mail Re: C[++]: Normalizing include syntax (“” vs <>).)

The UNO API include files should consistently use double quotes, for the benefit of external users of this API.

loplugin:includeform (compilerplugins/clang/includeform.cxx) enforces these rules.

Finding out more

Beyond this, you can read the README files, send us patches, ask on the mailing list libreoffice@lists.freedesktop.org (no subscription required) or poke people on IRC #libreoffice-dev on irc.freenode.net - we’re a friendly and generally helpful mob. We know the code can be hard to get into at first, and so there are no silly questions.