Emacs заменяют skeleton-pair-insert-maybe вводом с клавиатуры

В этом примере есть несколько проблем.

  1. Вы должны ожидать вызова функции getTitle, вы ожидаете внутри функции, но вы должны также ожидать вызова функции.

  2. Вы должны окружить getTitle блоком try и catch и проверить внутри функции, есть ли возвращаемый заголовок (например, заголовок для Google равен нулю)

    const puppeteer = require("puppeteer");
    
    list = [
        "https://www.facebook.com/",
        "https://www.google.com/",
        "https://www.zocdoc.com/"
    ];
    
    const getTitle = async (p, url) => {
        try{
            await p.goto(url);
            const title = await p.title();
            if(title){
                return title
            }
        }
        catch(e) {
            throw(e)
            console.log(e)
        }
    };
    
    (async () => {
        const browser = await puppeteer.launch();
        const page = await browser.newPage();
        console.log(this)
        for (var url of list) {
            try{
                console.log(await  getTitle(page, url))
            }
            catch(e ){
                console.log('No title')
            }
        }
        await browser.close();
    })();
    
7
задан Luke Girvin 4 September 2011 в 01:33
поделиться

4 ответа

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

Обновление:

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

4
ответ дан 7 December 2019 в 07:50
поделиться

ParEdit звучит так, как будто он будет обрабатывать круглые скобки вашей потребности, с оговоркой, что он был разработан для Common Lisp и Scheme. Стив Йегге упоминает JDEE для разработки Java на emacs , но я не могу сказать об этом по собственному опыту, и я не смог найти никакой документации о структурированном редактировании.

0
ответ дан 7 December 2019 в 07:50
поделиться

To summarize what I did, I looked at this post, and took what I wanted out of it. What I ended up with was simpler, because I didn't have the additional requirements he had.

I used these two new definitions:

(defvar cheeso-skeleton-pair-alist
  '((?\) . ?\()
    (?\] . ?\[)
    (?" . ?")))


(defun cheeso-skeleton-pair-end (arg)
  "Skip the char if it is an ending, otherwise insert it."
  (interactive "*p")
  (let ((char last-command-char))
    (if (and (assq char cheeso-skeleton-pair-alist)
             (eq char (following-char)))
        (forward-char)
      (self-insert-command (prefix-numeric-value arg)))))

And then in my java-mode-hook, I bound the close-paren and close-bracket this way:

(local-set-key (kbd ")") 'cheeso-skeleton-pair-end)
(local-set-key (kbd "]") 'cheeso-skeleton-pair-end)
2
ответ дан 7 December 2019 в 07:50
поделиться

Я использую paredit-mode, который делает то же самое и многое другое.

1
ответ дан 7 December 2019 в 07:50
поделиться