ЙажаСценарий / Говнокод #10546 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
ISQ.Widget.Query.keyUpHandler=function(c){
    var b=c||window.event;
    if(!ISQ.Widget.userActive){
	return
    }
    if(typeof(b.keyCode)!="unknown"&&ISQ.Widget.Query.ignoreKeyCodes[b.keyCode]){
	return false
    }
    if(ISQ.Cnf.limited&&ISQ.Widget.state!==ISQ.Widget.enumState.contactForm){
	return false
    }
    if(ISQ.Widget.state===ISQ.Widget.enumState.customLink){
	ISQ.Widget.state=ISQ.Widget.enumState.questions
    }
    ISQ.Widget.Query.clearQuestionTrail();
    var a=_query(false);
    if(ISQ.Widget.Query.lastQueryWritten!=a){
	ISQ.Widget.Query.analyzeQuery(a)
    }
    return false
};

По поводу уверенных программистов (явно задел на будущее, а вдруг добаят).

Запостил: wvxvw wvxvw, (Updated )

Комментарии (16) RSS

    • Ну, тут сложно сказать где его нету. Но именно эта функция заслужила быть здесь тем, что автор наивно полагал, что, возможно, в обозримом будущем в Яваскрипт добавят новый тип (их всего-то по пальцам одной руки пересчитать можно). А именно, смотрите на то, что в коде выделено красным цветом (если у вас ЖС подсветка включена).
      Ответить
  • Какими же ссаными простынями выглядят тонны кода без пробелов вокруг операторов сравнений, присваивания и математических операций.
    Ответить
    • (defun js-fix-spacing-line ()
        (interactive)
        (let ((current (char-after))
      	(next (char-after 1))
      	(old-point (point))
      	(difference 0))
          (labels
      	((incf-dif
      	  ()
      	  (when (< 0 (+ difference (- old-point (point))))
      	    (incf difference))
      	  (message "insterting")
      	  (insert " "))
      	 (js-face
      	  (&optional (pos (point)))
      	  (get-char-property pos 'face)))
            (beginning-of-line)
            (while (not (eolp))
      	(setf current (char-after (1- (point)))
      	      next (char-after))
      	(cond
      	 ((or (char-equal current ?\ )
      	      (char-equal current ?\t)
      	      (char-equal next ?\ )
      	      (char-equal next ?\t)))
      	 ((equal (js-face) 'font-lock-string-face))
      	 ((equal (js-face) 'font-lock-comment-face))
      	 ((and (equal (js-face (1- (point))) 'font-lock-keyword-face)
      	       (not (equal (js-face)
      			   'font-lock-keyword-face))
      	       (not (position current " \t")))
      	  (incf-dif))
      	 ((position next "=/|&%?><*^:{}")
      	  (unless (position current "=!&|*+-^><")
      	    (incf-dif)))
      	 ((position current "?:,{};,")
      	  (incf-dif))
      	 ((char-equal current ?=)
      	  (unless (position next "=")
      	    (incf-dif)))
      	 ((position current "<>&|*/%^")
      	  (unless (and (char-equal next ?=)
      		       (and (char-equal current ?&)
      			    (char-equal next ?&))
      		       (and (char-equal current ?|)
      			    (char-equal next ?|)))
      	    (incf-dif)))
      	 ((position next "!~")
      	  (unless (position current "([")
      	    (incf-dif)))
      	 ((char-equal next ?+)
      	  (cond
      	   ((char-equal current ?+))
      	   ((position current ";=/&%?><*:,{}[]-")
      	    (incf-dif))))
      	 ((char-equal next ?-)
      	  (cond
      	   ((char-equal current ?-))
      	   ((position current ";=/&%?><*:,{}[]+")
      	    (incf-dif))))
      	 ((char-equal current ?+)
      	  (unless (position (char-before 1) "+;=/&%?><*:,{}[]")
      	    (incf-dif)))
      	 ((char-equal current ?-)
      	  (unless (position (char-before 1) "-;=/&%?><*:,{}[]")
      	    (incf-dif))))
      	(forward-char)))
          (goto-char (+ old-point difference))))


      Но нужны добровольцы тестеры, хотя на первый взгляд работает.
      Ответить
      • Есть подозрение, что на C будет читабельнее и быстрее.
        Ответить
        • Дописывать биндинги к Яваскрипт моду на Си? Весь же смысл в том, чтобы еЛисп для этого использовать.
          Быстрее - вы все равно не догоните, ето ж команда которая выполняется по нажатию клавиш, т.е. через гуй - вы так быстро не успеете понажимать 🙂
          Ответить
        • То, что написано на C, сложнее использовать в emacs.
          С другой стороны, императивный код на lisp превращается в настолько унылое говно, что проще всё выбросить и написать на python (если нужен плагин для текстового редактора, можно взять sublime text 2).
          Я бы тупо прогнал проект через GNU indent, либо отформатировал в Eclipse (там вроде довольно тонкая настройка идентации).
          Ответить
          • Да, я уже понял. Просто я изначально воспринял это не как плагин к эдитору, а как самостоятельный скрипт, которым можно прогнать нужные исходники, а затем уже читать в божеском виде. Естественно, самостоятельная тулза будет гораздо лучше на C чем на eLisp и вообще на лиспе.

            Соответственно, можно некими настройками такой программы подобрать под свой стиль метод табуляции, использование спейсов и т.д.)
            Ответить
            • Да есть уже такая программа, indent называется. Для полноценного pretty-printing желательно иметь AST, и тут и сишки мало преимуществ перед лиспом. С другой стороны, стандартный CL настолько дремуч, что не может даже читать аргументы командной строки способом, не зависящим от компилятора.
              Ответить
              • И я бы убил столько же времени настраивая какую-то другую программу, сколько потратил на написание хука, с той разницей, что настраивать чужое - буэ, а свое - интересно.
                Ответить
                • Ну-ну, дебажьте дальше. У меня лично есть занятия поинтересней, чем писать очередной идентатор.
                  Ответить
                  • http://pastebin.com/1fMaDAzN
                    Вот, собственно, вроде теперь все учел. Потратил 4 часа, сэкономил может быть солько же на нанастраивании "индентатора", ну и соотвественно, условия труда улучшились 🙂
                    Ответить
      • ОК, уже нашлось пару багов, но пока не буду обновлять, ближе к концу дня наверное еще найдется.
        Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8