LINUX.ORG.RU

FocusWriter 1.9.0

 , , focuswriter, ,


1

1

Состоялся выпуск 1.9.0 FocusWriter — простого текстового процессора без отвлекающего внимание интерфейса, который становится доступен при перемещении «мыши» к краям экрана.

FocusWriter позволяет настраивать рабочую среду, создавая темы с настройками шрифта, цвета и фонового изображения. Он также предлагает оперативное обновление статистики, ежедневные цели, возможность открывать несколько документов, проверку орфографии и многое другое.

При открытии программы ваша текущая работа автоматически загрузится и откроется на том месте, где вы остановились, чтобы вы могли сразу же вернуться к ней.

Поддерживаются форматы OpenDocument, XML, Office Open XML, Rich Text Format и TXT.

Проект написан на языке C++ с использованием фреймворка Qt 6, и распространяется по лицензии GPL 3.

Список изменений:

  • добавлены горячие клавиши заголовков;
  • сброс формата заголовков при нажатии клавиши Enter;
  • использование KDSingleApplication вместо QtSingleApplication;
  • обновлены локализации;
  • исправлено воспроизведение звуковых эффектов для «умных» кавычек.

>>> Подробности на GitHub

★★★★★

Проверено: CrX ()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от Somebody

«Писал», или таки «написал»?? ;))

Написал. Парсер для русского языка успешно работал. Просто начинал не я и результат моей работы тоже был не самоцелью, а ступенькой для чьего-то ещё результата. Поэтому «писал».

monk ★★★★★
()
Ответ на: комментарий от CrX

Мне для новостей очень сгодилось бы. Чтобы в описании события можно было сразу увидеть что с чем связано, а в идеале ещё и свернуть причастные обороты.

monk ★★★★★
()
Ответ на: комментарий от Somebody

А в тех редчайших текстах, где она есть, трудно (а может, и попросту невозможно) её выявить программно…

Синтаксически вполне выявляется. Когда читаешь «Начисление амортизации по амортизируемому имуществу в виде капитальных вложений в объекты арендованных основных средств, которое в соответствии с настоящей главой подлежит амортизации и амортизация по которому начисляется нелинейным методом в соответствии со статьей 259 настоящего Кодекса, начинается у арендодателя с 1-го числа месяца, следующего за месяцем, в котором это имущество было введено в эксплуатацию, у арендатора - с 1-го числа месяца, следующего за месяцем, в котором это имущество было введено в эксплуатацию.», то иногда хочется видеть его в виде

Начисление амортизации по амортизируемому имуществу \
в виде капитальных вложений в объекты арендованных основных средств,
  которое в соответствии с настоящей главой подлежит амортизации и амортизация по которому \
  начисляется нелинейным методом 
    в соответствии со статьей 259 настоящего Кодекса,
  начинается у арендодателя с 1-го числа месяца, следующего за месяцем, 
    в котором это имущество было введено в эксплуатацию, 
  у арендатора - с 1-го числа месяца, 
    следующего за месяцем, 
      в котором это имущество было введено в эксплуатацию.

Выделение служебных слов и объектов также было бы удобно.

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от Somebody

Так для языков программирования же решают. Хотя такая же специфическая.

А именно в редакторе часто надо именно посмотреть, что в длинной фразе не довёл до состояния «кто на ком стоял», а в художественном произведении, что персонаж внезапно не сменил имя. Или при переводе, когда через десяток страниц внезапно выясняется, что имя используется в игре слов и надо получить список ссылок на это имя.

И всякого рода документация и технические задания, там хоть при письме, хоть при чтении нужны ссылки на термины и структура утверждений.

monk ★★★★★
()
Ответ на: комментарий от monk

Вот, даже вручную неправильно с первого раза разобрал:

Начисление амортизации по амортизируемому имуществу \
в виде капитальных вложений в объекты арендованных основных средств,
  которое в соответствии с настоящей главой подлежит амортизации и амортизация по которому
    начисляется нелинейным методом 
      в соответствии со статьей 259 настоящего Кодекса,
  начинается 
    у арендодателя с 1-го числа месяца, следующего за месяцем, 
      в котором это имущество было введено в эксплуатацию, 
    у арендатора - с 1-го числа месяца, 
      следующего за месяцем, 
        в котором это имущество было введено в эксплуатацию.
monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 2)

На мой взгляд, участники форума зря в столь негативном ключе отзываются.

Кто-то сделал еще одну программу и выложил код в открытый доступ. Я не вижу в этом минусов. Можно пользоваться, можно нет.

vsnb
()
Последнее исправление: vsnb (всего исправлений: 1)

Как же всё таки хорош gedit

basilic ★★★
()
Ответ на: комментарий от Somebody

Надо исходники на предмет ошибок проверить… ;))

Вот ты смеёшься, а периодически, когда сложные алгоритмы написаны на естественном языке (а это половина налогового кодекса и почти все стандарты бухгалтерского учёта), а надо их автоматизировать, так натыкаешься на непонятки, которые по логике надо сделать с одним результатам, а по буквальному прочтению с другим.

monk ★★★★★
()
Ответ на: комментарий от vsnb

А типо обсудить плюсы-минусы, возможные фичи и качество реализации генеральной идеи - это типо лишнее да? На форуме нужно писать: «Молодец, что-то сделал, как-то программировать умеешь!»?

lv ★★
()
Ответ на: комментарий от LINUX-ORG-RU

люди никак не связанные с программированием (и понятия не имеющие что это вообще такое) говорили глядя на экран типа «а не сложно в этой радуге читать? Глаза сломаешь» это было про подсветку синтаксиса. :)

Ну так это потом что погромист видит не текст, а абстракции за ним, и подсветка синтаксиса ему только помогает. Это как если бы писателю подсвечивали блоки текста, где по смыслу действие, где характер прописан, где мысли.

Про тех кто херачит книги напрямую в латехе я молчу, они свои книги больше программируют чем пишут :D

Ну я так делал и делаю, ничего сложного :)

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Да я не о том, те люди это зеркальный пример был, отражающий то как тут не поняли, нахрен фон, в равной степени как там не поняли, нахрен цвета. Подсветка кода тут не имеет никакого значения, это просто пример. Ай ладно :)

LINUX-ORG-RU ★★★★★
()

Мне он тормозным показался. Ну и излишне вычурным со своими обоями. Хотя, идея «пишущей машинки» в принципе полезная для написания человеко читаемого текста. Художки, например. Но там, как в программировании, надо б систему, а не только редактор. Смотрел разное, зашёл платный и яблочно-оконный scrivener, который отлично в ванне работает. И , оппа, режим «пишущей машинки на весь экран» там тоже есть. Ф11 и все. Но это именно IDE для писателя, а не редактор.

hagni
()

я не умею делать графические интерфейсы поэтому назову его «distraction-free»

bernd ★★★★★
()
Ответ на: комментарий от monk

Господь всемогущий! Язык человеческий не предназначен для подобных извращений! Тут даже дочитать до середины сложно, почему-то глаза закрываются и мысль улетает прочь. Вот, почему нельзя это было сразу на прологе написать? Пойду мемы с котами смотреть, я нуждаюсь в психологической реабилитации…

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

почему нельзя это было сразу на прологе написать?

Налоговый кодекс на Прологе? Месье знает толк в извращениях.

monk ★★★★★
()
Ответ на: комментарий от monk

Отчего нет? Там же вся суть в а) отображении чего-то во что-то и б) распространении ограничений. Самая тема для пролога.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

В прологе разве есть ограничения по подкритериям?

И ветвления утверждений в стиле: «А для Б = С, а для Д = Е» я не помню.

Самая тема для пролога.

Возьмётесь за перевод?

monk ★★★★★
()
Ответ на: комментарий от monk

Я не настоящий сварщик и собственно с прологом связывался только в рамках SICP, когда нужно было реализовать систему описания треугольников, когда задав две стороны нельзя было трогать третью, что весьма близко к «А для Б = С, а для Д = Е».

В любом случае, тут у нас есть некая машина состояний и правила их изменений/вычислений производных значений. Явно задача для языка программирования, а не естественного.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Явно задача для языка программирования, а не естественного.

Вот поэтому я и хочу текстовый редактор, который из естественного сконструирует язык программирования.

monk ★★★★★
()
Ответ на: комментарий от monk

Мне кажется, это невозможно без настоящего ИИ, но можно решить обратную задачу: создать ЯП + переводчик в естественный язык.

Я гугло транслейтом так пользуюсь когда не уверен, а не фигню ли я написал: пишешь фразу на целевом языке, переводишь на Русский. Если перевод устраивает, значит и исходник нормальный, а нет — переписываешь.

ugoday ★★★★★
()
Ответ на: комментарий от monk

Просто расставляешь скобки вокруг текста и дописываешь макросы пока не скомпилируется:

(define ("расчёт периода" "субъект")
  (if (арендатор? "субъект")
      "с 1-го числа месяца, 
      следующего за месяцем, 
      в котором это имущество было введено в эксплуатацию"
      "с 1-го числа месяца, следующего за месяцем, 
      в котором это имущество было введено в эксплуатацию"))

(define ("Начисление амортизации по амортизируемому имуществу"
	 "объекты арендованных основных средств"
	 "субъект")
  (let
      (("объекты"
	(filter #"в соответствии со статьей 259 настоящего Кодекса"
		"объекты арендованных основных средств"))
       ("начальный период" ("расчёт периода" "субъект")))
    ("капитальные вложения" "объекты" "начальный период"))) 
ugoday ★★★★★
()
Ответ на: комментарий от ugoday

дописываешь макросы пока не скомпилируется

Так макросы должны на соответствие реальному миру проверять…

Но, в целом, да: хоть отступами, хоть скобками, нужна структура. Теоретически эту структуру может дать нормальный текстовый редактор.

А если без структуры, так, думаешь, это легче прочитать:

(define («расчёт периода» «субъект») (if (арендатор? «субъект») «с 1-го числа месяца, следующего за месяцем, в котором это имущество было введено в эксплуатацию» «с 1-го числа месяца, следующего за месяцем, в котором это имущество было введено в эксплуатацию»))

(define («Начисление амортизации по амортизируемому имуществу» «объекты арендованных основных средств» «субъект») (let ((«объекты» (filter #«в соответствии со статьей 259 настоящего Кодекса» «объекты арендованных основных средств»)) («начальный период» («расчёт периода» «субъект»))) («капитальные вложения» «объекты» «начальный период»)))

?

monk ★★★★★
()
Ответ на: комментарий от monk

Безусловно хорошее форматирование помогает понять структуру. К сожалению, плохое — мешает. В области языков программирования более-менее понятно что такое хорошо, а что — плохо. Для естественных языков я просто не представляю как это может быть сделано автоматически (не то чтоб я много про это думал, однако).

Если не автоматически же, то можно просто не писать вот такие страшные предложения. А если нужно словами описать функцию или алгоритм, то и использовать для этого специальный мини-язык. Это точно можно сделать, т.к. потом 1С и другие причастные всё равно по этому описанию код писать будут.

Так отчего бы не сократить работу, сделав кодовое представление с самого начала. Бонусом, вспоминая пролог, можно будет автоматически выводить разные утверждения о налогах и сборах, вдруг пригодится.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

использовать для этого специальный мини-язык

Так это он и есть. «Русский юридический» называется. Пример перевода:

русский: Я дарю вам этот апельсин.

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

Какой ещё язык придумать, чтобы он передавал не меньшую информацию, чем во втором случае, но понимался проще?

лиспо-юридический: (передаю я вам (на (все ((принадлежать мне) (включая права требования преимущества (другие интересы))) (пусть ((апельсин (имя собственности «апельсин»))) (включая апельсин (принадлежит апельсин кожура) (принадлежит апельсин мякоть) (принадлежит апельсин сок) (принадлежит апельсин семечки) (используя (права выжимать разрезать замораживать (иначе употреблять)) ((любого рода приспособления) (включая (существующие в настоящее время) (изобретенные позднее)) (без использования упомянутых приспособлений)))))))

Про передачу на лисп я уже перевести не смог. И «упомянутых» явно надо писать как-то не так…

По-моему, на языке программирования ещё страшнее.

monk ★★★★★
()
Ответ на: комментарий от Somebody

Ужас-лиспужас… :)))

Когда-то читал про экспертные системы. Вот там языки где-то так и выглядели. С одной стороны, однозначнее, нет проблемы, к чему прицепить (дее)причастный оборот. С другой стороны, человеку это прочитать ещё сложнее, чем юридический.

Я за юридический, но с поддержкой текстовым редактором отступов для подчинённых утверждений.

monk ★★★★★
()
Ответ на: комментарий от Somebody

Ужас тут — юридический язык. Всё остальное просто попытки смягчить последствия катастрофы.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Ужас тут — юридический язык.

А как ещё передать именно этот объём информации? Обычный язык позволяет настолько разнообразные трактовки почти любой фразы, что на этом основана масса софизмов и анекдотов.

Это как выражать претензии алгебраической записи, что в ней уравнение Шрёдингера громоздко записывается. Так без алгебраической записи (словами на любом языке) его записать, так чтобы можно было прочитать, вообще почти невозможно.

monk ★★★★★
()
Ответ на: комментарий от monk

Ну, нет же. Где скобки, там и определения. Значит можно создать взаимоно однозначное отображение из юридического в человеческий.

(define Я 
  (or (ФИО …) (ИНН …) (ЕГРЮЛ …))

(define (права объект)
  (map 
    (λ (дейтвие)
      (действие объект))
    (list выжимать разрезать замораживать употреблять …)))

(define (дарю что-то кому-то)
  (передаю кому-то что-то (права что-то)))

(define (перевод-с-человеческого)
  …)

(перевод-с-человеческого Я дарю апельсин)

Если уж юристы хотят говорить на нечитаемом языке, так давайте его не читать.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Так я это и попытался сделать. Портянка же.

И потеря информации. Вместо «права, требования, преимущества и другие интересы на собственность» остались только права. Содержимого нет.

И в случае апельсина это одни права, в случае экземпляра ядра Linux другие права, поэтому при передаче их всё равно надо конкретизировать.

На программистский переводится как-то так:

(define апельсин "апельсин")

(define собственность 
  (append '(апельсин) 
    (map (λ (компонент) (принадлежащее апельсин компонент))
         '("кожура" "мякоть" "сок" "семечки"))))

(define права (filter принадлежащие-мне 
  (map (по-отношению-к собственность) 
       '("права" "требования" "преимущества" "другие интересы"))))

(define список-употреблений '("выжимать" "разрезать" "замораживать"))

(define при-помощи 
  (combine '("любого рода приспособления")
     '("существующие в настоящее время" "изобретенные позднее")))

(assert (включают права 
  (используя 
    (append список-употреблений  (кроме "употреблять" список-употреблений))
    (append при-помощи (без при-помощи))

(assert (включают права
  ("передавать третьим лицам" собственность)))

(передаю вам права)
monk ★★★★★
()
Ответ на: комментарий от ugoday

Если уж юристы хотят говорить на нечитаемом языке, так давайте его не читать.

А как определить, подписываемый документ соответствует твоим желаниям или нет? Приходится читать. И юридический для этого лучше подходит, чем lisp (человеку приходится или постоянно прыгать вверх-вниз по тексту или держать в памяти значения всех переменных).

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от monk

А как определить, подписываемый документ соответствует твоим желаниям или нет?

Точно так же, как и определить делает программа нужное или нет. Мы не развиваем навык чтения ассемблерных простыней. Мы используем абстракции, типы и тесты. Вот assert это правильный, человеческий подход. Добить бы ещё библиотеку типовых утверждений и половина задачи «опредлить чего делает договор» решена.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

и половина задачи «опредлить чего делает договор» решена.

А как решить вторую половину: «что хочет человек, собирающийся подписать договор»?

monk ★★★★★
()
Ответ на: комментарий от ugoday

Точно так же, как и определить делает программа нужное или нет. Мы не развиваем навык чтения ассемблерных простыней. Мы используем абстракции, типы и тесты.

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

Например, нужный алгоритм «должна вернуть частное от двух переданных чисел в формате IEEE 754 double». Как докажешь, что программа делает нужное не читая ни исходники ни ассемблерный код?

monk ★★★★★
()
Ответ на: комментарий от monk

Методом внимательного взгляда, вестимо. Т.е. такая спецификация, которая устанавливает либо отношения (декларативное программирование), либо последовательность действий при проведении работ (императивщина). Как и в программировании у нас есть исходный текст и возможность совершать действия над ним: читать, компилировать (т.е. запускать проверки типов компилятором) и запускать (тесты). При этом два последних являются вспомогательными, позволяют сузить область чтения, заведомо исключить что-то. Например, возможна проверка, что право пользования мы передаём, а право владения — остаётся. И это сэкономит необходимость внимательно читать стостраничный документ. Но всё равно ж надо прочесть текст и понять его.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Например, возможна проверка, что право пользования мы передаём, а право владения — остаётся.

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

Тем более, что у юристов есть ещё «разъяснения», на основании судебной практики. Типа «животным для целей УК РФ 245 считать не то, что у биологов, а только высших позвоночных». Куда это в программу пихать.

monk ★★★★★
()
Ответ на: комментарий от monk

Возможно мы смотрим на дело несколько с разных сторон. Я просто увидел вашу простыню на юридическом и испытал мощнейшее отвращение. Это я не хочу видеть ни за какие коврижки. Может другие сильнее меня, но как по мне «читать юридические термины в виде программы» выглядит существенно меньшим злом.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Может другие сильнее меня, но как по мне «читать юридические термины в виде программы» выглядит существенно меньшим злом.

Возможно. Тут сложно объективно оценивать. Искажение от профессии неизбежно. А если взять того, кто не имеет опыта ни в чтении юридических текстов ни компьютерных программ, ему оба варианта будут ужасны.

monk ★★★★★
()
Ответ на: комментарий от monk

Искажение от профессии неизбежно

Да, 100%

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

Имея оба опыта, и как чтения, так и составления и написания текстов и того, и другого вида :), ужасным считаю именно юридический текст «в виде программы»...

Somebody ★★★★
()
Ответ на: комментарий от Somebody

Имея оба опыта, и как чтения, так и составления и написания текстов и того, и другого вида :), ужасным считаю именно юридический текст «в виде программы»…

Я, аналогично. Словами, в данном случае, явно компактнее. И быстрее осознаётся при чтении.

monk ★★★★★
()
Ответ на: комментарий от monk

Словами, в данном случае, явно компактнее. И быстрее осознаётся при чтении

Да, я думаю, что время уже давно «отшлифовало» этот «бриллиант», и не нужны этому «языку» какие-либо «доработки»...

Somebody ★★★★
()
Ответ на: комментарий от Somebody

Да, я думаю, что время уже давно «отшлифовало» этот «бриллиант», и не нужны этому «языку» какие-либо «доработки»…

Утверждение спорное. На момент изобретения алгебраической записи алгебре было пара тысячелетий. Но вряд ли надо двигаться в сторону языков программирования.

monk ★★★★★
()
Ответ на: комментарий от monk

Утверждение спорное

Не хочу спорить. Для меня очевидно..

Но вряд ли надо двигаться в сторону языков программирования.

Не, не надо. «Я так думаю!»... © :))

Somebody ★★★★
()
Ответ на: комментарий от Somebody

Не хочу спорить. Для меня очевидно..

Я всё-таки предполагаю, что будет у юристов как у математиков и физиков. Скорее всего, какие-то схемы с закорючками как диаграммы Фейнмана.

Но не очень скоро.

monk ★★★★★
()

Неразрывный пробел заменяем на обычный. Мы тоже зело умные… Ф топку.

Assador
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.