Предлагая открывать / закрывать парены? - PullRequest
4 голосов
/ 13 декабря 2011

Кажется, что кто-то, должно быть, сделал работу, чтобы выяснить, как сделать вывод или предложить, где поставить закрывающие скобки.Я имею в виду, выдвигать на первый план соответствующие паренсы это здорово, но предлагать было бы еще лучше.Это определенная проблема?Если это так, как его имя (например, что я должен Google Scholar?).Если нет, то почему?Это заведомо невозможный / плохо поставленный вопрос?

Скажем, скажем, у меня есть какой-то некорректный рубиновый код:

foo.all.map { |i| i.bar }).uniq.compact.reject { |j| j.match /baz/i }

Обратите внимание, что я пропускаю начальные скобки.Проблема, о которой я говорю, заключается в следующем: «Как я могу предложить ввести парен в начале, когда наведу курсор на непарный парен?»

Если это не плохо поставленный вопрос, почемукто-то еще не сделал это?

1 Ответ

0 голосов
/ 14 декабря 2011

Можно следить за «сбалансированными» и «несбалансированными» паренами при наборе пользователем.Затем предложите парен, как только паренес выйдет из равновесия.

Например, набрав (something)), вы предложите открывать парен до s.Правильное размещение «исправить это» парен может быть сложной задачей.Например, если пользователь вводит something(else)), есть выбор: вставить открывающее скобку исправление it после g или в начале строки?

Отслеживание сбалансированных скобок будет относительно простым:

int parenCount = 0

event keyUp(char c){
    if(c is close-paren){
        parenCount--;
    }else if(c is open-paren){
        parenCount++;
    }
    if(parenCount < 0){
        // missing an open-paren somewhere
    }
}

// handle missing close-parens when user finished typing the string...
// for example if user types "myObject.something(" and hits enter

Может также потребоваться поиск ненужных паренов, как в a.doSomethingWith((aNumber))

...