Editor externo no Libre-Office

1

No Libre-Office, é possível editar uma seleção com um editor externo, como o Vim ou o Emacs?

Para escrever isso, eu chamo Vim do Qutebrowser, ou seja, marque a janela e pressione ctrl + e. Isso abre uma instância do Vim com o que estava na janela. Quando fecho o buffer, seu novo conteúdo é colocado na janela do Qutebrowser. Algo similar no Libre-Office ajudaria.

Eu pergunto, não porque eu quero usar o Libre-Office, mas porque eu tenho que colaborar com alguém que usa o Word.

PS. Idealmente, o itálico deve ser convertido em algo que possa ser editado em texto simples, como \ it {this}.

    
por Toothrot 24.11.2017 / 23:57

1 resposta

1

Use a seguinte macro Python . Vá para Ferramentas - > Personalizar para executá-lo ao pressionar um pressionamento de tecla.

import os
import tempfile
import uno

def edit_with_vim():
    doc = XSCRIPTCONTEXT.getDocument()
    oVC = doc.getCurrentController().getViewCursor()
    data = oVC.getString()
    encoded_data = data.encode("utf8")
    fileTemp = tempfile.NamedTemporaryFile(delete = False)
    fileTemp.write(encoded_data)
    fileTemp.close()
    os.system('gvim -c "set encoding=utf8" %s' % (fileTemp.name))

g_exportedScripts = edit_with_vim,

EDITAR :

Depois de navegar no link acima, consulte o link para um tutorial na personalização de um comando chave para executar a macro.

EDIT 2 :

Este código envia as alterações de volta ao Writer.

import io
import os
from subprocess import call
import sys
import tempfile
import uno

def edit_with_vim():
    doc = XSCRIPTCONTEXT.getDocument()
    oVC = doc.getCurrentController().getViewCursor()
    textstring = oVC.getString()
    text_bytes = textstring.encode("utf8")
    tf = tempfile.NamedTemporaryFile(delete = False)
    tempfilename = tf.name
    tf.write(text_bytes)
    tf.close()
    if os.name == 'nt':
        GVIM = "C:/Windows/gvim.bat"
    else:
        GVIM = "/usr/bin/gvim"
    call([
        GVIM, "-f",
        "-c", '"set encoding=utf8"',
        tempfilename])
    with io.open(tempfilename, 'r+b') as fh:
        fh.seek(0)
        edited_bytes = fh.read()
    os.unlink(tempfilename)
    edited_string = edited_bytes.decode("utf8")
    edited_string = edited_string.strip()
    oVC.setString(edited_string)

g_exportedScripts = edit_with_vim,
    
por 25.11.2017 / 17:37