⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mlint.el

📁 Servlet,处理客户端输入,调查问卷,发送非HTML文档,获取Servlet配置参数,Cookie会话跟踪
💻 EL
📖 第 1 页 / 共 2 页
字号:
(defclass mlint-lm-entry-isstr (mlint-lm-replace-focus)  ((new-text :initform "ischar"))  "Replace isstr with ischar.")(defclass mlint-lm-entry-setstr (mlint-lm-replace-focus)  ((new-text :initform "char"))  "Replace setstr with char.")(defclass mlint-lm-entry-logicals (mlint-lm-entry)  ((fixable-p :initform t)   (fix-description :initform "perform a replacement.")   )  "Specialized logical and/or class.")(defmethod mlint-fix-entry ((ent mlint-lm-entry-logicals))  "Replace the single logical with double logical."  (save-excursion    (goto-line (oref ent line))    (let* ((s (progn (move-to-column (1- (oref ent column))) (point)))	   (e (progn (move-to-column (oref ent column-end)) (point)))	   (txt (buffer-substring-no-properties s e)))      (goto-char s)      ;; All of these are replacing single logicals with double.      (insert txt)))  )(defclass mlint-lm-entry-unused-argument (mlint-lm-entry)  ((fixable-p :initform t)   (fix-description :initform "remove this argument.")   )  "Specialized logical and/or class.")(defmethod mlint-fix-entry ((ent mlint-lm-entry-unused-argument))  "Remove the arguments."  (save-excursion    (goto-line (oref ent line))    (let* ((s (progn (move-to-column (1- (oref ent column))) (point)))	   (e (progn (move-to-column (oref ent column-end)) (point)))	   )      (goto-char s)      (if (not (looking-at "(\\|,"))	  (forward-char -1))      (delete-region (point) e)      ))  )(defclass mlint-lm-quiet (mlint-lm-entry)  ((fixable-p :initform t)   (fix-description :initform "Make sure this line prints no values.")   )  "Specialized logical and/or class.")(defmethod mlint-fix-entry ((ent mlint-lm-quiet))  "Add semi-colon to end of this line."  (save-excursion    (matlab-end-of-command)    (insert ";"))  )(defclass mlint-lm-eval->trycatch (mlint-lm-entry)  ((fixable-p :initform t)   (fix-description :initform "Replace EVAL call with TRY/CATCH.")   )  "EVAL 2 arg form.  Transform into try/catch.")(defun mlint-destringafy ()  "Move forward over one string, removing string notations."  (unless (looking-at "'")    (error "Not looking at a string"))  (forward-char -1)  (let ((s (1+ (point)))	(e (save-excursion	     (matlab-font-lock-string-match-normal (point-at-eol))	     (point))))    (goto-char e)    (delete-char -1)    (save-excursion      (goto-char s)      (delete-char 1))    (save-excursion      (save-restriction	(narrow-to-region s (point))	(goto-char (point-min))	(while (re-search-forward "''" nil t)	  (replace-match "'"))))))(defmethod mlint-fix-entry ((ent mlint-lm-eval->trycatch))  "Add semi-colon to end of this line."  (save-excursion    (goto-line (oref ent line))    (move-to-column (1- (oref ent column)))    ;; (forward-word -1)    (delete-region (point) (save-excursion (forward-word 1) (point)))    (delete-horizontal-space)    (delete-char 1)    (insert "try")    (matlab-indent-line)    (matlab-return)    (mlint-destringafy)    (looking-at "\\s-*,\\s-*")    (delete-region (match-beginning 0) (match-end 0))    (matlab-return)    (insert "catch")    (matlab-return)    (mlint-destringafy)    (kill-line 1)    (matlab-return)    (insert "end ")    (matlab-return)    (forward-line -1)    (end-of-line)    (delete-horizontal-space)    )  );;; User functions;;(defun mlint-highlight (err)  "Setup ERR, an mlint message to be marked."  (linemark-add-entry mlint-mark-group		      :line (nth 0 err)		      :column (car (nth 1 err))		      :column-end (cdr (nth 1 err))		      :warning (nth 2 err)		      :warningcode		      (cdr (assoc (nth 3 err) mlint-warningcode-alist))		      :warningid (intern (nth 4 err))		      ))(defun mlint-unhighlight-all ()  "Unhighlight all existing mlint messages."  (interactive)  (mapcar (lambda (e)	    (if (string= (oref e filename) (buffer-file-name))		(linemark-delete e)))	  (oref mlint-mark-group marks)))(defun mlint-buffer ()  "Run mlint on the current buffer, and highlight problems."  (interactive)  (when (buffer-file-name)    (let ((errs (mlint-run))	  )      (mlint-unhighlight-all)      (while errs	(mlint-highlight (car errs))	(setq errs (cdr errs))))))(defun mlint-next-buffer ()  "Move to the next warning in this buffer."  (interactive)  (let ((n (linemark-next-in-buffer mlint-mark-group 1 t)))    (if n	(progn (goto-line (oref n line))	       (message (oref n warning)))      (ding))))(defun mlint-prev-buffer ()  "Move to the prev warning in this buffer."  (interactive)  (let ((n (linemark-next-in-buffer mlint-mark-group -1 t)))    (if n	(progn (goto-line (oref n line))	       (message (oref n warning)))      (ding))))(defun mlint-next-buffer-new ()  "Move to the next new warning in this buffer."  (interactive)  (let ((p (linemark-at-point (point) mlint-mark-group))	(n (linemark-next-in-buffer mlint-mark-group 1 t)))    ;; Skip over messages that are the same as the one under point.    (save-excursion      (while (and n p (not (eq n p))		  (string= (oref p warning) (oref n warning)))	(goto-line (oref n line))	(setq n (linemark-next-in-buffer mlint-mark-group 1 t))))    (if n	(progn (goto-line (oref n line))	       (message (oref n warning)))      (ding))))(defun mlint-prev-buffer-new ()  "Move to the prev new warning in this buffer."  (interactive)  (let ((p (linemark-at-point (point) mlint-mark-group))	(n (linemark-next-in-buffer mlint-mark-group -1 t)))    ;; Skip over messages that are the same as the one under point.    (save-excursion      (while (and n p (not (eq n p))		  (string= (oref p warning) (oref n warning)))	(goto-line (oref n line))	(setq n (linemark-next-in-buffer mlint-mark-group -1 t))))    (if n	(progn (goto-line (oref n line))	       (message (oref n warning)))      (ding))))(defun mlint-show-warning ()  "Show the warning for the current mark."  (interactive)  (let ((n (linemark-at-point (point) mlint-mark-group)))    (if (not n)	(message "No warning at point.")      (message (oref n warning)))))(defun mlint-fix-warning ()  "Show the warning for the current mark."  (interactive)  (let ((n (linemark-at-point (point) mlint-mark-group)))    (if (not n)	(message "No warning at point.")      (if (not (mlint-is-fixable n))	  (message "No method for fixing this warning.")	(mlint-fix-entry n)))))(defun mlint-mark-ok ()  "Mark this line as MLint Ok."  (interactive)  (let ((n (linemark-at-point (point) mlint-mark-group)))    (if (not n)	(message "No warning at point.")      (end-of-line)      (insert " %#ok")))  );;; Define an mlinting minor mode;;(defvar mlint-minor-mode-map  (let ((map (make-sparse-keymap)))    (define-key map "\C-c,n" 'mlint-next-buffer)    (define-key map "\C-c,p" 'mlint-prev-buffer)    (define-key map "\C-c,N" 'mlint-next-buffer-new)    (define-key map "\C-c,P" 'mlint-prev-buffer-new)    (define-key map "\C-c,g" 'mlint-buffer)    (define-key map "\C-c,c" 'mlint-unhighlight-all)    (define-key map "\C-c, " 'mlint-show-warning)    (define-key map "\C-c,f" 'mlint-fix-warning)    (define-key map "\C-c,o" 'mlint-mark-ok)    map)  "Minor mode keymap used when mlinting a buffer.")(easy-menu-define  mlint-minor-menu mlint-minor-mode-map "Mlint Minor Mode Menu" '("Mlint"   ["Get MLint Warnings" mlint-buffer t]   ["Clear MLint Warnings" mlint-unhighlight-all t]   ["Show Warning" mlint-show-warning (linemark-at-point (point) mlint-mark-group)]   ["Auto Fix Warning" mlint-fix-warning     (let ((w (linemark-at-point (point) mlint-mark-group)))      (and mlint-scan-for-fixes-flag w (mlint-is-fixable w))) ]   ["Enable Auto-fix scanning"     (setq mlint-scan-for-fixes-flag (not mlint-scan-for-fixes-flag))     :style toggle :selected mlint-scan-for-fixes-flag ]   ["This is Ok" mlint-mark-ok     (linemark-at-point (point) mlint-mark-group) ]   "--"   ["Next Warning" mlint-next-buffer t]   ["Previous Warning" mlint-prev-buffer t]   ["Next New Warning" mlint-next-buffer-new t]   ["Previous New Warning" mlint-prev-buffer-new t]   ))(defvar mlint-overlay-map  (let ((map (make-sparse-keymap )))    (define-key map [down-mouse-3] 'mlint-emacs-popup-kludge)    (define-key map [(meta n)] 'mlint-next-buffer)    (define-key map [(meta p)] 'mlint-prev-buffer)    (define-key map [(control meta n)] 'mlint-next-buffer-new)    (define-key map [(control meta p)] 'mlint-prev-buffer-new)    (set-keymap-parent map matlab-mode-map)    map)  "Map used in overlays marking mlint warnings.")(defun mlint-emacs-popup-kludge (e)  "Pop up a menu related to the clicked on item.Must be bound to event E."  (interactive "e")  (let ((repos nil)	(ipos nil)	(startpos (point))	)    (save-excursion      (mouse-set-point e)      (setq ipos (point))      (popup-menu mlint-minor-menu)      (if (/= (point) ipos) (setq repos (point)))      )    (when repos (goto-char repos))))(easy-mmode-define-minor-mode mlint-minor-mode  "Toggle mlint minor mode, a mode for showing mlint errors.With prefix ARG, turn mlint minor mode on iff ARG is positive.\\{mlint-minor-mode-map\\}"  nil " lint" mlint-minor-mode-map  (if (and mlint-minor-mode (not (eq major-mode 'matlab-mode)))      (progn	(mlint-minor-mode -1)	(error "Mlint minor mode is only for MATLAB Major mode.")))  (if (not mlint-minor-mode)      (progn	;; We are linting, so don't verify on save.	(make-variable-buffer-local 'matlab-verify-on-save-flag)	(setq matlab-verify-on-save-flag nil)	(mlint-unhighlight-all)	(remove-hook 'after-save-hook 'mlint-buffer t)	)    (add-hook 'after-save-hook 'mlint-buffer nil t)    (mlint-buffer))  )(defvar mlint-minor-mode-was-enabled-before nil  "Non nil if mlint is off, and it was auto-disabled.")(make-variable-buffer-local 'mlint-minor-mode-was-enabled-before)(defun mlint-ediff-metabuffer-setup-hook ()  "Hook run when EDiff is about to do stuff to a buffer.That buffer will be current."  (when (and (eq major-mode 'matlab-mode)	     mlint-minor-mode)    (setq mlint-minor-mode-was-enabled-before mlint-minor-mode)    (mlint-minor-mode -1)    ))(add-hook 'ediff-prepare-buffer-hook 'mlint-ediff-metabuffer-setup-hook)(defun mlint-ediff-cleanup-hook ()  "Re-enable mlint for buffers being ediffed."  (mapcar (lambda (b)	    (when (save-excursion		    (set-buffer b)		    (and (eq major-mode 'matlab-mode)			 mlint-minor-mode-was-enabled-before))	      (save-excursion		(set-buffer b)		(mlint-minor-mode 1))))	  (buffer-list)))(add-hook 'ediff-cleanup-hook 'mlint-ediff-cleanup-hook)(provide 'mlint);;; mlint.el ends 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -