Mercurial > emacs
annotate lisp/cedet/srecode/srt.el @ 108184:f4b0e5358091
* src/fileio.c (Ffile_selinux_context): Context functions may return null.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Fri, 30 Apr 2010 19:58:41 -0700 |
parents | 1d1d5d9bd884 |
children | 376148b31b5e |
rev | line source |
---|---|
104498 | 1 ;;; srecode/srt.el --- argument handlers for SRT files |
2 | |
106815 | 3 ;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. |
104498 | 4 |
5 ;; Author: Eric M. Ludlam <eric@siege-engine.com> | |
6 | |
7 ;; This file is part of GNU Emacs. | |
8 | |
9 ;; GNU Emacs is free software: you can redistribute it and/or modify | |
10 ;; it under the terms of the GNU General Public License as published by | |
11 ;; the Free Software Foundation, either version 3 of the License, or | |
12 ;; (at your option) any later version. | |
13 | |
14 ;; GNU Emacs is distributed in the hope that it will be useful, | |
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 ;; GNU General Public License for more details. | |
18 | |
19 ;; You should have received a copy of the GNU General Public License | |
20 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | |
21 | |
22 ;;; Commentary: | |
23 ;; | |
24 ;; Filters for SRT files, the Semantic Recoder template files. | |
25 | |
26 ;;; Code: | |
27 | |
105652
51bc239bdc37
* cedet/srecode/srt.el:
Chong Yidong <cyd@stupidchicken.com>
parents:
105377
diff
changeset
|
28 (eval-when-compile (require 'cl)) |
104498 | 29 (require 'eieio) |
30 (require 'srecode/dictionary) | |
31 (require 'srecode/insert) | |
32 | |
33 (defvar srecode-read-variable-name-history nil | |
34 "History for `srecode-read-variable-name'.") | |
35 | |
36 (defun srecode-read-variable-name (prompt &optional initial hist default) | |
105328 | 37 "Read in the name of a declared variable in the current SRT file. |
104498 | 38 PROMPT is the prompt to use. |
39 INITIAL is the initial string. | |
40 HIST is the history value, otherwise `srecode-read-variable-name-history' | |
41 is used. | |
42 DEFAULT is the default if RET is hit." | |
43 (let* ((newdict (srecode-create-dictionary)) | |
44 (currfcn (semantic-current-tag)) | |
45 ) | |
46 (srecode-resolve-argument-list | |
47 (mapcar 'read | |
48 (semantic-tag-get-attribute currfcn :arguments)) | |
49 newdict) | |
50 | |
51 (with-slots (namehash) newdict | |
52 (completing-read prompt namehash nil nil initial | |
53 (or hist 'srecode-read-variable-name-history) | |
54 default)) | |
55 )) | |
56 | |
57 (defvar srecode-read-major-mode-history nil | |
58 "History for `srecode-read-variable-name'.") | |
59 | |
60 (defun srecode-read-major-mode-name (prompt &optional initial hist default) | |
61 "Read in the name of a desired `major-mode'. | |
62 PROMPT is the prompt to use. | |
63 INITIAL is the initial string. | |
64 HIST is the history value, otherwise `srecode-read-variable-name-history' | |
65 is used. | |
66 DEFAULT is the default if RET is hit." | |
67 (completing-read prompt obarray | |
68 (lambda (s) (string-match "-mode$" (symbol-name s))) | |
69 nil initial (or hist 'srecode-read-major-mode-history)) | |
70 ) | |
71 | |
72 (defun srecode-semantic-handle-:srt (dict) | |
73 "Add macros into the dictionary DICT based on the current SRT file. | |
74 Adds the following: | |
75 ESCAPE_START - This files value of escape_start | |
76 ESCAPE_END - This files value of escape_end | |
77 MODE - The mode of this buffer. If not declared yet, guess." | |
78 (let* ((es (semantic-find-first-tag-by-name "escape_start" (current-buffer))) | |
79 (ee (semantic-find-first-tag-by-name "escape_end" (current-buffer))) | |
80 (mode-var (semantic-find-first-tag-by-name "mode" (current-buffer))) | |
81 (mode (if mode-var | |
82 (semantic-tag-variable-default mode-var) | |
83 nil)) | |
84 ) | |
85 (srecode-dictionary-set-value dict "ESCAPE_START" | |
86 (if es | |
87 (car (semantic-tag-variable-default es)) | |
88 "{{")) | |
89 (srecode-dictionary-set-value dict "ESCAPE_END" | |
90 (if ee | |
91 (car (semantic-tag-variable-default ee)) | |
92 "}}")) | |
93 (when (not mode) | |
94 (let* ((fname (file-name-nondirectory | |
95 (buffer-file-name (current-buffer)))) | |
96 ) | |
97 (when (string-match "-\\(\\w+\\)\\.srt" fname) | |
98 (setq mode (concat (match-string 1 fname) "-mode"))))) | |
99 | |
100 (when mode | |
101 (srecode-dictionary-set-value dict "MAJORMODE" mode)) | |
102 | |
103 )) | |
104 | |
105 (provide 'srecode/srt) | |
106 | |
105377 | 107 ;; arch-tag: fb69da04-0bd6-48fe-b935-f8668420ecaf |
104498 | 108 ;;; srecode/srt.el ends here |