Skip to content
This repository has been archived by the owner on Oct 26, 2020. It is now read-only.

Commit

Permalink
Version 0.1 - readme, install files, and more
Browse files Browse the repository at this point in the history
  • Loading branch information
seanyeh committed Dec 22, 2014
1 parent 65780b1 commit 918ea95
Show file tree
Hide file tree
Showing 12 changed files with 621 additions and 4 deletions.
22 changes: 22 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
run_testing: testing
killall soffice.bin || echo "No libreoffice instance found"
lowriter "$$TESTING_ODT" --norestore &

testing: src/vibreoffice.vbs
./compile.sh "src/vibreoffice.vbs" "$$TESTING_XBA"

extension: clean src/vibreoffice.vbs
if [ -z "$$VIBREOFFICE_VERSION" ]; then \
echo "VIBREOFFICE_VERSION must be set"; \
else \
mkdir -p build; mkdir -p dist; \
cp -r extension/template build/template; \
./compile.sh "src/vibreoffice.vbs" "build/template/vibreoffice/vibreoffice.xba"; \
cd "build/template"; \
sed -i "s/%VIBREOFFICE_VERSION%/$$VIBREOFFICE_VERSION/g" description.xml; \
zip -r "../../dist/vibreoffice-$$VIBREOFFICE_VERSION.oxt" .; \
fi

.PHONY: clean
clean:
rm -rf build
56 changes: 52 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,30 @@
# vibreoffice
A Vi/Vim Mode Extension for Libreoffice and OpenOffice (Apache OpenOffice, OpenOffice.org)

### Installation
Coming soon.
vibreoffice is an extension for Libreoffice and OpenOffice that brings some of
your favorite key bindings from vi/vim to your favorite office suite. It is
obviously not meant to be feature-complete, but hopefully will be useful to
both vi/vim neophytes and experts alike.

### Installation/Usage

The easiest way to install is to download the
[latest extension file](https://raw.github.com/seanyeh/vibreoffice/master/dist/vibreoffice-0.1.0.oxt)
and open it with LibreOffice/OpenOffice.

To enable/disable vibreoffice, simply select Tools -> Add-Ons -> vibreoffice.

If you really want to, you can build the .oxt file yourself by running
```shell
# replace 0.0.0 with your desired version number
VIBREOFFICE_VERSION="0.0.0" make extension
```
This will simply build the extension file from the template files in
`extension/template`. These template files were auto-generated using
[Extension Compiler](https://wiki.openoffice.org/wiki/Extensions_Packager#Download).


### Features

vibreoffice currently supports:
- Insert (`i`, `I`, `a`, `A`, `o`, `O`), Visual (`v`), Normal modes
- Movement keys: `hjkl`, `w`, `W`, `b`, `B`, `e`, `$`, `^`, `{}`, `()`, `C-d`, `C-u`
Expand All @@ -14,7 +34,35 @@ vibreoffice currently supports:
- Deletion: `x`, `d`, `c`, `s`, `D`, `C`, `S`, `dd`, `cc`
- Plus movement and number modifiers: e.g. `5dw`, `c3j`, `2dfe`
- Delete a/inner block: e.g. `di(`, `da{`, `ci[`, `ci"`, `ca'`, `dit`
- More to come!

### Known differences/issues

If you are familiar with vi/vim, then vibreoffice should give very few
surprises. However, there are some differences, primarily due to word
processor-text editor differences or limitations of the LibreOffice API and/or
my patience.
- The concept of lines in a text editor is not quite analogous to that of a
word processor. I made my best effort to incorporate the line analogy while keeping
the spirit of word processing.
- Unlike vi/vim, movement keys will wrap to the next line
- Due to line wrapping, you may find your cursor move up/down a line for
commands that would otherwise leave you in the same position (such as `dd`)
- Currently, I am using LibreOffice's built-in word detection for word
movements (`w`, `W`, etc.) which differs slightly from vi's. For many
situations I find this satisfactory, but there are some funky cases involving
certain symbols. I may or may not change this in the future.
- vibreoffice does not have contextual awareness. What I mean by that is that
it does not keep track of which parentheses/braces match. Hence, you may have
unexpected behavior (using commands such as `di(`) if your document has
syntatically uneven parentheses/braces or nesting of such symbols. I don't
intend to fix this for now, as I don't believe this is a critical feature for
word processing.
- Using `d`, `c` (or any of their variants) will temporarily bring you into
Visual mode. This is intentional and should not have any noticeable effects.

vibreoffice is new, so it is bound to have plenty of bugs. Please let me know
if you run into anything!


### License
vibreoffice is released under the MIT License.
22 changes: 22 additions & 0 deletions compile.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/sh
#
# "Compile" BASIC macro file to LibreOffice-compatible xba file

# compile SRC DESTINATION
compile() {
# Escape XML &<>'"
src=`sed "s/\&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/'/\&apos;/g; s/\"/\&quot;/g" "$1"`

xbafile="$2"
name="`basename -s \".xba\" "$xbafile"`"

XBA_TEMPLATE='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">\n<script:module xmlns:script="http://openoffice.org/2000/script" script:name="%s" script:language="StarBasic">\n%s\n</script:module>'

printf "$XBA_TEMPLATE" "$name" "$src" > "$xbafile"
}

if [ "$#" -ne 2 ]; then
echo "Usage: $0 SOURCE DESTINATION"
else
compile "$1" "$2"
fi
Binary file added dist/vibreoffice-0.1.0.oxt
Binary file not shown.
25 changes: 25 additions & 0 deletions extension/template/AddonUI.xcu
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
oor:name="Addons" oor:package="org.openoffice.Office">
<node oor:name="AddonUI">

<node oor:name="AddonMenu">
<node oor:name="vibreoffice.N001" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.drawing.DrawingDocument,com.sun.star.presentation.PresentationDocument</value>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">vibreoffice - Toggle Vi Mode</value>
</prop>
<prop oor:name="URL" oor:type="xs:string">
<value>vnd.sun.star.script:vibreoffice.vibreoffice.Main?language=Basic&amp;location=application</value>
</prop>
<prop oor:name="Target" oor:type="xs:string">
<value>_self</value>
</prop>
</node>
</node>

</node>
</oor:component-data>
2 changes: 2 additions & 0 deletions extension/template/Descriptions/descr-en.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Vi Mode Extension for LibreOffice/OpenOffice

10 changes: 10 additions & 0 deletions extension/template/META-INF/manifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
<manifest:file-entry manifest:media-type="application/vnd.sun.star.help"
manifest:full-path="help" />
<manifest:file-entry manifest:media-type="application/vnd.sun.star.basic-library"
manifest:full-path="vibreoffice/" />
<manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
manifest:full-path="AddonUI.xcu" />
</manifest:manifest>
23 changes: 23 additions & 0 deletions extension/template/description.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Extension files were created by Extension Compiler - version 2.1.1 -->
<description xmlns="http://openoffice.org/extensions/description/2006"
xmlns:dep="http://openoffice.org/extensions/description/2006"
xmlns:xlink="http://www.w3.org/1999/xlink" >
<identifier value="vibreoffice" />
<version value="%VIBREOFFICE_VERSION%" />
<extension-description>
<src xlink:href="Descriptions/descr-en.txt" lang="en"/>
</extension-description>
<dependencies>
<OpenOffice.org-minimal-version value="3.1" dep:name="OpenOffice.org 3.1 minimum, or more recent" />
</dependencies>
<display-name>
<name lang="en">Vibreoffice - Vi-Mode Extension</name>
</display-name>
<publisher>
<name lang="en" xlink:href="http://www.seanyeh.com">Sean Yeh</name>
</publisher>
<release-notes>
<src lang="en" xlink:href="https://github.com/seanyeh/vibreoffice"/>
</release-notes>
</description>
35 changes: 35 additions & 0 deletions extension/template/help/en/vibreoffice/Pagexx.xhp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<helpdocument version="1.0">
<meta>
<topic id="vibreoffice.Pagexx">
<title id="tit" xml-lang="en">Vibreoffice - Vi-Mode Extension : Write the title here</title>
<filename>/vibreoffice/Pagexx.xhp</filename>
</topic>
</meta>
<body>
<paragraph role="heading" level="1" xml-lang="en" id="N0001">
Write your own help pages from here
</paragraph>
<paragraph role="paragraph" xml-lang="en" id="N0002">
Language en is the default value, you should have an english version of your help if your extension is internationally available.
</paragraph>
<paragraph role="paragraph" xml-lang="en" id="N0003">

</paragraph>
<paragraph role="paragraph" xml-lang="en" id="N0004">

</paragraph>
<paragraph role="paragraph" xml-lang="en" id="N0005">

</paragraph>
<paragraph role="paragraph" xml-lang="en" id="N0006">

</paragraph>
<paragraph role="paragraph" xml-lang="en" id="N0007">

</paragraph>
<paragraph role="paragraph" xml-lang="en" id="N0008">

</paragraph>
</body>
</helpdocument>
3 changes: 3 additions & 0 deletions extension/template/vibreoffice/dialog.xlb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd">
<library:library xmlns:library="http://openoffice.org/2000/library" library:name="vibreoffice" library:readonly="false" library:passwordprotected="false"/>
5 changes: 5 additions & 0 deletions extension/template/vibreoffice/script.xlb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd">
<library:library xmlns:library="http://openoffice.org/2000/library" library:name="vibreoffice" library:readonly="false" library:passwordprotected="false">
<library:element library:name="vibreoffice"/>
</library:library>
Loading

0 comments on commit 918ea95

Please sign in to comment.