Не могу назначить макросу горячую клавишу

Автор PVOzerski, 4 ноября 2017, 10:10

0 Пользователи и 1 гость просматривают эту тему.

PVOzerski

Обнаружил, что с некоторых пор (как минимум с 5.3.6, наблюдал в 5.3.7 и 5.4.2) в LO не получается назначить макросу горячую клавишу. Иду в "Настройка", выбираю вкладку "Клавиатура", пытаюсь в разделе "Категории" дойти до модуля с нужным мне макросом ("Макросы Libreoffice/" и т. д.) -- и офис попросту падает. Наблюдаю на 2 доступных компах с 32-битным линуксом (LMDE).


PVOzerski

Цитата: rami от  4 ноября 2017, 10:58
Возможно есть проблема с Java?
Не уверен. Я сейчас установил Java 8 от Oracle (1.8.0_151) - до этого была 7 тоже от Oracle (1.7.0_151) -- и еще установил openjdk 1.8.0_131. Какую виртуальную машину из трех ни выбираю -- падение одно и то же.


PVOzerski

Цитата: rami от  4 ноября 2017, 11:53
Офис и Java 32-битные?
Ну дык 64-битный офис на 32-битной системе и не поставится, и не запустится. Конечно 32-разрядный установлен. Джава openjdk ставилась из 32-битных репозиториев. В случае оракловской это не явно прописано - но бинарник-то из командной строки запускается, так что тоже 32-разрядная.


Кроме того, во-первых, ранее назначенные хоткеи на макросы продолжают работать, а еще есть такая вещь: на одном из компов я поставил параллельно последний Apache Openoffice - так там всё назначается без проблем.

mikekaganski

Проблема, скорее всего, именно в яве (http://antilibreoffice.blogspot.ru/2017/10/libreoffice-linux-java.html), которая использует (и всегда использовала) кривые хаки при работе со стеком, что приводит к обрушению на свежих ядрах Линукса (с тех пор, как там недавно усилили защиту стека). Попробуйте отключить использование явы, чтобы ЛО не пыталась её использовать при перечислении доступных макросов (именно это происходит при указанных Вами действиях - ЛО перебирает все установленные провайдеры макросов, и каждый опрашивает).
С уважением,
Михаил Каганский

PVOzerski

Михаил, большое спасибо: этот способ, действительно, помог! При всем том не могу не заметить, что это в общем-то баг. Причем подправить его разработчикам Либры вряд ли так уж сложно: всё, что надо - это при попытке назначить хоткей на макрос (да и вообще при обращении пользователя к назначению/редактированию горячих клавиш) временно автоматически отключать джаву.


Цитата: mikekaganski от  4 ноября 2017, 13:17
Проблема, скорее всего, именно в яве (http://antilibreoffice.blogspot.ru/2017/10/libreoffice-linux-java.html), которая использует (и всегда использовала) кривые хаки при работе со стеком, что приводит к обрушению на свежих ядрах Линукса (с тех пор, как там недавно усилили защиту стека). Попробуйте отключить использование явы, чтобы ЛО не пыталась её использовать при перечислении доступных макросов (именно это происходит при указанных Вами действиях - ЛО перебирает все установленные провайдеры макросов, и каждый опрашивает).

mikekaganski

... и что, теперь мне нужно объяснять, почему это заявление про "в общем-то баг" и "подправить его разработчикам Либры вряд ли так уж сложно: всё, что надо - это..." - глупость? Не буду в силу Закона Шапиро.
С уважением,
Михаил Каганский

PVOzerski

#8
Видите ли, Михаил: самоочевидная идея отвязать LO от джавы и переписать весь соответствующий функционал на плюсах на поверку по затратности времени и усилий гораздо хуже, чем мысль о маленьком хаке (впрочем, "маленькость" его, конечно, требует проверки -- спорить, не порывшись в коде, не стану). Проблема в том, что нынешняя ситуация реально создет трудности с подключением к свежустановленному офису постоянно востребованных макросов (у меня, например, так решена проблема корректировки текста, по ошибке вбитого не в той раскладке). Опять же, обобщать опасно - но подозреваю, что любителей пользоваться макросами не так уж мало.

А чтобы не превращать разговор в дурную перепалку, посоветую хотя бы в какой-нибудь FAQ эту историю с джавой и макросами внести - на чем и откланяюсь.

mikekaganski

Вам это самоочевидно? :-D

1. ЛО не завязана на яву. По крайней мере, не настолько, как Вам кажется. (От явы зависит (пока ещё) интегрированная БД base - надеюсь, в 6.0 это изменится - и некоторые мастера). А в рассматриваемом случае ЛО вообще не зависит от явы - и нечего "переписывать на плюсах", поскольку там и так всё "на плюсах", так что Ваше "самоочевидно" показывает непонимание, на базе которого Вы делаете смелые утверждения.

2. На самом деле там происходит вот что. ЛО позволяет использовать макросы на разных языках: StarBasic, Python, Java, ... - при наличии соответствующей машины. Интерпретатор StarBasic встроен в ЛО; Python либо идёт в комплекте, либо системная зависимость. А ява - только если она есть в системе и активироана пользователем. То есть выбрав пункт "Использовать виртуальную машину Java" в расширенных возможностях, пользователь говорит: "Я хочу использовать Java; в т.ч., если надо, хочу запускать макросы на Java". И вот теперь, когда пользователь говорит: "я хочу увидеть все доступные макросы, чтобы один из них повесить на клавишу" - ЛО начинает просматривать все подключённые машины макросов: "StarBasic есть? Выдай список своих макросов. Так, Python: твоя очередь. Следующий: JVM, каки ... УПС!"

И что Вы предлагаете в этой ситуации? :)
С уважением,
Михаил Каганский

PVOzerski

Ну что я предложить могу? Ну правда Ваша, в коде я не ковырялся. Общее соображение имею примерно такое: сделать поддержку java-макросов отдельной опцией, которую надо принудительно включать. Может, я и не прав, но думается, что макросы для LO, написанные на java, - штука не самая распространенная. Пожалуй, исключение могут представлять расширения вроде languagetool - но ведь их таким методом никто и не подключает.

economist

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...