GotoEnvFolder — переход в папку по переменной окружения

Здесь обсуждается всё, что касается макросов.
Shmuel
Posts: 6839
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Ликбез по Lua

Post by Shmuel »

Latest post of the previous page:

0x4 - видимо, бит, соответствующий RCtrl

band - сначала ищите в macroapi_manual.ru.chm, затем в luafar_manual.chm. Как вы ищете, там же есть закладка "поиск"?

Короче, band - это то, что в Си обозначается & - то-есть "bitwise AND".
Sikambr
Posts: 18
Joined: Fri 11 Apr, 2014 11:04

Re: Ликбез по Lua

Post by Sikambr »

Нашел только это:
macroapi_manual.ru.chm wrote: Функции band, bnot, bor, bxor, lshift и rshift (операции с битами)
- это глобальные ссылки на одноимённые функции из библиотеки bit64 (см. LuaFAR manual).
luafar_manual.chm wrote:band – gets multiple flags, returns a flag
...
Functions far.band, far.bnot, far.bor and far.bxor were removed. Instead, Lua BitOp library is included.
Но понять смыл band не получилось.
Shmuel
Posts: 6839
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Ликбез по Lua

Post by Shmuel »

Sikambr wrote:Но понять смыл band не получилось.
Ну, гугланите "bitwise and", неужели сложно?
http://ru.wikipedia.org/wiki/%D0%91%D0% ... 0%B8%D0%B8
Sikambr
Posts: 18
Joined: Fri 11 Apr, 2014 11:04

Re: Ликбез по Lua

Post by Sikambr »

Оказывается band разлагается на "b" и "and", а я его воспринимал как слово "band" - диапазон, полоса.
Чуть мозгом не потёк.
Shmuel
Posts: 6839
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Ликбез по Lua

Post by Shmuel »

Sikambr
Два замечания по вашему скрипту:
1. Замените везде nul на nil.
2. Не используйте библиотеку string, она не юникодная.
Как пример, вместо string.upper(partName) используйте partName:upper() - в этом случае вместо библиотеки string в LuaFAR используется библиотека unicode.utf8.
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Ликбез по Lua

Post by John Doe »

Sikambr wrote:Ну вот, с с Вашей помощью доделал скрипт[...]
* переменная ok не определена
* функция gotoFolder2 нигде не используется, вероятно это черновик какой-то пока не реализованной функции
* nil в условиях обрабатывается как false, поэтому вместо if a==nil/if a~=nil в lua чаще всего используют идиому if not a/if a
* if (i == nul) then i = 0 end скобки не нужны. И можно использовать идиому i = i or 0
Sikambr
Posts: 18
Joined: Fri 11 Apr, 2014 11:04

Re: GotoEnvFolder

Post by Sikambr »

Спасибо Shmuel и John Doe!
Ваши замечания исправил. Вот новая версия:

Вы замечания визуально определили или в каком-нибудь инструменте?
PS Уже 2-й день использую скрип, и не представляю, как я без него жил :)))
Shmuel
Posts: 6839
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: GotoEnvFolder

Post by Shmuel »

Sikambr wrote:Вы замечания визуально определили или в каком-нибудь инструменте?
Визуально. Так же визуально сейчас определяются 7 мест использования библиотеки string, что чревато, как уже было сказано.
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

GotoEnvFolder

Post by John Doe »

Есть у вас там одна громоздкая конструкция, которую можно заменить на
  1. local title = ("Environment Variables %s %q")
  2.  
  3.               :format(isAnyPos and "containing" or "starting with", userText)
Рекомендую поддерживать актуальную версию скрипта в первом посте темы, и код убирать в тег [codebox]
Sikambr wrote:PS Уже 2-й день использую скрип, и не представляю, как я без него жил :)))
Есть ещё плагин NamedFolders, тоже может работать с переменными окружения.
Sikambr
Posts: 18
Joined: Fri 11 Apr, 2014 11:04

Re: GotoEnvFolder

Post by Sikambr »

Shmuel wrote:Так же визуально сейчас определяются 7 мест использования библиотеки string, что чревато, как уже было сказано.
Спасибо, избавился от библиотеки string.
John Doe wrote:Есть у вас там одна громоздкая конструкция, которую можно заменить на...
Рекомендую поддерживать актуальную версию скрипта в первом посте темы, и код убирать в тег
Конструкцию заменил, первое сообщение обновил.
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: GotoEnvFolder

Post by John Doe »

Неплохо, теперь бы ещё название теме дать понятное но лаконичное (длина заголовка ограничена)

P.S.
Из того, что видно невооружённым глазом

Code: Select all

    if (index == nil or index == 0) then
        return nil
    end
Скобки не нужны, и nil обрабатывается как false. Поэтому if not index or index == 0 then
Возвращать nil нет смысла, поэтому просто return.
Хотя и return тут не нужен, можно остаток функции поместить в условие.

Code: Select all

if index and index ~= 0 then
...
end
Shmuel
Posts: 6839
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: GotoEnvFolder

Post by Shmuel »

index не может быть нулём, позиции в far.Menu отсчитываются от 1. Проверка на нуль - лишняя.
Sikambr
Posts: 18
Joined: Fri 11 Apr, 2014 11:04

Re: GotoEnvFolder - Переход в папку по имени переменной сред

Post by Sikambr »

Исправил.
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: GotoEnvFolder - Переход в папку по имени переменной сред

Post by John Doe »

key="/RCtrlShift(\\i|`)|RCtrl(\\i|`)/";
Имхо слишком много ИЛИ, не лучше ли key="/RCtrlShift[\\i`]|RCtrl[\\i`]/";
А то и key="/RCtrl(Shift)?[\\i`]/";
Sikambr
Posts: 18
Joined: Fri 11 Apr, 2014 11:04

Re: GotoEnvFolder — переход в папку по переменной окружения

Post by Sikambr »

Спасибо! Исправил.
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: GotoEnvFolder — переход в папку по переменной окружения

Post by John Doe »

userText = userText..key:sub(-1) -- отрежем "RCtrl"
Что если key будет не из одного символа? ("Space","BS","Multiply",...)
Post Reply

Return to “Обсуждение макросов”