LINUX.ORG.RU

Как принято писать на elisp'е?

 ,


0

1

1) Нужно ли писать (provide 'module-name) в конце каждого модуля?
2) Как принято разделять методы по пространством имен? Через двоеточие? Через `/`? Или как? 3) Какому способу отдавать предпочтение при погрузке файлов? load или request?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

1) Нужно ли писать (provide 'module-name) в конце каждого модуля?

По идее, да.
Flycheck ругается, если нет provide.

2) Как принято разделять методы по пространством имен? Через двоеточие? Через `/`? Или как?

В гайдлайнах пишут, что через <твой_префикс>-
Пример: mypackage-my-super-function1, mypackage-my-super-function2

Но некоторые делают и через двоеточие, и через слэш. За такое бить надо.


3) Какому способу отдавать предпочтение при погрузке файлов? load или request?

Смотря что надо

kovrik ★★★★★
()

1) Нужно ли писать (provide 'module-name) в конце каждого модуля?

Да

2) Как принято разделять методы по пространством имен? Через двоеточие? Через `/`? Или как?

Двоеточие

Какому способу отдавать предпочтение при погрузке файлов? load или request?

require

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)
Ответ на: комментарий от kovrik

Пример: mypackage-my-super-function1, mypackage-my-super-function2

Но некоторые делают и через двоеточие, и через слэш. За такое бить надо.

Речь об отделении пространства имен, двоеточие — обычная практика в лиспах. Речь же не о mypackage:my:super:function1, за это я бы сам побил.

iVS ★★★★★
()
Ответ на: комментарий от deterok

Не помню, чтобы это где-то оговаривалось. Скорее всего, как и везде — подгрузится тот, что встретится раньше. Если ты просто хочешь переписать некоторые ф-ции из другого модуля, то это уже другая история. В любом случае, модуль с тем же именем создавать не следует.

iVS ★★★★★
()
Ответ на: комментарий от iVS

Эм, я уже все бросил тогда (работы было так много, что сил не было ни на что, увольнялся еще тогда). Сейчас я все заново начал. И вот уже вменяемый конфиг сколотил. Осталось только jedi для питона вогнать и тему какую-нибудь вменяемую.

deterok ★★★★★
() автор топика
Ответ на: комментарий от iVS

Мало того, я еле вспомнил, что создавал эту тему, прямо из памяти вылетело...

deterok ★★★★★
() автор топика
Ответ на: комментарий от iVS

Я кажись понял как все работает и мне кажется provide это просто создание фиктивного флага...

Т.е. мы подгружаем файл такой-то с помощью require, если флаг не установлен.

Однако меня интересует subfeature в provide (provide FEATURE &optional SUBFEATURES). Как оно его запишет?

deterok ★★★★★
() автор топика

для flymake можно еще так (адаптировано для php - на основе примера для связки flymake jslint):

(when (load "flymake" t)
  (defun flymake-phplint-init ()
    (let* ((temp-file (flymake-init-create-temp-buffer-copy
                       'flymake-create-temp-inplace))
           (local-file (file-relative-name
                        temp-file
                        (file-name-directory buffer-file-name))))
      ;; Change this path to match where you have created the jslint-wrapper
      (list "/path/to/php_lint" (list local-file))))

  (setq flymake-err-line-patterns
        (cons '("\\(Parse\\|Fatal\\) error: +\\(.*?\\) in \\(.*?\\) on line \\([0-9]+\\)$"
                3 4 nil 2)
              flymake-err-line-patterns))

  ;; Nope, I want my copies in the system temp dir.
  (setq flymake-run-in-place nil)

  (add-to-list 'flymake-allowed-file-name-masks
               '("\\.php\\'" flymake-phplint-init)))
swwwfactory ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.