| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Команда apropos - поиск имен функций и переменных

LISP. Команда apropos - поиск имен функций и переменных

Ответ
Поиск в этой теме
Непрочитано 24.03.2018, 17:39 #1
LISP. Команда apropos - поиск имен функций и переменных
rebus
 
Регистрация: 20.04.2014
Сообщений: 38

Команда apropos - небольшая оболочка над atoms-family, позволяет искать имена функций и констант по частичному совпадению с заданной строкой или по шаблону с подстановочными символами (подстановочные символы те же, что использует функция wcmatch).

Если заданная строка содержит символы подстановки (один из []#@.*?~,`-), производится поиск поиск по шаблону и с учетом регистра, в противном случае производится поиск указанной подстроки без учета регистра.

Код:
[Выделить все]
 ;;; -*- coding: cp1251-dos -*-

;;; Функция apropos
;;; Ищет имена символов в списке, выдаваемом
;;; функцией atoms-family.
;;; Если шаблон содержит символы подстановки,
;;; производит поиск с помощью функции wcmatch
;;; с учетом регистра, в противном случае
;;; ищет вхождение подстроки без учета регистра.
(defun apropos (pattern / i filter)
  ;; выбор фильтра
  (setq filter (if (wcmatch pattern "*[]#@.*?~[`,``-]*") ; если в шаблоне есть символы подстановки
                   (function (lambda (x) ; будем фильтровать с учетом регистра функцией wcmatch
                     (wcmatch (vl-symbol-name x)
                              pattern)))
                   (function (lambda (x) ; иначе будем искать вхождение подстроки без учета регистра
                     (vl-string-search (strcase pattern)
                                       (strcase (vl-symbol-name x)))))))
  ;; поиск в результате вызова (atoms-family 0)
  ;; можно использовать и (atoms-family 1), тогда не нужны (vl-symbol-name... и (strcase (vl-...
  ;; но этот вызов выдает список строк, преобразованных в верхний регистр
  ;; соответственно, теряется CamelCase имен символов
  (foreach i (vl-remove-if-not filter (atoms-family 0))
           (print i))
  (princ))

;;; Команда для вызова функции apropos
(defun c:apropos ()
  (apropos (getstring t)))


Код:
[Выделить все]
Команда: APROPOS single

vla-put-SingleDocumentMode
acGridLineStyleSingle
vlax-vbSingle
vla-get-SingleDocumentMode

Команда:
Код:
[Выделить все]
Команда: APROPOS vla-get-Ro*

vla-get-RowSpacing
vla-get-RoundDistance
vla-get-Rotation
vla-get-Rows

Команда:

Можно и просто функцией, кому как удобней:

Код:
[Выделить все]
Команда: (apropos "single")

vla-put-SingleDocumentMode
acGridLineStyleSingle
vlax-vbSingle
vla-get-SingleDocumentMode
Код:
[Выделить все]
Команда: (apropos "vla-get-Ro*")

vla-get-RowSpacing
vla-get-RoundDistance
vla-get-Rotation
vla-get-Rows

Вложения
Тип файла: lsp apropos.lsp (1.3 Кб, 20 просмотров)


Последний раз редактировалось rebus, 24.03.2018 в 19:22.
Просмотров: 4110
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Команда apropos - поиск имен функций и переменных

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Подготовка подосновы VVA Готовые программы 659 16.03.2024 13:48
Lisp. Поиск текстов по маске Vladimir_Sergeevich LISP 6 06.07.2015 11:20
lisp, AutoCAD Architecture 2008. Стандартная команда не воспринимает опцию в виде строки молодой человек LISP 17 15.05.2011 15:59
перестала работать команда lisp Nikolays LISP 11 27.01.2011 00:40
LISP: поиск колличества окружностей и суммы их радиусов.. yogeny LISP 8 24.05.2005 07:59