comparison lisp/progmodes/sql.el @ 111870:b47e85affa59

Derive from prog-mode, use derived-mode-p, and fix up various minor style issues in lisp/progmodes. * lisp/progmodes/vhdl-mode.el (vhdl-write-file-hooks-init) (vhdl-hs-minor-mode, vhdl-ps-print-init): Fix make-local-variable -> make-local-hook. * lisp/progmodes/sh-script.el (sh-require-final-newline): Remove. (sh-set-shell): Don't set require-final-newline since it's already done by prog-mode. * lisp/progmodes/modula2.el (m2-mode): Don't make m2-end-comment-column since we never set it. * lisp/progmodes/ebrowse.el (ebrowse-set-tree-indentation): Use read-string and standard prompt. * lisp/progmodes/dcl-mode.el (dcl-mode-map): Move init into declaration. * lisp/progmodes/meta-mode.el (meta-mode-abbrev-table): Merge init and decl. (meta-common-mode-syntax-table): Rename from meta-mode-syntax-table. (meta-common-mode-map): Rename from meta-mode-map. Remove C-m binding, which is a user preference, not mode specific. (meta-common-mode): New major mode; replace meta-common-initialization. * lisp/progmodes/js.el (js-mode): Call syntax-propertize rather than messing around with font-lock. * lisp/progmodes/etags.el (select-tags-table-mode): Derive from special-mode. * lisp/progmodes/octave-mod.el (octave-mode): * lisp/progmodes/gdb-mi.el (gdb-inferior-io-mode, gdb-threads-mode) (gdb-memory-mode, gdb-disassembly-mode, gdb-breakpoints-mode) (gdb-frames-mode, gdb-locals-mode, gdb-registers-mode): Let define-derived-mode do its job. * lisp/progmodes/cpp.el (cpp-edit-mode-map): Move initialization into declaration. (cpp-edit-mode): Use define-derived-mode. (cpp-edit-load): Use derived-mode-p. * lisp/progmodes/mixal-mode.el (mixal-mode): * lisp/progmodes/f90.el (f90-mode): * lisp/progmodes/cfengine.el (cfengine-mode): Don't bother setting require-final-newline since prog-mode does it already. * lisp/progmodes/cc-cmds.el (c-update-modeline): Use match-string. * lisp/progmodes/asm-mode.el (asm-mode-map): Fix menu setup. * lisp/progmodes/antlr-mode.el: Require cc-mode upfront. (antlr-mode-syntax-table, antlr-action-syntax-table): Initialize in the declaration. (antlr-directory-dependencies, antlr-show-makefile-rules): Use derived-mode-p. (antlr-language-option): Don't assume point-min==1. (antlr-mode): Use define-derived-mode. * lisp/progmodes/ada-mode.el: Use derived-mode-p. (ada-mode): Use define-derived-mode. Use hack-local-variables-hook. * lisp/progmodes/vhdl-mode.el (vhdl-mode): * lisp/progmodes/verilog-mode.el (verilog-mode): * lisp/progmodes/vera-mode.el (vera-mode): * lisp/progmodes/sql.el (sql-mode): * lisp/progmodes/scheme.el (scheme-mode): * lisp/progmodes/perl-mode.el (perl-mode): * lisp/progmodes/octave-inf.el (inferior-octave-mode): * lisp/progmodes/autoconf.el (autoconf-mode): * lisp/progmodes/m4-mode.el (m4-mode): * lisp/progmodes/inf-lisp.el (inferior-lisp-mode): * lisp/progmodes/idlwave.el (idlwave-mode): * lisp/progmodes/icon.el (icon-mode): * lisp/progmodes/idlw-help.el (idlwave-help-mode): * lisp/progmodes/dcl-mode.el (dcl-mode): * lisp/progmodes/idlw-shell.el (idlwave-shell-mode): * lisp/progmodes/ebrowse.el (ebrowse-tree-mode, ebrowse-electric-list-mode) (ebrowse-member-mode, ebrowse-electric-position-mode): Use define-derived-mode. * lisp/progmodes/xscheme.el (xscheme-start) (local-set-scheme-interaction-buffer, scheme-interaction-mode): * lisp/progmodes/which-func.el (which-function): * lisp/progmodes/vhdl-mode.el (vhdl-set-style): * lisp/progmodes/verilog-mode.el (verilog-set-compile-command) (verilog-modify-compile-command, verilog-error-regexp-add-xemacs) (verilog-set-define, verilog-auto-reeval-locals): * lisp/progmodes/sql.el (sql-product-font-lock, sql-interactive-mode): * lisp/progmodes/simula.el (simula-mode): * lisp/progmodes/scheme.el (scheme-mode-variables, dsssl-mode): * lisp/progmodes/python.el (python-check, python-mode): * lisp/progmodes/prolog.el (prolog-mode-variables): * lisp/progmodes/gud.el (gud-tooltip-activate-mouse-motions): * lisp/progmodes/ebrowse.el (ebrowse-view-file-other-frame): * lisp/progmodes/delphi.el (delphi-mode): * lisp/progmodes/cc-styles.el (c-setup-paragraph-variables): * lisp/progmodes/cc-mode.el (c-basic-common-init, c-common-init) (c-font-lock-init): Move make-local-variable to their setq. * lisp/progmodes/xscheme.el (exit-scheme-interaction-mode) (xscheme-enter-interaction-mode, xscheme-enter-debugger-mode) (xscheme-debugger-mode-p, xscheme-send-string-1): * lisp/progmodes/tcl.el (inferior-tcl-proc, tcl-current-word) (tcl-load-file, tcl-restart-with-file): * lisp/progmodes/ps-mode.el (ps-run-running): * lisp/progmodes/gdb-mi.el (gud-watch, gdb-mouse-set-clear-breakpoint): * lisp/progmodes/js.el (js--get-all-known-symbols): * lisp/progmodes/inf-lisp.el (inferior-lisp-proc): * lisp/progmodes/idlwave.el (idlwave-beginning-of-statement) (idlwave-template, idlwave-update-buffer-routine-info) (idlwave-update-current-buffer-info) (idlwave-get-routine-info-from-buffers, idlwave-choose) (idlwave-scan-class-info, idlwave-fix-keywords) (idlwave-list-buffer-load-path-shadows): * lisp/progmodes/idlw-toolbar.el (idlwave-toolbar, idlwave-toolbar-add) (idlwave-toolbar-remove): * lisp/progmodes/idlw-shell.el (idlwave-shell-save-and-action) (idlwave-shell-file-name, idlwave-shell-electric-debug-all-off) (idlwave-shell-menu-def): * lisp/progmodes/idlw-complete-structtag.el (idlwave-prepare-structure-tag-completion): * lisp/progmodes/gud.el (gud-set-buffer): * lisp/progmodes/f90.el (f90-backslash-not-special): * lisp/progmodes/delphi.el (delphi-find-unit): Use derived-mode-p.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 10 Dec 2010 15:00:25 -0500
parents 029e4783cbae
children 417b1e4d63cd
comparison
equal deleted inserted replaced
111869:2b8673bc05c8 111870:b47e85affa59
2301 (append 2301 (append
2302 (sql-get-product-feature sql-product :syntax-alist) 2302 (sql-get-product-feature sql-product :syntax-alist)
2303 '((?_ . "w") (?. . "w"))))) 2303 '((?_ . "w") (?. . "w")))))
2304 2304
2305 ;; Get the product-specific keywords. 2305 ;; Get the product-specific keywords.
2306 (setq sql-mode-font-lock-keywords 2306 (set (make-local-variable 'sql-mode-font-lock-keywords)
2307 (append 2307 (append
2308 (unless (eq sql-product 'ansi) 2308 (unless (eq sql-product 'ansi)
2309 (sql-get-product-feature sql-product :font-lock)) 2309 (sql-get-product-feature sql-product :font-lock))
2310 ;; Always highlight ANSI keywords 2310 ;; Always highlight ANSI keywords
2311 (sql-get-product-feature 'ansi :font-lock) 2311 (sql-get-product-feature 'ansi :font-lock)
2312 ;; Fontify object names in CREATE, DROP and ALTER DDL 2312 ;; Fontify object names in CREATE, DROP and ALTER DDL
2313 ;; statements 2313 ;; statements
2314 (list sql-mode-font-lock-object-name))) 2314 (list sql-mode-font-lock-object-name)))
2315 2315
2316 ;; Setup font-lock. Force re-parsing of `font-lock-defaults'. 2316 ;; Setup font-lock. Force re-parsing of `font-lock-defaults'.
2317 (kill-local-variable 'font-lock-set-defaults) 2317 (kill-local-variable 'font-lock-set-defaults)
2318 (setq font-lock-defaults (list 'sql-mode-font-lock-keywords 2318 (set (make-local-variable 'font-lock-defaults)
2319 keywords-only t syntax-alist)) 2319 (list 'sql-mode-font-lock-keywords
2320 keywords-only t syntax-alist))
2320 2321
2321 ;; Force font lock to reinitialize if it is already on 2322 ;; Force font lock to reinitialize if it is already on
2322 ;; Otherwise, we can wait until it can be started. 2323 ;; Otherwise, we can wait until it can be started.
2323 (when (and (fboundp 'font-lock-mode) 2324 (when (and (fboundp 'font-lock-mode)
2324 (boundp 'font-lock-mode) 2325 (boundp 'font-lock-mode)
3230 3231
3231 3232
3232 ;;; SQL mode -- uses SQL interactive mode 3233 ;;; SQL mode -- uses SQL interactive mode
3233 3234
3234 ;;;###autoload 3235 ;;;###autoload
3235 (defun sql-mode () 3236 (define-derived-mode sql-mode prog-mode "SQL"
3236 "Major mode to edit SQL. 3237 "Major mode to edit SQL.
3237 3238
3238 You can send SQL statements to the SQLi buffer using 3239 You can send SQL statements to the SQLi buffer using
3239 \\[sql-send-region]. Such a buffer must exist before you can do this. 3240 \\[sql-send-region]. Such a buffer must exist before you can do this.
3240 See `sql-help' on how to create SQLi buffers. 3241 See `sql-help' on how to create SQLi buffers.
3257 you must tell Emacs. Here's how to do that in your `~/.emacs' file: 3258 you must tell Emacs. Here's how to do that in your `~/.emacs' file:
3258 3259
3259 \(add-hook 'sql-mode-hook 3260 \(add-hook 'sql-mode-hook
3260 (lambda () 3261 (lambda ()
3261 (modify-syntax-entry ?\\\\ \".\" sql-mode-syntax-table)))" 3262 (modify-syntax-entry ?\\\\ \".\" sql-mode-syntax-table)))"
3262 (interactive) 3263 :abbrev-table sql-mode-abbrev-table
3263 (kill-all-local-variables)
3264 (setq major-mode 'sql-mode)
3265 (setq mode-name "SQL")
3266 (use-local-map sql-mode-map)
3267 (if sql-mode-menu 3264 (if sql-mode-menu
3268 (easy-menu-add sql-mode-menu)); XEmacs 3265 (easy-menu-add sql-mode-menu)); XEmacs
3269 (set-syntax-table sql-mode-syntax-table) 3266
3270 (make-local-variable 'font-lock-defaults) 3267 (set (make-local-variable 'comment-start) "--")
3271 (make-local-variable 'sql-mode-font-lock-keywords)
3272 (make-local-variable 'comment-start)
3273 (setq comment-start "--")
3274 ;; Make each buffer in sql-mode remember the "current" SQLi buffer. 3268 ;; Make each buffer in sql-mode remember the "current" SQLi buffer.
3275 (make-local-variable 'sql-buffer) 3269 (make-local-variable 'sql-buffer)
3276 ;; Add imenu support for sql-mode. Note that imenu-generic-expression 3270 ;; Add imenu support for sql-mode. Note that imenu-generic-expression
3277 ;; is buffer-local, so we don't need a local-variable for it. SQL is 3271 ;; is buffer-local, so we don't need a local-variable for it. SQL is
3278 ;; case-insensitive, that's why we have to set imenu-case-fold-search. 3272 ;; case-insensitive, that's why we have to set imenu-case-fold-search.
3279 (setq imenu-generic-expression sql-imenu-generic-expression 3273 (setq imenu-generic-expression sql-imenu-generic-expression
3280 imenu-case-fold-search t) 3274 imenu-case-fold-search t)
3281 ;; Make `sql-send-paragraph' work on paragraphs that contain indented 3275 ;; Make `sql-send-paragraph' work on paragraphs that contain indented
3282 ;; lines. 3276 ;; lines.
3283 (make-local-variable 'paragraph-separate) 3277 (set (make-local-variable 'paragraph-separate) "[\f]*$")
3284 (make-local-variable 'paragraph-start) 3278 (set (make-local-variable 'paragraph-start) "[\n\f]")
3285 (setq paragraph-separate "[\f]*$"
3286 paragraph-start "[\n\f]")
3287 ;; Abbrevs 3279 ;; Abbrevs
3288 (setq local-abbrev-table sql-mode-abbrev-table)
3289 (setq abbrev-all-caps 1) 3280 (setq abbrev-all-caps 1)
3290 ;; Run hook
3291 (run-mode-hooks 'sql-mode-hook)
3292 ;; Catch changes to sql-product and highlight accordingly 3281 ;; Catch changes to sql-product and highlight accordingly
3293 (sql-highlight-product)
3294 (add-hook 'hack-local-variables-hook 'sql-highlight-product t t)) 3282 (add-hook 'hack-local-variables-hook 'sql-highlight-product t t))
3295 3283
3296 3284
3297 3285
3298 ;;; SQL interactive mode 3286 ;;; SQL interactive mode
3373 (set (make-local-variable 'sql-product) 3361 (set (make-local-variable 'sql-product)
3374 (or sql-interactive-product 3362 (or sql-interactive-product
3375 sql-product)) 3363 sql-product))
3376 3364
3377 ;; Setup the mode. 3365 ;; Setup the mode.
3378 (setq major-mode 'sql-interactive-mode) 3366 (setq major-mode 'sql-interactive-mode) ;FIXME: Use define-derived-mode.
3379 (setq mode-name (concat "SQLi[" (or (sql-get-product-feature sql-product :name) 3367 (setq mode-name
3380 (symbol-name sql-product)) "]")) 3368 (concat "SQLi[" (or (sql-get-product-feature sql-product :name)
3369 (symbol-name sql-product)) "]"))
3381 (use-local-map sql-interactive-mode-map) 3370 (use-local-map sql-interactive-mode-map)
3382 (if sql-interactive-mode-menu 3371 (if sql-interactive-mode-menu
3383 (easy-menu-add sql-interactive-mode-menu)) ; XEmacs 3372 (easy-menu-add sql-interactive-mode-menu)) ; XEmacs
3384 (set-syntax-table sql-mode-syntax-table) 3373 (set-syntax-table sql-mode-syntax-table)
3385 (make-local-variable 'sql-mode-font-lock-keywords)
3386 (make-local-variable 'font-lock-defaults)
3387 3374
3388 ;; Note that making KEYWORDS-ONLY nil will cause havoc if you try 3375 ;; Note that making KEYWORDS-ONLY nil will cause havoc if you try
3389 ;; SELECT 'x' FROM DUAL with SQL*Plus, because the title of the column 3376 ;; SELECT 'x' FROM DUAL with SQL*Plus, because the title of the column
3390 ;; will have just one quote. Therefore syntactic hilighting is 3377 ;; will have just one quote. Therefore syntactic hilighting is
3391 ;; disabled for interactive buffers. No imenu support. 3378 ;; disabled for interactive buffers. No imenu support.
3392 (sql-product-font-lock t nil) 3379 (sql-product-font-lock t nil)
3393 3380
3394 ;; Enable commenting and uncommenting of the region. 3381 ;; Enable commenting and uncommenting of the region.
3395 (make-local-variable 'comment-start) 3382 (set (make-local-variable 'comment-start) "--")
3396 (setq comment-start "--")
3397 ;; Abbreviation table init and case-insensitive. It is not activated 3383 ;; Abbreviation table init and case-insensitive. It is not activated
3398 ;; by default. 3384 ;; by default.
3399 (setq local-abbrev-table sql-mode-abbrev-table) 3385 (setq local-abbrev-table sql-mode-abbrev-table)
3400 (setq abbrev-all-caps 1) 3386 (setq abbrev-all-caps 1)
3401 ;; Exiting the process will call sql-stop. 3387 ;; Exiting the process will call sql-stop.
3402 (set-process-sentinel (get-buffer-process (current-buffer)) 'sql-stop) 3388 (set-process-sentinel (get-buffer-process (current-buffer)) 'sql-stop)
3403 ;; Save the connection name 3389 ;; Save the connection name
3404 (make-local-variable 'sql-connection) 3390 (make-local-variable 'sql-connection)
3405 ;; Create a usefull name for renaming this buffer later. 3391 ;; Create a usefull name for renaming this buffer later.
3406 (make-local-variable 'sql-alternate-buffer-name) 3392 (set (make-local-variable 'sql-alternate-buffer-name)
3407 (setq sql-alternate-buffer-name (sql-make-alternate-buffer-name)) 3393 (sql-make-alternate-buffer-name))
3408 ;; User stuff. Initialize before the hook. 3394 ;; User stuff. Initialize before the hook.
3409 (set (make-local-variable 'sql-prompt-regexp) 3395 (set (make-local-variable 'sql-prompt-regexp)
3410 (sql-get-product-feature sql-product :prompt-regexp)) 3396 (sql-get-product-feature sql-product :prompt-regexp))
3411 (set (make-local-variable 'sql-prompt-length) 3397 (set (make-local-variable 'sql-prompt-length)
3412 (sql-get-product-feature sql-product :prompt-length)) 3398 (sql-get-product-feature sql-product :prompt-length))