Как сохранить все функции, которые я ввел в LispBox/Slime?

Сам WebBrowser не предоставляет координаты щелчка мышью: вы фактически не щелкаете по клиентской области Control, а щелкаете по содержимому документа.

Вы можете использовать события HtmlDocument.Click или HtmlDocument.MouseDown для получения координат указателя мыши в инициализированных HtmlDocument [ 1118].

Примечание :
Объект HtmlElementEventArgs возвращает координаты мыши в обеих абсолютных координатах (всей области документа) в e. ClientMousePosition и относительно нажатой HtmlElement, в e.OffsetMousePosition .

Это может быть сложно, потому что вам нужно подписаться на событие Click, когда текущий HtmlDocument уже создан: вы не можете подписаться на событие объекта Document по умолчанию:
, т.е. подписка на событие в Form.Load с:

webBrowser1.Document.Click += (obj, evt) => { /*Do something */ };  

ничего не добьется. Событие никогда не будет инициировано: Document null, поэтому, конечно, это не ссылка на какой-либо текущий / активный HtmlDocument.

HtmlDocument готово, когда возникает событие WebBrowser.DocumentCompleted и для его ReadyState установлено значение WebBrowserReadyState.Complete .

Вы можете подписаться на событие Document.Click, когда документ полностью загружен, а затем удалить событие, прежде чем веб-браузер перейдет на новую страницу, создав новый документ.

Кроме того, событие DocumentCompleted может быть вызвано несколько раз для одной страницы HTML, поэтому вам следует убедиться, что вы не подписываетесь на одно и то же событие несколько раз:

[1137 ] Примечание :
A HtmlDocument может содержать более одного Frame/IFrame , и каждый Frame может иметь свой собственный HtmlDocument; IFrames наверняка есть по одному. Обратитесь к примечаниям в этом вопросе для получения дополнительной информации по этому вопросу:
Как получить значение HtmlElement внутри Frames / IFrames?

Пример:

[ 111]

6
задан mannicken 2 January 2009 в 18:36
поделиться

4 ответа

Я соглашаюсь, что лучший метод потока операций должен написать Ваш код в отдельном буфере и оценить в этом, а не ввести функции в repl.

Принятие Вас пошло repl путем, я предполагаю, C. Решением Martin сохранить журнал repl и вручную пройти его являются Ваши единственные опции.

При вводе функций и Вара в отдельный пакет Вы могли бы пройти символы в пакете, чтобы помочь Вам решить то, что Вы хотите сохранить.

Например, видеть все символы, созданные в пакете пользователя статьи:

(let ((p (find-package :cl-user)))
  (loop
     for s being the symbols in p
     when (eq p (symbol-package s))
     do (format t "~a~%" s)))
3
ответ дан 8 December 2019 в 13:50
поделиться

Я не получаю его. Вы вводите определения в REPL и ожидаете восстанавливать их позже? Просто сохраните исходный файл, как Вы были бы на любом другом языке. Используйте C-x 2 для разделения окна Emacs в два. Откройте исходный файл в одном из них C-x C-f foo.lisp. Используйте C-c C-k, C-c C-r и друзей (см. меню SLIME) для компиляции / оценивают регионы исходного кода в REPL.

5
ответ дан 8 December 2019 в 13:50
поделиться

Я искал что-то вроде этого в прошлом и не мог найти его. Вы являетесь лучшими от записи всех Ваших определений в отдельном буфере, и использование обширных функций оценки/компиляции СЛИЗИ (C-c C-k загружает весь файл, C-x C-e оценивает последнее выражение, C-c C-r оценивает регион, и т.д.), только непосредственно вводя в вещи REPL, которые Вы не хотите сохранять.

5
ответ дан 8 December 2019 в 13:50
поделиться

Гм, C-x o или C-x b получить к СЛИЗИ буфер REPL, затем C-x w или C-x C-s сохранить его в файл. Весь материал СЛИЗИ/CL является комментарием читателя; можно или записать взлом читателя для перезагрузки файла, рассматривающего подсказки как комментарии, или можно пройти файл сами для получения частей, которые Вы хотите сохранить.

4
ответ дан 8 December 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: