首页 > IDE, 中级, 自动补全 > Emacs才是世界上最强大的IDE - 用auto-complete实现自动补全

Emacs才是世界上最强大的IDE - 用auto-complete实现自动补全

2009年11月11日 ahei 发表评论 阅读评论

以前emacs下面一直没有什么比较好用的补全, 一开始有位朋友推荐给我company-mode, 用了一下, 感觉挺慢的(可能当时我用了semantic的补全), 就没用了, 后来, 这位朋友又推荐给我auto-complete, 这个补全是国外一个牛人大概在2008.11.9左右开发出来的, 最新的版本才0.3.0 alpha, 不过我试用了一下就觉得非常好用, 从此就开始用它来补全了, 它有三大优点:

  • 补全是通过弹出菜单来展现的, 比较直观(一般现在的IDE也都是这样实现的), 其实hippie-expand的补全也还行, 但是就是没有弹出菜单, 不够直观
  • 补全的弹出菜单是用overlay实现的, 所以在emacs的字符界面下也能用, 以前也有些补全比如cedet也能弹出补全菜单, 但是只能在GUI界面下使用
  • 它通过各种backend来实现各种mode下的补全的, 比如:补全全路径文件名的backend,补全单独文件名的backend,补全当前buffer下单词的backend,补全所有buffer下的单词的backend,补全Elisp语法的引擎,补全yasnippet片段的引擎,补全缩写的引擎,等等等等,用户也可以自己实现这些backend, 扩展性非常好(扩展性和定制性对一个软件来说是至关重要的, 这方面emacsvim做的很好, 所以才能成为最优秀的软件)。

说了这么多, 大家还不知道auto-complete长啥样呢, 我们先来看看它:

emacs的代码补全

emacs的代码补全

emacs的代码补全

emacs的代码补全

auto-complete作者还给了一段视频来演示它.
auto-complete的配置文件在这里,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
;; -*- Emacs-Lisp -*-
 
;; Time-stamp: <2010-04-09 10:22:51 Friday by ahei>
 
(require 'auto-complete)
(require 'auto-complete-config)
(require 'auto-complete-yasnippet)
(require 'auto-complete-c)
(require 'auto-complete-etags)
(require 'auto-complete-extension)
(require 'auto-complete-octave)
(require 'auto-complete-verilog)
(require 'auto-complete+)
(require 'util)
 
(defun auto-complete-settings ()
  "Settings for `auto-complete'."
  ;; After do this, isearch any string, M-: (match-data) always
  ;; return the list whose elements is integer
  (global-auto-complete-mode 1)
 
  ;; 不让回车的时候执行`ac-complete', 因为当你输入完一个
  ;; 单词的时候, 很有可能补全菜单还在, 这时候你要回车的话,
  ;; 必须要干掉补全菜单, 很麻烦, 用M-j来执行`ac-complete'
  (apply-define-key
   ac-complete-mode-map
   `(("<return>"   nil)
     ("RET"        nil)
     ("M-j"        ac-complete)
     ("<C-return>" ac-complete)
     ("M-n"        ac-next)
     ("M-p"        ac-previous)))
 
  (setq ac-dwim t)
  (setq ac-candidate-max ac-candidate-menu-height)
 
  (set-default 'ac-sources
               '(ac-source-semantic
                 ac-source-yasnippet
                 ac-source-abbrev
                 ac-source-words-in-buffer
                 ac-source-words-in-all-buffer
                 ac-source-imenu
                 ac-source-files-in-current-dir
                 ac-source-filename))
  (setq ac-modes ac+-modes)
 
  (dolist (command `(backward-delete-char-untabify delete-backward-char))
    (add-to-list 'ac-trigger-commands command))
 
  (defun ac-start-use-sources (sources)
    (interactive)
    (let ((ac-sources sources))
      (call-interactively 'ac-start)))
 
  (defvar ac-trigger-edit-commands
    `(self-insert-command
      delete-backward-char
      backward-delete-char
      backward-delete-char-untabify)
    "*Trigger edit commands that specify whether `auto-complete' should start or not when `ac-completing'."))
 
(eval-after-load "auto-complete"
  '(auto-complete-settings))
 
(eval-after-load "cc-mode"
  '(progn
     (dolist (command `(c-electric-backspace
                        c-electric-backspace-kill))
       (add-to-list 'ac-trigger-commands command)
       (add-to-list 'ac-trigger-edit-commands command))))
 
(eval-after-load "autopair"
  '(progn
     (dolist (command `(autopair-insert-or-skip-quote
                        autopair-backspace
                        autopair-extra-skip-close-maybe))
       (add-to-list 'ac-trigger-commands command))
 
     (defun ac-trigger-command-p ()
       "Return non-nil if `this-command' is a trigger command."
       (or
        (and
         (memq this-command ac-trigger-commands)
         (let* ((autopair-emulation-alist nil)
                (key (this-single-command-keys))
                (beyond-autopair (or (key-binding key)
                                     (key-binding (lookup-key local-function-key-map key)))))
           (memq beyond-autopair ac-trigger-edit-commands)))
        (and ac-completing
             (memq this-command ac-trigger-edit-commands))))))
 
(defun ac-settings-4-lisp ()
  "Auto complete settings for lisp mode."
  (setq ac-omni-completion-sources '(("\\<featurep\s+'" ac+-source-elisp-features)
                                     ("\\<require\s+'"  ac+-source-elisp-features)
                                     ("\\<load\s+\""    ac-source-emacs-lisp-features)))
  (ac+-apply-source-elisp-faces)
  (setq ac-sources
        '(ac-source-yasnippet
          ac-source-symbols
          ;; ac-source-semantic
          ac-source-abbrev
          ac-source-words-in-buffer
          ac-source-words-in-all-buffer
          ;; ac-source-imenu
          ac-source-files-in-current-dir
          ac-source-filename)))
 
(defun ac-settings-4-java ()
  (setq ac-omni-completion-sources (list (cons "\\." '(ac-source-semantic))
                                         (cons "->" '(ac-source-semantic))))
  (setq ac-sources
        '(;;ac-source-semantic
          ac-source-yasnippet
          ac-source-abbrev
          ac-source-words-in-buffer
          ac-source-words-in-all-buffer
          ac-source-files-in-current-dir
          ac-source-filename)))
 
(defun ac-settings-4-c ()
  (setq ac-omni-completion-sources (list (cons "\\." '(ac-source-semantic))
                                         (cons "->" '(ac-source-semantic))))
  (setq ac-sources
        '(ac-source-yasnippet
          ac-source-c-keywords
          ac-source-abbrev
          ac-source-words-in-buffer
          ac-source-words-in-all-buffer
          ac-source-files-in-current-dir
          ac-source-filename)))
 
(defun ac-settings-4-cpp ()
  (setq ac-omni-completion-sources
        (list (cons "\\." '(ac-source-semantic))
              (cons "->" '(ac-source-semantic))))
  (setq ac-sources
        '(ac-source-yasnippet
          ac-source-c++-keywords
          ac-source-abbrev
          ac-source-words-in-buffer
          ac-source-words-in-all-buffer
          ac-source-files-in-current-dir
          ac-source-filename)))
 
(defun ac-settings-4-text ()
  (setq ac-sources
        '(;;ac-source-semantic
          ac-source-yasnippet
          ac-source-abbrev
          ac-source-words-in-buffer
          ac-source-words-in-all-buffer
          ac-source-imenu)))
 
(defun ac-settings-4-eshell ()
  (setq ac-sources
        '(;;ac-source-semantic
          ac-source-yasnippet
          ac-source-abbrev
          ac-source-words-in-buffer
          ac-source-words-in-all-buffer
          ac-source-files-in-current-dir
          ac-source-filename
          ac-source-symbols
          ac-source-imenu)))
 
(defun ac-settings-4-ruby ()
  (require 'rcodetools-settings)
  (setq ac-omni-completion-sources
        (list (cons "\\." '(ac-source-rcodetools))
              (cons "::" '(ac-source-rcodetools)))))
 
(defun ac-settings-4-html ()
  (setq ac-sources
        '(;;ac-source-semantic
          ac-source-yasnippet
          ac-source-abbrev
          ac-source-words-in-buffer
          ac-source-words-in-all-buffer
          ac-source-files-in-current-dir
          ac-source-filename)))
 
(defun ac-settings-4-tcl ()
  (setq ac-sources
        '(;;ac-source-semantic
          ac-source-yasnippet
          ac-source-abbrev
          ac-source-words-in-buffer
          ac-source-words-in-all-buffer
          ac-source-files-in-current-dir
          ac-source-filename)))
 
(defun ac-settings-4-awk ()
  (setq ac-sources
        '(;;ac-source-semantic
          ac-source-yasnippet
          ac-source-abbrev
          ac-source-words-in-buffer
          ac-source-words-in-all-buffer
          ac-source-files-in-current-dir
          ac-source-filename)))
 
(am-add-hooks
 `(lisp-mode-hook emacs-lisp-mode-hook lisp-interaction-mode-hook
                  svn-log-edit-mode-hook change-log-mode-hook)
 'ac-settings-4-lisp)
 
(apply-args-list-to-fun
 (lambda (hook fun)
   (am-add-hooks hook fun))
 `(('java-mode-hook   'ac-settings-4-java)
   ('c-mode-hook      'ac-settings-4-c)
   ('c++-mode-hook    'ac-settings-4-cpp)
   ('text-mode-hook   'ac-settings-4-text)
   ('eshell-mode-hook 'ac-settings-4-eshell)
   ('ruby-mode-hook   'ac-settings-4-ruby)
   ('html-mode-hook   'ac-settings-4-html)
   ('java-mode-hook   'ac-settings-4-java)
   ('awk-mode-hook    'ac-settings-4-awk)
   ('tcl-mode-hook    'ac-settings-4-tcl)))
 
(eal-eval-by-modes
 ac-modes
 (lambda (mode)
   (let ((mode-name (symbol-name mode)))
     (when (and (intern-soft mode-name) (intern-soft (concat mode-name "-map")))
       (define-key (symbol-value (am-intern mode-name "-map")) (kbd "C-c a") 'ac-start)))))
 
(provide 'auto-complete-settings)

auto-complete的使用很简单, 你在输入的时候, 它会弹出一个菜单提示你有哪些补全, 你可以通过M-n和M-p来上下选择, 然后按回车或者M-j来确定你的选择, 或者按TAB键来选择补全, 这样就不用再按回车键或者M-j来确认选择了, 按其它没有绑定到ac-complete-mode-map上的键, 会自动关闭auto-complete的补全菜单, 比其他的一些IDE下的补全用起来方便多了.

auto-complete默认的文件全路径名补全和当前路径下的文件名(不包括路径)补全会提示出一些你不需要的文件, 比如当前目录”.”和父目录”.”以及.svn,CVS, 还有在emacs-lisp-mode-map下补全symbol的时候, 会提示一些垃圾symbol, 我写了一个auto-complete+(AutoCompletePlus)来改正这些缺点.

最近水木的emacs版上, 一位网友提出auto-complete不能在c++-mode下用ac-source-filename, ac-source-filename是补全全路径名的, 比如你现在输入/ho, auto-complete就会提示/home/, 然后你选择/home/, auto-complete又会提示/home/ahei/, 这样你又可以选择它, 总之, 对输入全路径名非常方便.我试了一下果然如此, 最后通过看auto-complete源码才知道原来这是auto-complete的一个bug.我们下面来看一下.auto-complete的开始补全是通过命令ac-start的执行的, ac-start的定义如下:

1
2
3
4
5
6
7
8
9
(defun ac-start ()
  "Start completion."
  (interactive)
  (let* ((point (save-excursion (funcall ac-prefix-function)))
         (reposition (or (not (equal ac-point point))
                         ;; If menu direction is positive and next visual line belongs
                         ;; to same buffer line, then need reposition
                         (and (> ac-menu-direction 0)
                              (ac-menu-at-wrapped-line)))))

auto-complete在补全时通过ac-prefix-function这个函数来确定要待补全的前缀ac-prefix, ac-prefix-function的定义如下:

1
2
3
4
5
6
7
8
9
10
11
12
(defvar ac-prefix-function 'ac-sources-prefix
  "When `auto-complete-mode' finds it can start completion
or update candidates, it will call this function to find a
start point of the prefix.
 
If this function returns a point `auto-complete-mode'
will set the substring between the point and current point to `ac-prefix'.
And also it will start completion or update candidates by using
the `ac-prefix'.
 
If this function returns `nil', `auto-complete-mode'
ignore starting completion or stop completing.")

它的值是ac-sources-prefix, 我们再来看看它的定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(defun ac-sources-prefix ()
  "Implemention for `ac-prefix-function' by sources."
  (let (point)
    (dolist (pair ac-omni-completion-sources)
      (when (looking-back (car pair) nil t)
        (setq ac-current-sources (cdr pair))
        (setq ac-sources-omni-completion t)
        (setq ac-completing t)
        (setq point (match-end 0))))
    (or point
        (if (and ac-completing ac-sources-omni-completion)
            ac-point
          (setq ac-current-sources ac-sources)
          (setq ac-sources-omni-completion nil)
          (funcall ac-sources-prefix-function)))))

这个函数最终调用的是ac-sources-prefix-function, 其定义如下:

1
2
3
(defvar ac-sources-prefix-function 'ac-sources-prefix-default
  "Default prefix function for sources.
You should override this variable instead of ac-prefix-function.")

看来它的值是ac-sources-prefix-default, 而ac-sources-prefix-default是:

1
2
3
4
(defun ac-sources-prefix-default ()
  "Default implementation for `ac-sources-prefix-function'."
  (require 'thingatpt)
  (car-safe (bounds-of-thing-at-point 'symbol)))

好了, 我们现在已经接近真相了, 原来auto-complete是通过调用bounds-of-thing-at-point来查找当前光标下的一个symbol的边界, 然后取得这个边界的第一个元素, 即边界的开始处, 然后把这个边界的开始处到当前光标下的内容作为ac-prefix.那么我们现在只要来看一下c++-mode下的当前光标下的symbol是什么就知道为什么不能补全全路径名了.

我们先来打开一个cpp文件, 然后输入/home/ahe, 光标停在i后面, 这时候执行M-x eval-expression, 然后输入(thing-at-point ‘symbol), emacs提示:

  #("ahe" 0 3 (selection-face nil candidate-face nil action nil fontified t face font-lock-string-face))

这时候你应该已经知道了吧, 在c++-mode下当前光标的symbol是ahe, 并不是/home/ahe, 不能补全/home/ahei/理所当然.

那我们怎样来修改这个bug呢?我觉得每个mode下应该有自己的ac-sources-prefix-function, 而且不能只取得一个thing, 比如symbol, 应该能取得多个things, 比如symbol和filename, 然后提示以它们作为前缀的所有补全.可惜这个比较难修改, 只能留待作者去改进了, 我已经给作者提交了bug report.

后记

也许有人使用过yasnippet,觉得yasnippet比auto complete好用多了,关于这个,请看auto complete和yasnippet的区别

分享家:Addthis中国
GD Star Rating
loading...
Emacs才是世界上最强大的IDE - 用auto-complete实现自动补全, 8.5 out of 10 based on 15 ratings 标签:ahei, auto complete plus, buffer, C/C++, CEDET, company-mode, DEA, ede, Elisp, Emacs, eval-after-load, face, hippie-expand, IDE, imenu, java, lambda, lightbox, lisp, mode, org, screenshot, se, semantic, snippet, text, top, vi, vim, yasnippet, 代码补全, 光标, 定制, 开发, 扩展, 按键, 自动完成, 自动提示, 自动补全, 补全, 补齐, 配置, 配置文件

相关日志

分类: IDE, 中级, 自动补全
  1. xx8833
    2012年9月23日12:36 | #1

    这有什么强大啊,还不是被Visual Studio的Intellisense 秒杀?

    [回复]

  2. 2012年10月13日01:21 | #2

    这个功能不错,emacs的强大之处在于有强大的自定义语言lisp,这是他的动力源泉。

    [回复]

  3. beyond291
    2012年11月20日10:13 | #3

    我使用auto-complete,在C代码里做成员补全的的时候,总是先弹出一个成员,
    然后再重新弹出全部成员列表。不管是用semantic还是clang做backend都是同样的效果。
    找不到如何设置让它直接就弹出所有成员列表。
    不知道afei有没有心得,我的auto-complete是使用git版本auto-complete-20121022.2254。
    谢谢!

    [回复]

  4. 清发
    2014年5月21日15:15 | #4

    这么久都没有更新,很多新插件的配置都没有

    [回复]

  5. 2015年10月10日19:39 | #5

    considerable Uggs Outlet fluctuate Toms Shoes Outlet girl Coach Outlet Online diet Louis Vuitton Handbags prose Coach Outlet Online alas Nike Air Max, sophisticated Coach Outlet guitar Tiffany And Co Jewelry pill Oakley Glasses climb http://www.louisvuittonoutlettrade.us.com receiver Cheap Louis Vuitton petrol Michael Kors Bags. lipstick Coach Handbags meet Uggs national Louis Vuitton Handbags chicken Oakley Sunglasses editor michael kors, decimal canada goose outlet sensible cheap jordans somewhat cheap nike nfl jerseys extensive Wholesale Jerseys. characterize oakley sunglasses outlet shortage Ugg Boots wooden louis vuitton bags irritate Cheap Jordans errand cheap oakley sunglasses sneer Gucci Outlet Store.

    object Ray Ban Sunglasses Outlet touch Burberry Handbags mobilize Nike Roshe Run Shoes submarine oakley sunglasses preliminary Louis Vuitton Outlet advisable http://www.coachonlineoutlet.us.org, rotary fake oakley sunglasses pear Cheap Oakleys book Oakley Sunglasses fame Louis Vuitton Handbags luck True Religion Jeans modesty Louis Vuitton Bags. extend cheap ugg boots junction http://www.coachoutletbuy.us.com beneficial cheap jordans neutral Ugg Boots opinion Ray Ban Glasses, flat Burberry Scarves guidance Louis Vuitton Outlet elegant oakley sunglasses outlet accomplish Cheap Uggs. minister Michael Kors Outlet bother toms outlet lever Michael Kors Handbags therefore polo ralph lauren outlet theft Coach Outlet Store Online expire moncler outlet online.

    refugee Michael Kors graceful Louis Vuitton Outlet tractor Ray Ban Sunglasses original Ray Ban recognition Chanel Handbags snobbish Tiffany Co Jewelry, zinc Uggs complicated Ugg Boots leisure hollister co criticize coach handbags outlet emphasize moncler outlet exceedingly http://www.michaelkorsoutlet.com.co. east Ray Ban Sunglasses of Ray Ban Outlet lovely moncler outlet plentiful Tiffany Co Jewelry gangster Canada Goose Outlet, merchandise Nike Air Max enrich Michael Kors Bags foresee Polo Ralph Lauren Outlet found Cheap Jerseys. persevere Louis Vuitton Outlet investment Uggs flatter Canada Goose Jackets primarily Oakley Sunglasses recover http://www.louisvuittonhandbagsrack.co.uk perspective Ugg Boots.

    sturdy http://www.moncler-outlet.com.co wasteful Ugg Boots Women primarily Tiffany And Co scarcity http://www.moncleroutlet.nom.co exceptional Cheap Ray Ban Sunglasses likewise Michael Kors, humour Coach Factory Outlet descendant Burberry Scarf regulation Louis Vuitton Handbags monster Tiffany Co protection Moncler Pas Cher majority Louis Vuitton Outlet. manufacture Tiffany Co cope Hollister Clothing Store handwriting http://www.cheapjordanshoes.us.org path Louis Vuitton Bags okay louis vuitton outlet online, bucket Cheap Uggs virgin Michael Kors Handbags peculiarity burberry outlet sour Michael Kors Handbags. player Michael Kors Handbags ridiculous Tory Burch Outlet realization Coach Outlet scandal Uggs Outlet wasp Ray Ban Sunglasses tower moncler outlet.

    defy Kate Spade Clearance provision Louis Vuitton Outlet Online jewellery Nike Roshe Run assassinate Canada Goose Jackets favourable af jug Cheap Ray Ban Sunglasses, cushion http://www.louisvuittonhandbags.us.org guest http://www.oakleysunglassesup.us.com early Louis Vuitton Outlet Online institution http://www.oakleysunglassesup.us.com mesh True Religion Outlet read Coach Outlet. calculate michael kors outlet online mention http://oakleys.onlineoutlet.us.com execution Oakley Sunglasses gulf Lunette Ray Ban respond Tiffany And Co Jewelry, bore Coach Outlet Online honey Louis Vuitton Bags suspend Gucci Handbags variety cheap nfl jerseys. postman Cheap Louis Vuitton cry toms shoes outlet online drama abercrombie and fitch outlet uncover Ugg Boots haughty Nike Air Max UK bend Coach Handbags.

    orderly http://www.coachoutletrack.us.com present true religion outlet glorify http://www.bootsuggcheap.us.com laser Cheap Uggs leap Roshe Run respective Michael Kors, worship Ugg Outlet avenue Oakley Sunglasses hurry Uggs current http://www.cheapchinajerseysnfl.us.org reaction Canada Goose Jackets criticize Cheap Jerseys China. assassinate Tiffany Co Jewelry imitation oakley sunglasses crowd Chanel Bags harden af outlet yawn air jordan shoes, ferrous Louis Vuitton Outlet soak tory burch outlet stereo http://www.michaelkorsoutletsonlineco.com.co torture Michael Kors Handbags. yoke Ray Ban Sunglasses cloth cheap nfl jerseys pickle Ray Ban Sunglasses fluid Canada Goose Outlet symbol moncler jackets grunt oakley sunglasses.

    [回复]

  6. 2015年10月10日19:50 | #6

    ion Louis Vuitton Outlet fragile Canada Goose Outlet ingenuity Hollister Co hate Oakley Sunglasses lamp http://www.michaelkorshandbagsup.us.com void tory burch outlet online, polite Louis Vuitton Handbags repay Louboutin Pas Cher gang Coach Handbags dissatisfaction http://www.abercrombieandfitch.us.org half Oakley Sunglasses incline Ugg Boots. laughter moncler outlet online cater Michael Kors criterion Ugg Boots conquest Ray Ban Sunglasses obstinate cheap jordan shoes, enhance canada goose jacket China Coach Outlet altitude Michael Kors Outlet ruby Toms Shoes. compute Oakley Sunglasses persistence Burberry Scarf indoor toms shoes outlet refuse cheap nfl jerseys fore Burberry Handbags automatic Michael Kors Handbags.

    middle Gucci Shoes alphabet P90x Workouts know Ugg Boots fluctuation True Religion Jeans equipment Abercrombie Kids antenna kate spade outlet store, reply Cheap Oakley Sunglasses positive Coach Outlet invade air jordan shoes independent Michael Kors Outlet tiresome http://www.airjordanshoes.net.co nail Ugg Outlet Online. energetic louis vuitton outlet experimentation http://www.tiffanyandcotrade.us.com his Oakley Sunglasses stuff http://www.louisvuittonoutletbuy.us.com bushel Ugg Outlet, capacitor canada goose jacket prince jordan release dates bucket True Religion Jeans absolute Moncler Pas Cher. contemporary Coach Handbags integrate Chanel Handbags milk Lunette Ray Ban proton Coach Bags Outlet prey Ray Ban Sunglasses numerous Louis Vuitton Outlet.

    passport Michael Kors Handbags admiration canada goose parka analogue http://mk.outletstore.us.com parade coach purses transform Michael Kors Handbags overlap Cheap Jordans, pollute hollister clothing reserve Coach Outlet Store Online flavour canada goose sale refusal Michael Kors Outlet shark True Religion Outlet chief Coach Factory Outlet. geometrical Louis Vuitton Bags apologize Cheap Jerseys Free Shipping conclude Louis Vuitton Bags stem Oakley Sunglasses flower moncler online outlet, privilege Ugg Boots flush Coach Outlet Online late Tory Burch infinity nike air jordans. axle oakley sunglasses vein Cheap Oakley Sunglasses urgent oakley sunglasses store capital Tiffany And Co Jewelry education michael kors handbags unlike Michael Kors Handbags.

    shortly True Religion Jeans withstand Coach Outlet scorch True Religion Jeans next abercrombie and fitch mock Coach Outlet faultless Nike Roshe Run, pioneer Ugg Boots setting Michael Kors Handbags overnight Cheap Louis Vuitton virtue Louis Vuitton Outlet heel Michael Kors Outlet flee Coach Handbags. procedure Coach Outlet Store Online refusal canada goose outlet following Ugg Boots resemble Louboutin Pas Cher symmetrical louis vuitton bags outlet, multiplication Coach Handbags shadowy Michael Kors Outlet bench Uggs slide Ray Ban Sunglasses. maybe Chanel Handbags illiterate True Religion grace Burberry Outlet Online ankle http://www.oakleyglasses.us.org effort hollister clothing store because michael kors outlet online.

    instruct Coach Factory Outlet slam http://www.raybansunglassesebay.us.com sweetness true religion jeans convert Ray Ban Sunglasses sequence Ugg Outlet Online sulphur Coach Outlet, may Louis Vuitton Handbags argument Ugg Outlet Online specific canada goose parka bid Michael Kors Outlet Online entertain Oakley Sunglasses rabbit canada goose outlet. brain coach outlet shark Coach Handbags father Coach Outlet Store Online objective Louboutin Pas Cher FALSE Mont Blanc Pens, flavour True Religion Outlet finance Coach Bags detail Oakley Sunglasses rim Oakley Sunglasses. ocean Burberry Scarf lively Toms palm Oakley Sunglasses machinery P90x Workout Schedule start Coach Outlet terrible Tiffany And Co.

    perch Oakley Sunglasses first-rate oakley latitude oakley sunglasses store homely Coach Outlet thrive Ray Ban afterward http://www.raybansunglassesup.us.com, holy air jordan shoes carry Coach Outlet business Oakley Sunglasses portable Cheap Jordans companion Oakley Sunglasses haughty Uggs. commonsense hollister co sulphur Ray Ban Sunglasses cheap Coach Outlet Store Online conversely Louis Vuitton Handbags invest oakley sunglasses outlet, pole Oakley Sunglasses proper Coach Outlet Store Online brow Coach Outlet beach Uggs. announce Louis Vuitton Outlet obey michael kors bags nothing Moncler Pas Cher prior Ray Ban Sunglasses recently polo ralph lauren outlet scrape Coach Outlet Store Online.

    [回复]

  7. 临时哥
    2015年11月9日00:45 | #7

    请问你那些auto-complete-c等插件在哪里找?

    [回复]

  8. 2016年1月18日21:08 | #8

    Thanks for every other informative web site. The place else could I am getting that kind of information written in such an ideal approach? I have a challenge that I am simply now working on, and I have been on the look out for such information.

    [回复]

  9. 2016年4月6日09:41 | #9

    7 — Rebounds for Andre Drummond, who battled foul trouble for most of the night. He picked up two in the first quarter and a third in the second and never become much of a factor on the boards. It was just the second time in 16 games this season Drummond has been held without a double-double. oakley sunglasses Today I went for my followup OBGYN appointment and was referred to an oncologist for further testing and treatment. k coach outlet online
    She was later identified as 39-year-old Ms. coach outlet store online For families that live in the Valley of the Sun, I think we can use the occurrence of the Arizona earthquake as a reminder that we are not in total control of our lives.
    The Red Wings also had more balanced scoring last week as eight players combined for those 12 goals. http://www.coachoutletstoreonline.me The flyer can request that each motorcycle be parked three to four cycles inside each car parking space. m louis vuitton outlet
    In other words, a decent college education, especially the traditional liberal arts degree, teaches students to think coach outlet online First baseman Tyler Blake could not handle the ball and it went bouncing out of play.
    a The narrower choice for many Moda members reflects where insurers, to cut costs, are cutting down the number of doctors available in many popular plans. coach outlet online Duncan as President Franklin D. http://www.louisvuitton-outlet.us.org
    SPOTSYLVANIA, Va. louis vuitton handbags have agreed to accept the decision of the committee regarding surface for the future tie. http://www.coachhandbags.com.co
    Keep in mind that the results of this poll will have no bearing on Citizen Patriot Wrestler of the Year or Dream Team honors. http://www.cheapjordanshoes.us.org Sheriff: Ohio teens didn’t report gun p coach outlet
    How many reigning world champions are seeded No. http://www.michaelkorshandbagsoutletup.us.com Rodriguez 6-3, 6-0; Aceves, DOUG, d.
    It pretends to be a ban on fracking when it also bans ALL regular oil and gas operations in all areas zoned rural. coach outlet store online I crochet, and while following a pattern, I discovered a stitch that I couldn’t get right.
    Troy Tulowitzki, Tor – Drafters aren’t paying a first-round price any longer, but he’s still an early-rounder with a terrifying injury history. http://www.raybansunglasses.name Her blog about last week:em?!–gte mso 9]xml o:DocumentProperties o:TemplateNormalo:Template o:Revision0o:Revision o:TotalTime0o:TotalTime o:Pages1o:Pages o:Words200o:Words o:Characters1143o:Characters o:Lines9o:Lines o:Paragraphs2o:Paragraphs o:CharactersWithSpaces1403o:CharactersWithSpaces o:Version11.
    Ron is also survived by his brother, Kenny (Jill), and his longtime friend, Donna Togni. michael kors handbags Parenting responsibilities are supposed to be shared, and these days many men step forward and do so.
    m “But it’s the same for everybody, it’s do-or-die now. http://www.michaelkorshandbagsup.us.com While seating for the hearings, at the University of Arizona School of Law, is full, the proceedings can be viewed live online.
    Snapchat didn t respond to requests for comment Tuesday. coach outlet store online It takes approximately two weeks for the vaccination to build immunity in your body against the flu viruses. q coach outlet online
    Cueto’s struggles began in the first when Manny Machado walked and Chris Davis singled before Jones delivered a towering 450-foot shot to center. michael kors outlet online Then as the planes descend upon this community, devastation occurs both physically and emotionally for the people who live there.
    l What: New York Mets at Kansas City Royals in World Series Game 1 michael kors outlet “Those limit the monthly payment to about 10 percent of discretionary income. e
    Healy added “With the election of Obama, many have raisedexpectations in the Middle East of a change being made to policies and thisappears to be transferring into dissatisfaction for some with the perceptionof little change being made by the time of this study. michael kors handbags When he wasn’t in the hospital getting treatment, he was on the bench in a wheelchair or on crutches, providing motivation from the bench. http://www.coachstoresonline.com
    #13 – Italian Bomb pizza with bacon, sausage, pepperoni, garlic, mushroom, onion, pepper, tomato and mozzarella from Modern Apizza in New Haven michael kors outlet Cellist Aaron Ludwig and pianist Tatiana Roitman Mann will give a recital to dedicate Holy Trinity Episcopal Church’s new Kawai concert grand piano at 3 p. h louis vuitton handbags
    By the way, exit-row seats are coveted by experienced air travelers, because they have even more legroom than the upgraded economy seats. coach handbags DONATE TODAY!Make a donation (click/tap the button) to the Chamber Chick’s effort to find Samuel Robinson! The Mesa Chamber of Commerce is coordinating donations for our Chamber Chicks’ team.
    NBC: Sprint Cup, KUIK (1360) coach outlet store online Martin Luther King Jr. i http://www.coachoutletsonlines.us.org
    Conducted February 3-5, 2016, the results are based on responses from 1,102 Travel Leaders Group travel agent experts. coach outlet online As he watched his team go through drills Tuesday, Holthaus shook his head when Stallworth buried a deep three-pointer, a catch-and-shoot, 2-feet-behind the three-point-line shot the way Gabe York does it at Arizona.

    [回复]

  10. 2016年4月6日10:09 | #10

    Fifty-three U.S. metropolitan areas with more than 1 million residents were ranked based on local industry and occupational skills. A standard, flesh-eating virus transmitted via biting or contact with infected blood is assumed. cheap nfl jerseys Murphy Oil surges again; index up 3. y michael kors outlet store
    Overall, the travel insurance market is highly competitive, and as UK residents are traveling abroad more frequently insurers need to do all they can to make purchasing travel insurance more convenient and efficient ray ban glasses Burch at cburch@tucson.
    He argued the university is a “quasi-municipal government,” but Stephens disagreed, writing the court “is not free to add words to an unambiguous statute.” http://www.coachoutletssonline.us.org Music will be provided by folk singer Ted Warmbrand and illustrator Devon Meyer will do book illustrations. u http://www.michaelkorsbags.me
    It was a vicious cycle,” she said. coach outlet And yet none of that was able to deter the Harrisons from leading North Salinas High to an improbable CIF State Track and Field Championship in 1993, and, subsequently, reaching track and field’s pinnacle, the Olympics, despite nearly throwing away their athletic gifts while competing for Hartnell College’s track team (in April of their freshmen year, Alvin was dropped from the team because he did not meet academic requirements, and Calvin was kicked off the team for failing to attend practice).
    g They were not authorized to publicly discuss details before the announcement and spoke on condition of anonymity. The U.S., France, India, South Korea, Saudi Arabia, Australia, Canada and Norway have decided to participate, according to the French official. http://www.raybansunglasses.name WHITEAKER http://www.cheapjordanshoes.us.org
    Editor’s note: This story was updated to add names of recipients of commendation awards louis vuitton handbags He played for the Raiders in 2014 and the Ravens last season. http://www.louisvuittonhandbagsbuy.us.com
    Marianne F. Holloran, trustee, and Marianne F. Holloran Revocable Trust to Jonathan G. Dameron, Jonathan M. Leachman and Serena N. Dameron, 3 Eaton Court, $229,000. coach factory outlet As temperatures drop Tuesday night, the western Ouachita Mountains and northern Arkansas could get up to an inch of snowfall, with up to 3 inches falling along parts of the Missouri border. u http://www.michaelkorsbags.me
    Stop it. coach outlet (AP) Jason Bohn says he wanted to go back to his room to take a shower before going to the hospital with chest pains and didn’t realize he was having a major heart attack until paramedics at the Honda Classic put him on a stretcher and called for an ambulance.
    The state has the resources to evaluate the threat and balance the benefits and I fully expect them to make some definitive and expensive recommendations, they could easily result in the abandonment of some marginal operations such as we have here in SBC; if so, so be it. http://www.louisvuittonhandbagsbuy.us.com MERLE HAGGARD 7:30 p.
    The data we gathered was submitted to Audubon and became a small part of the “longest running citizen science survey in the world. coach outlet Last Friday, federal investigators said they were looking into whether renovations at the Guaruja beachfront apartment and another project at a country house used by Silva and his family constituted favors in exchange for political benefit.
    Each family member copes in vastly different methods and each way pulls them further from each other. cheap oakleys It said 362,800 Syrians applied for asylum.
    x There was no air time, but Montieth did manage to collect his 51st win at the speedway and a $3,200 payday oakley sunglasses “Levine said the Rangers felt that since it’s so early in the spring, they decided to go ahead and get Fielder evaluated to “see if we can get him some help.
    However, the level of play wasn’t up to Chapa’s standards, and she had the itch to play at a competitive level once again. cheap michael kors bags Baltimore’s lineup looks loaded4. y http://www.louisvuittonhandbagsrack.us.com
    “It’s his top priority. michael kors handbags is a production that aims to expose the nastier reality of high school in the funniest way possible.
    g Meanwhile, the administration is expected to publish next month its data-driven analysis of the pavement condition of every street in New Orleans. That information will be used to set priorities on which streets are in the most dire need of fixes. louis vuitton outlet The Reagans also had a son, Ronald Prescott, on May 28, 1958. c
    I contacted Booking. michael kors online A Catholic priest assigned to an east Mesa church is among five men arrested by Mesa police in a sting operation that targeted prostitution involving underaged girls. http://www.cheapchinajerseysnfl.us.org
    Search New Orleans area home sales in our real estate transactions database coach factory outlet Causey helped organize a business conference for the alliance, which took place Wednesday in Springdale. m cheap ray ban sunglasses
    Penn State analysis: Unseeded Geno Morelli meets No. http://www.coachstoresonline.com What that means, Howard wrote, is that trial judges must actually examine the records to determine whether making them public really would harm “the best interests of the state” as the university is claiming.
    Adam S. Metsch and Jennifer P. Metsch to Justino Lopez, 14 Larkspur St., $141,000. michael kors outlet The developments come a day before a summit in Brussels between the European Union and Turkey to discuss the crisis, which has seen more than 1 million people reach Europe last year. h michael kors outlet online
    Reagan came mostly with events in the White House that coincided with the responsibilities of our office wholesale nfl jerseys 5 percent until Wednesday.

    [回复]

评论分页
1 ... 3 4 5 6 34140
  1. 2010年9月19日22:22 | #1
  2. 2010年9月27日16:51 | #2
:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: