LINUX.ORG.RU

Держи

;;
;; Perl
;;
(add-to-list 'auto-mode-alist '("\\.\\([pP][Llm]\\|al\\|t\\)\\'" . cperl-mode)) ;; Auto associate with cperl-mode
(add-to-list 'interpreter-mode-alist '("perl" . cperl-mode))
(add-to-list 'interpreter-mode-alist '("perl5" . cperl-mode))
(add-to-list 'interpreter-mode-alist '("miniperl" . cperl-mode))

(setq cperl-invalid-face nil)    ;; disable errors
(setq cperl-electric-keywords t) ;; expands for keywords such as foreach, while, etc...

;; Autocomplete pairs
(mapc
 (lambda (pair)
   (if (eq (cdr pair) 'perl-mode)
	   (setcdr pair 'cperl-mode)))
 (append auto-mode-alist interpreter-mode-alist))

;; Indentation
(setq cperl-indent-level 4
	  cperl-close-paren-offset -4
	  cperl-continued-statement-offset 4
	  cperl-indent-parens-as-block t
	  cperl-tab-always-indent t)

(add-hook 'cperl-mode-hook
          (lambda()
            (setq tab-width 4)
            (setq indent-tabs-mode nil)
            ))

;; Finding perl modules paths
(defun find-perl-module (module-name)
  (interactive "sPerl module name: ")
  (let ((path (perl-module-path module-name)))
	(if path
		(find-file path)
	  (error "Module '%s' not found" module-name))))
KernelPanic ()

Также не забудь поставить и включить flycheck. Он годно работает с perl/perl-perlcritic:

;; Flycheck
(require 'flycheck)
(add-hook 'after-init-hook #'global-flycheck-mode) ;; turn on flychecking globally

Ну и, если юзаешь моджо, то добавь в автоподхват его шаблонизатора в web-mode (предполагается, что вебмод уже установлен и настроен):

;; Web mode
(require 'web-mode)
...
(add-to-list 'auto-mode-alist '("\\.ep?\\'" . web-mode))
...
KernelPanic ()

И убери тег 'ide'. Emacs - не IDE. В Имакс с таким подходом (пытаться сделать из редактора иде) лучше не соваться.

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

Ну и, если юзаешь моджо, то добавь в автоподхват его шаблонизатора в web-mode (предполагается, что вебмод уже установлен и настроен):

Можешь и заодно для js и для webмода скинуть плиз ?

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

Чувак, ты же убиваешь всю соль Имакса. Фишка его в том, чтобы МАКСИМАЛЬНО ТОНКО ЗАТОЧИТЬ РЕДАКТОР ПОД СЕБЯ, а не понадергать конфигов то тут, то том).

Если у тебя не хватает ресурсов (временнЫх или мозговых) на настроку оного, то не суйся сюда. Бери саблайм как все нормальные люди и юзай - там поощряется передача конфигов из рук-в-руки.

С Имаксом придется дрочиться. Если ты не готов к этому - проходи мимо. Нет, я серьезно), не трать на него время. Займись чем-нибудь полезным: с девушкой/супругой своей в шахматы сыграй, например ;).

KernelPanic ()
Последнее исправление: KernelPanic (всего исправлений: 4)
Ответ на: комментарий от pinachet

В качестве js-линтера рекомендую взять eslint. Но для этого придется поставить ноду. После ставь eslint: npm install -g eslint. В хомяке создавай конфиг с опеределнными тобой првилами: .eslintrc. Затем уже подымай все это дело в имакс:

web-mode + flycheck + js2 + eslint:

;; Web mode
(require 'web-mode)
(add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.ejs\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.js?\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.jsx?\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.css?\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.scss?\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.ep?\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.vbhtml?\\'" . web-mode))

(defun my-web-mode-hook ()
  "Hooks for Web mode."
  (setq web-mode-enable-current-element-highlight t)
  (setq web-mode-ac-sources-alist
        '(("css" . (ac-source-css-property))
          ("html" . (ac-source-words-in-buffer ac-source-abbrev)))
  )
)
(add-hook 'web-mode-hook  'my-web-mode-hook)

;; Javascript
(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
(add-to-list 'auto-mode-alist '("\\.json$" . json-mode))
(add-hook 'js-mode-hook 'js2-minor-mode)
(add-hook 'js2-mode-hook 'ac-js2-mode)
(setq js2-highlight-level 4)
(add-to-list 'interpreter-mode-alist '("node" . js2-mode))

;; Flycheck
(require 'flycheck)
(add-hook 'after-init-hook #'global-flycheck-mode) ;; turn on flychecking globally

;; Disable jshint since we prefer eslint checking
(setq-default flycheck-disabled-checkers
  (append flycheck-disabled-checkers
    '(javascript-jshint)))

(flycheck-add-mode 'javascript-eslint 'web-mode) ;; use eslint with web-mode for jsx files

(setq-default flycheck-temp-prefix ".flycheck") ;; customize flycheck temp file prefix

;; Disable json-jsonlist checking for json files
(setq-default flycheck-disabled-checkers
  (append flycheck-disabled-checkers
    '(json-jsonlist)))

;; Check html and css
(with-eval-after-load 'flycheck
  (flycheck-add-mode 'html-tidy 'web-mode)
  (flycheck-add-mode 'css-csslint 'web-mode))

;; For better jsx syntax-highlighting in web-mode
(defadvice web-mode-highlight-part (around tweak-jsx activate)
  (if (equal web-mode-content-type "jsx")
    (let ((web-mode-enable-part-face nil))
      ad-do-it)
    ad-do-it))

(add-hook 'js2-mode (lambda ()
	((global-unset-key (kbd "M-j"))
	 (global-set-key (kbd "M-j") 'backward-char)
	 )))
KernelPanic ()
Ответ на: комментарий от KernelPanic

то чувство, когда для кейбиндинга нужно написать пафосное слово lambda ))

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

(add-to-list 'auto-mode-alist '(«\\.phtml\\'» . web-mode))

Только сегодня читал о том, что для этого в LISP используется CONS :)

Ещё в emacs весьма забавляет cperl-mode. На самом деле cperl реально существует, он совместим с большинством библиотек perl5, кроме XS'ных. Хотя, возможно, я что-то делаю не так.

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

Какие люди)! Приветствую.

Ты немного путаешь. cperl-mode не имеет никакого отношения к проекту cperl (окромя названия). cperl-mode в Emacs это просто расширенный perl-mode.

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

Я не путаю, я говорю о том, что в Emacs используют сочетание буковок «cperl» не по назначению. И это действительно так, учитывая тот факт, что между perl with classes и обычным perl разница есть, так что в emacs и правда могли сделать отдельный режим для cperl'а. Как и для наркоманского rperl'а, например :)

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

cperl-mode появился в 1991 году, тогда еще perl4 не было

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.