Linux vps-61133.fhnet.fr 4.9.0-19-amd64 #1 SMP Debian 4.9.320-2 (2022-06-30) x86_64
Apache/2.4.25 (Debian)
Server IP : 93.113.207.21 & Your IP : 216.73.216.35
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
html_old /
btm2000.bak /
includes /
ace /
Delete
Unzip
Name
Size
Permission
Date
Action
snippets
[ DIR ]
drwxr-xr-x
2025-11-25 13:47
ace.js
662.35
KB
-rw-r--r--
2025-11-25 13:48
ext-beautify.js
8.08
KB
-rw-r--r--
2025-11-25 13:48
ext-chromevox.js
13.32
KB
-rw-r--r--
2025-11-25 13:48
ext-elastic_tabstops_lite.js
8.55
KB
-rw-r--r--
2025-11-25 13:48
ext-emmet.js
42.22
KB
-rw-r--r--
2025-11-25 13:48
ext-error_marker.js
141
B
-rw-r--r--
2025-11-25 13:48
ext-keybinding_menu.js
5.72
KB
-rw-r--r--
2025-11-25 13:48
ext-language_tools.js
66.45
KB
-rw-r--r--
2025-11-25 13:48
ext-linking.js
1.76
KB
-rw-r--r--
2025-11-25 13:48
ext-modelist.js
5.99
KB
-rw-r--r--
2025-11-25 13:48
ext-old_ie.js
15.78
KB
-rw-r--r--
2025-11-25 13:48
ext-searchbox.js
16.2
KB
-rw-r--r--
2025-11-25 13:48
ext-settings_menu.js
20.67
KB
-rw-r--r--
2025-11-25 13:48
ext-spellcheck.js
2.35
KB
-rw-r--r--
2025-11-25 13:48
ext-split.js
7.22
KB
-rw-r--r--
2025-11-25 13:48
ext-static_highlight.js
4.91
KB
-rw-r--r--
2025-11-25 13:48
ext-statusbar.js
1.68
KB
-rw-r--r--
2025-11-25 13:48
ext-textarea.js
15.9
KB
-rw-r--r--
2025-11-25 13:48
ext-themelist.js
2.44
KB
-rw-r--r--
2025-11-25 13:48
ext-whitespace.js
6.07
KB
-rw-r--r--
2025-11-25 13:48
keybinding-emacs.js
40.08
KB
-rw-r--r--
2025-11-25 13:48
keybinding-vim.js
201.11
KB
-rw-r--r--
2025-11-25 13:48
mode-abap.js
8.87
KB
-rw-r--r--
2025-11-25 13:48
mode-abc.js
8.85
KB
-rw-r--r--
2025-11-25 13:48
mode-actionscript.js
24.06
KB
-rw-r--r--
2025-11-25 13:48
mode-ada.js
2.71
KB
-rw-r--r--
2025-11-25 13:48
mode-apache_conf.js
18.61
KB
-rw-r--r--
2025-11-25 13:48
mode-applescript.js
9.34
KB
-rw-r--r--
2025-11-25 13:48
mode-asciidoc.js
13.47
KB
-rw-r--r--
2025-11-25 13:48
mode-assembly_x86.js
11.44
KB
-rw-r--r--
2025-11-25 13:48
mode-autohotkey.js
65.67
KB
-rw-r--r--
2025-11-25 13:48
mode-batchfile.js
8.04
KB
-rw-r--r--
2025-11-25 13:48
mode-bro.js
10.78
KB
-rw-r--r--
2025-11-25 13:48
mode-c9search.js
9.46
KB
-rw-r--r--
2025-11-25 13:48
mode-c_cpp.js
18.05
KB
-rw-r--r--
2025-11-25 13:48
mode-cirru.js
5.83
KB
-rw-r--r--
2025-11-25 13:48
mode-clojure.js
12.46
KB
-rw-r--r--
2025-11-25 13:48
mode-cobol.js
3.29
KB
-rw-r--r--
2025-11-25 13:48
mode-coffee.js
14.03
KB
-rw-r--r--
2025-11-25 13:48
mode-coldfusion.js
101.72
KB
-rw-r--r--
2025-11-25 13:48
mode-csharp.js
16.08
KB
-rw-r--r--
2025-11-25 13:48
mode-css.js
30.18
KB
-rw-r--r--
2025-11-25 13:48
mode-curly.js
99.81
KB
-rw-r--r--
2025-11-25 13:48
mode-d.js
17.11
KB
-rw-r--r--
2025-11-25 13:48
mode-dart.js
23.84
KB
-rw-r--r--
2025-11-25 13:48
mode-diff.js
4.36
KB
-rw-r--r--
2025-11-25 13:48
mode-django.js
100.62
KB
-rw-r--r--
2025-11-25 13:48
mode-dockerfile.js
15.79
KB
-rw-r--r--
2025-11-25 13:48
mode-dot.js
13.51
KB
-rw-r--r--
2025-11-25 13:48
mode-drools.js
17.28
KB
-rw-r--r--
2025-11-25 13:48
mode-eiffel.js
4.84
KB
-rw-r--r--
2025-11-25 13:48
mode-ejs.js
117.48
KB
-rw-r--r--
2025-11-25 13:48
mode-elixir.js
22.76
KB
-rw-r--r--
2025-11-25 13:48
mode-elm.js
9.16
KB
-rw-r--r--
2025-11-25 13:48
mode-erlang.js
45.31
KB
-rw-r--r--
2025-11-25 13:48
mode-forth.js
10.98
KB
-rw-r--r--
2025-11-25 13:48
mode-fortran.js
14.72
KB
-rw-r--r--
2025-11-25 13:48
mode-ftl.js
49.7
KB
-rw-r--r--
2025-11-25 13:48
mode-gcode.js
2.78
KB
-rw-r--r--
2025-11-25 13:48
mode-gherkin.js
4.59
KB
-rw-r--r--
2025-11-25 13:48
mode-gitignore.js
1.45
KB
-rw-r--r--
2025-11-25 13:48
mode-glsl.js
21.1
KB
-rw-r--r--
2025-11-25 13:48
mode-gobstones.js
34.77
KB
-rw-r--r--
2025-11-25 13:48
mode-golang.js
13.5
KB
-rw-r--r--
2025-11-25 13:48
mode-graphqlschema.js
6.38
KB
-rw-r--r--
2025-11-25 13:48
mode-groovy.js
37.69
KB
-rw-r--r--
2025-11-25 13:48
mode-haml.js
63.54
KB
-rw-r--r--
2025-11-25 13:48
mode-handlebars.js
101.37
KB
-rw-r--r--
2025-11-25 13:48
mode-haskell.js
16.72
KB
-rw-r--r--
2025-11-25 13:48
mode-haskell_cabal.js
4.15
KB
-rw-r--r--
2025-11-25 13:48
mode-haxe.js
11.96
KB
-rw-r--r--
2025-11-25 13:48
mode-hjson.js
10.77
KB
-rw-r--r--
2025-11-25 13:48
mode-html.js
98.26
KB
-rw-r--r--
2025-11-25 13:48
mode-html_elixir.js
123.61
KB
-rw-r--r--
2025-11-25 13:48
mode-html_ruby.js
118.22
KB
-rw-r--r--
2025-11-25 13:48
mode-ini.js
4.58
KB
-rw-r--r--
2025-11-25 13:48
mode-io.js
9.17
KB
-rw-r--r--
2025-11-25 13:48
mode-jack.js
10.71
KB
-rw-r--r--
2025-11-25 13:48
mode-jade.js
86.1
KB
-rw-r--r--
2025-11-25 13:48
mode-java.js
36.31
KB
-rw-r--r--
2025-11-25 13:48
mode-javascript.js
30.68
KB
-rw-r--r--
2025-11-25 13:48
mode-json.js
9.93
KB
-rw-r--r--
2025-11-25 13:48
mode-jsoniq.js
320.04
KB
-rw-r--r--
2025-11-25 13:48
mode-jsp.js
56.89
KB
-rw-r--r--
2025-11-25 13:48
mode-jsx.js
13.05
KB
-rw-r--r--
2025-11-25 13:48
mode-julia.js
11.61
KB
-rw-r--r--
2025-11-25 13:48
mode-kotlin.js
23.86
KB
-rw-r--r--
2025-11-25 13:48
mode-latex.js
7.21
KB
-rw-r--r--
2025-11-25 13:48
mode-lean.js
9.46
KB
-rw-r--r--
2025-11-25 13:48
mode-less.js
34.33
KB
-rw-r--r--
2025-11-25 13:48
mode-liquid.js
49.28
KB
-rw-r--r--
2025-11-25 13:48
mode-lisp.js
3.16
KB
-rw-r--r--
2025-11-25 13:48
mode-live_script.js
26.71
KB
-rw-r--r--
2025-11-25 13:48
mode-livescript.js
7.92
KB
-rw-r--r--
2025-11-25 13:48
mode-logiql.js
10.35
KB
-rw-r--r--
2025-11-25 13:48
mode-lsl.js
30.83
KB
-rw-r--r--
2025-11-25 13:48
mode-lua.js
14.15
KB
-rw-r--r--
2025-11-25 13:48
mode-luapage.js
114.33
KB
-rw-r--r--
2025-11-25 13:48
mode-lucene.js
2.07
KB
-rw-r--r--
2025-11-25 13:48
mode-makefile.js
12.81
KB
-rw-r--r--
2025-11-25 13:48
mode-markdown.js
110.88
KB
-rw-r--r--
2025-11-25 13:48
mode-mask.js
69.49
KB
-rw-r--r--
2025-11-25 13:48
mode-matlab.js
22.58
KB
-rw-r--r--
2025-11-25 13:48
mode-mavens_mate_log.js
5.21
KB
-rw-r--r--
2025-11-25 13:48
mode-maze.js
8.85
KB
-rw-r--r--
2025-11-25 13:48
mode-mel.js
28.16
KB
-rw-r--r--
2025-11-25 13:48
mode-mips_assembler.js
9.33
KB
-rw-r--r--
2025-11-25 13:48
mode-mipsassembler.js
6.08
KB
-rw-r--r--
2025-11-25 13:48
mode-mushcode.js
11.77
KB
-rw-r--r--
2025-11-25 13:48
mode-mysql.js
8.48
KB
-rw-r--r--
2025-11-25 13:48
mode-nix.js
22.78
KB
-rw-r--r--
2025-11-25 13:48
mode-nsis.js
14.16
KB
-rw-r--r--
2025-11-25 13:48
mode-objectivec.js
63.48
KB
-rw-r--r--
2025-11-25 13:48
mode-ocaml.js
20.95
KB
-rw-r--r--
2025-11-25 13:48
mode-pascal.js
7.43
KB
-rw-r--r--
2025-11-25 13:48
mode-perl.js
12.73
KB
-rw-r--r--
2025-11-25 13:48
mode-pgsql.js
78.37
KB
-rw-r--r--
2025-11-25 13:48
mode-php.js
588.2
KB
-rw-r--r--
2025-11-25 13:48
mode-pig.js
10.59
KB
-rw-r--r--
2025-11-25 13:48
mode-plain_text.js
757
B
-rw-r--r--
2025-11-25 13:48
mode-powershell.js
37.91
KB
-rw-r--r--
2025-11-25 13:48
mode-praat.js
17.09
KB
-rw-r--r--
2025-11-25 13:48
mode-prolog.js
13.75
KB
-rw-r--r--
2025-11-25 13:48
mode-properties.js
2.02
KB
-rw-r--r--
2025-11-25 13:48
mode-protobuf.js
21.22
KB
-rw-r--r--
2025-11-25 13:48
mode-python.js
8.52
KB
-rw-r--r--
2025-11-25 13:47
mode-r.js
9.41
KB
-rw-r--r--
2025-11-25 13:47
mode-razor.js
110.43
KB
-rw-r--r--
2025-11-25 13:47
mode-rdoc.js
6.64
KB
-rw-r--r--
2025-11-25 13:47
mode-rhtml.js
107.56
KB
-rw-r--r--
2025-11-25 13:47
mode-rst.js
5.52
KB
-rw-r--r--
2025-11-25 13:47
mode-ruby.js
18.45
KB
-rw-r--r--
2025-11-25 13:47
mode-rust.js
10.68
KB
-rw-r--r--
2025-11-25 13:47
mode-sass.js
18.32
KB
-rw-r--r--
2025-11-25 13:47
mode-scad.js
12.58
KB
-rw-r--r--
2025-11-25 13:47
mode-scala.js
37.8
KB
-rw-r--r--
2025-11-25 13:47
mode-scheme.js
6.83
KB
-rw-r--r--
2025-11-25 13:47
mode-scss.js
23.46
KB
-rw-r--r--
2025-11-25 13:47
mode-sh.js
14.17
KB
-rw-r--r--
2025-11-25 13:47
mode-sjs.js
36.65
KB
-rw-r--r--
2025-11-25 13:47
mode-smarty.js
103.22
KB
-rw-r--r--
2025-11-25 13:47
mode-snippets.js
6.62
KB
-rw-r--r--
2025-11-25 13:47
mode-soy_template.js
111.52
KB
-rw-r--r--
2025-11-25 13:47
mode-space.js
4.69
KB
-rw-r--r--
2025-11-25 13:47
mode-sparql.js
12.03
KB
-rw-r--r--
2025-11-25 13:47
mode-sql.js
3.03
KB
-rw-r--r--
2025-11-25 13:47
mode-sqlserver.js
22.76
KB
-rw-r--r--
2025-11-25 13:47
mode-stylus.js
20.5
KB
-rw-r--r--
2025-11-25 13:47
mode-svg.js
57.13
KB
-rw-r--r--
2025-11-25 13:47
mode-swift.js
12.91
KB
-rw-r--r--
2025-11-25 13:47
mode-swig.js
47.08
KB
-rw-r--r--
2025-11-25 13:47
mode-tcl.js
11.83
KB
-rw-r--r--
2025-11-25 13:47
mode-tex.js
4.82
KB
-rw-r--r--
2025-11-25 13:47
mode-text.js
1
B
-rw-r--r--
2025-11-25 13:47
mode-textile.js
3.87
KB
-rw-r--r--
2025-11-25 13:47
mode-toml.js
3.87
KB
-rw-r--r--
2025-11-25 13:47
mode-tsx.js
34.25
KB
-rw-r--r--
2025-11-25 13:47
mode-turtle.js
8.99
KB
-rw-r--r--
2025-11-25 13:47
mode-twig.js
103.92
KB
-rw-r--r--
2025-11-25 13:47
mode-typescript.js
33.82
KB
-rw-r--r--
2025-11-25 13:47
mode-vala.js
26.77
KB
-rw-r--r--
2025-11-25 13:47
mode-vbscript.js
7.25
KB
-rw-r--r--
2025-11-25 13:47
mode-velocity.js
107.39
KB
-rw-r--r--
2025-11-25 13:47
mode-verilog.js
3.86
KB
-rw-r--r--
2025-11-25 13:47
mode-vhdl.js
3.5
KB
-rw-r--r--
2025-11-25 13:47
mode-wollok.js
34.54
KB
-rw-r--r--
2025-11-25 13:47
mode-xml.js
22.97
KB
-rw-r--r--
2025-11-25 13:47
mode-xquery.js
317.31
KB
-rw-r--r--
2025-11-25 13:47
mode-yaml.js
8.79
KB
-rw-r--r--
2025-11-25 13:47
theme-ambiance.js
27.54
KB
-rw-r--r--
2025-11-25 13:47
theme-chaos.js
3.13
KB
-rw-r--r--
2025-11-25 13:47
theme-chrome.js
2.96
KB
-rw-r--r--
2025-11-25 13:47
theme-clouds.js
2.28
KB
-rw-r--r--
2025-11-25 13:47
theme-clouds_midnight.js
2.63
KB
-rw-r--r--
2025-11-25 13:47
theme-cobalt.js
2.58
KB
-rw-r--r--
2025-11-25 13:47
theme-crimson_editor.js
3.04
KB
-rw-r--r--
2025-11-25 13:47
theme-dawn.js
2.46
KB
-rw-r--r--
2025-11-25 13:47
theme-dreamweaver.js
3.41
KB
-rw-r--r--
2025-11-25 13:47
theme-eclipse.js
2.33
KB
-rw-r--r--
2025-11-25 13:47
theme-github.js
2.4
KB
-rw-r--r--
2025-11-25 13:47
theme-gob.js
2.61
KB
-rw-r--r--
2025-11-25 13:47
theme-gruvbox.js
1.85
KB
-rw-r--r--
2025-11-25 13:47
theme-idle_fingers.js
2.45
KB
-rw-r--r--
2025-11-25 13:47
theme-iplastic.js
6.63
KB
-rw-r--r--
2025-11-25 13:47
theme-katzenmilch.js
3.35
KB
-rw-r--r--
2025-11-25 13:47
theme-kr_theme.js
2.51
KB
-rw-r--r--
2025-11-25 13:47
theme-kuroir.js
2.19
KB
-rw-r--r--
2025-11-25 13:47
theme-merbivore.js
2.43
KB
-rw-r--r--
2025-11-25 13:47
theme-merbivore_soft.js
2.64
KB
-rw-r--r--
2025-11-25 13:47
theme-mono_industrial.js
3
KB
-rw-r--r--
2025-11-25 13:47
theme-monokai.js
2.59
KB
-rw-r--r--
2025-11-25 13:47
theme-pastel_on_dark.js
2.85
KB
-rw-r--r--
2025-11-25 13:47
theme-solarized_dark.js
2.49
KB
-rw-r--r--
2025-11-25 13:47
theme-solarized_light.js
2.55
KB
-rw-r--r--
2025-11-25 13:47
theme-sqlserver.js
3.16
KB
-rw-r--r--
2025-11-25 13:47
theme-terminal.js
3.13
KB
-rw-r--r--
2025-11-25 13:47
theme-textmate.js
2.84
KB
-rw-r--r--
2025-11-25 13:47
theme-tomorrow.js
2.77
KB
-rw-r--r--
2025-11-25 13:47
theme-tomorrow_night.js
3.03
KB
-rw-r--r--
2025-11-25 13:47
theme-tomorrow_night_blue.js
3.23
KB
-rw-r--r--
2025-11-25 13:47
theme-tomorrow_night_bright.js
3.71
KB
-rw-r--r--
2025-11-25 13:47
theme-tomorrow_night_eighties.js
3.42
KB
-rw-r--r--
2025-11-25 13:47
theme-twilight.js
2.72
KB
-rw-r--r--
2025-11-25 13:47
theme-vibrant_ink.js
2.4
KB
-rw-r--r--
2025-11-25 13:47
theme-xcode.js
2.11
KB
-rw-r--r--
2025-11-25 13:47
worker-coffee.js
220.38
KB
-rw-r--r--
2025-11-25 13:47
worker-css.js
290.28
KB
-rw-r--r--
2025-11-25 13:47
worker-html.js
330.32
KB
-rw-r--r--
2025-11-25 13:47
worker-javascript.js
337.14
KB
-rw-r--r--
2025-11-25 13:47
worker-json.js
71.04
KB
-rw-r--r--
2025-11-25 13:47
worker-lua.js
103.33
KB
-rw-r--r--
2025-11-25 13:47
worker-php.js
147.68
KB
-rw-r--r--
2025-11-25 13:47
worker-xml.js
110.19
KB
-rw-r--r--
2025-11-25 13:47
worker-xquery.js
3.36
MB
-rw-r--r--
2025-11-25 13:47
Save
Rename
ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"], function(require, exports, module) { "use strict"; var dom = require("../lib/dom"); var lang = require("../lib/lang"); var event = require("../lib/event"); var searchboxCss = "\ .ace_search {\ background-color: #ddd;\ color: #666;\ border: 1px solid #cbcbcb;\ border-top: 0 none;\ overflow: hidden;\ margin: 0;\ padding: 4px 6px 0 4px;\ position: absolute;\ top: 0;\ z-index: 99;\ white-space: normal;\ }\ .ace_search.left {\ border-left: 0 none;\ border-radius: 0px 0px 5px 0px;\ left: 0;\ }\ .ace_search.right {\ border-radius: 0px 0px 0px 5px;\ border-right: 0 none;\ right: 0;\ }\ .ace_search_form, .ace_replace_form {\ margin: 0 20px 4px 0;\ overflow: hidden;\ line-height: 1.9;\ }\ .ace_replace_form {\ margin-right: 0;\ }\ .ace_search_form.ace_nomatch {\ outline: 1px solid red;\ }\ .ace_search_field {\ border-radius: 3px 0 0 3px;\ background-color: white;\ color: black;\ border: 1px solid #cbcbcb;\ border-right: 0 none;\ box-sizing: border-box!important;\ outline: 0;\ padding: 0;\ font-size: inherit;\ margin: 0;\ line-height: inherit;\ padding: 0 6px;\ min-width: 17em;\ vertical-align: top;\ }\ .ace_searchbtn {\ border: 1px solid #cbcbcb;\ line-height: inherit;\ display: inline-block;\ padding: 0 6px;\ background: #fff;\ border-right: 0 none;\ border-left: 1px solid #dcdcdc;\ cursor: pointer;\ margin: 0;\ position: relative;\ box-sizing: content-box!important;\ color: #666;\ }\ .ace_searchbtn:last-child {\ border-radius: 0 3px 3px 0;\ border-right: 1px solid #cbcbcb;\ }\ .ace_searchbtn:disabled {\ background: none;\ cursor: default;\ }\ .ace_searchbtn:hover {\ background-color: #eef1f6;\ }\ .ace_searchbtn.prev, .ace_searchbtn.next {\ padding: 0px 0.7em\ }\ .ace_searchbtn.prev:after, .ace_searchbtn.next:after {\ content: \"\";\ border: solid 2px #888;\ width: 0.5em;\ height: 0.5em;\ border-width: 2px 0 0 2px;\ display:inline-block;\ transform: rotate(-45deg);\ }\ .ace_searchbtn.next:after {\ border-width: 0 2px 2px 0 ;\ }\ .ace_searchbtn_close {\ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\ border-radius: 50%;\ border: 0 none;\ color: #656565;\ cursor: pointer;\ font: 16px/16px Arial;\ padding: 0;\ height: 14px;\ width: 14px;\ top: 9px;\ right: 7px;\ position: absolute;\ }\ .ace_searchbtn_close:hover {\ background-color: #656565;\ background-position: 50% 100%;\ color: white;\ }\ .ace_button {\ margin-left: 2px;\ cursor: pointer;\ -webkit-user-select: none;\ -moz-user-select: none;\ -o-user-select: none;\ -ms-user-select: none;\ user-select: none;\ overflow: hidden;\ opacity: 0.7;\ border: 1px solid rgba(100,100,100,0.23);\ padding: 1px;\ box-sizing: border-box!important;\ color: black;\ }\ .ace_button:hover {\ background-color: #eee;\ opacity:1;\ }\ .ace_button:active {\ background-color: #ddd;\ }\ .ace_button.checked {\ border-color: #3399ff;\ opacity:1;\ }\ .ace_search_options{\ margin-bottom: 3px;\ text-align: right;\ -webkit-user-select: none;\ -moz-user-select: none;\ -o-user-select: none;\ -ms-user-select: none;\ user-select: none;\ clear: both;\ }\ .ace_search_counter {\ float: left;\ font-family: arial;\ padding: 0 8px;\ }"; var HashHandler = require("../keyboard/hash_handler").HashHandler; var keyUtil = require("../lib/keys"); var MAX_COUNT = 999; dom.importCssString(searchboxCss, "ace_searchbox"); var html = '<div class="ace_search right">\ <span action="hide" class="ace_searchbtn_close"></span>\ <div class="ace_search_form">\ <input class="ace_search_field" placeholder="Search for" spellcheck="false"></input>\ <span action="findPrev" class="ace_searchbtn prev"></span>\ <span action="findNext" class="ace_searchbtn next"></span>\ <span action="findAll" class="ace_searchbtn" title="Alt-Enter">All</span>\ </div>\ <div class="ace_replace_form">\ <input class="ace_search_field" placeholder="Replace with" spellcheck="false"></input>\ <span action="replaceAndFindNext" class="ace_searchbtn">Replace</span>\ <span action="replaceAll" class="ace_searchbtn">All</span>\ </div>\ <div class="ace_search_options">\ <span action="toggleReplace" class="ace_button" title="Toggel Replace mode"\ style="float:left;margin-top:-2px;padding:0 5px;">+</span>\ <span class="ace_search_counter"></span>\ <span action="toggleRegexpMode" class="ace_button" title="RegExp Search">.*</span>\ <span action="toggleCaseSensitive" class="ace_button" title="CaseSensitive Search">Aa</span>\ <span action="toggleWholeWords" class="ace_button" title="Whole Word Search">\\b</span>\ <span action="searchInSelection" class="ace_button" title="Search In Selection">S</span>\ </div>\ </div>'.replace(/> +/g, ">"); var SearchBox = function(editor, range, showReplaceForm) { var div = dom.createElement("div"); div.innerHTML = html; this.element = div.firstChild; this.setSession = this.setSession.bind(this); this.$init(); this.setEditor(editor); }; (function() { this.setEditor = function(editor) { editor.searchBox = this; editor.renderer.scroller.appendChild(this.element); this.editor = editor; }; this.setSession = function(e) { debugger this.searchRange = null; this.$syncOptions(true); } this.$initElements = function(sb) { this.searchBox = sb.querySelector(".ace_search_form"); this.replaceBox = sb.querySelector(".ace_replace_form"); this.searchOption = sb.querySelector("[action=searchInSelection]"); this.replaceOption = sb.querySelector("[action=toggleReplace]"); this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); this.searchInput = this.searchBox.querySelector(".ace_search_field"); this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); this.searchCounter = sb.querySelector(".ace_search_counter"); }; this.$init = function() { var sb = this.element; this.$initElements(sb); var _this = this; event.addListener(sb, "mousedown", function(e) { setTimeout(function(){ _this.activeInput.focus(); }, 0); event.stopPropagation(e); }); event.addListener(sb, "click", function(e) { var t = e.target || e.srcElement; var action = t.getAttribute("action"); if (action && _this[action]) _this[action](); else if (_this.$searchBarKb.commands[action]) _this.$searchBarKb.commands[action].exec(_this); event.stopPropagation(e); }); event.addCommandKeyListener(sb, function(e, hashId, keyCode) { var keyString = keyUtil.keyCodeToString(keyCode); var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); if (command && command.exec) { command.exec(_this); event.stopEvent(e); } }); this.$onChange = lang.delayedCall(function() { _this.find(false, false); }); event.addListener(this.searchInput, "input", function() { _this.$onChange.schedule(20); }); event.addListener(this.searchInput, "focus", function() { _this.activeInput = _this.searchInput; _this.searchInput.value && _this.highlight(); }); event.addListener(this.replaceInput, "focus", function() { _this.activeInput = _this.replaceInput; _this.searchInput.value && _this.highlight(); }); }; this.$closeSearchBarKb = new HashHandler([{ bindKey: "Esc", name: "closeSearchBar", exec: function(editor) { editor.searchBox.hide(); } }]); this.$searchBarKb = new HashHandler(); this.$searchBarKb.bindKeys({ "Ctrl-f|Command-f": function(sb) { var isReplace = sb.isReplace = !sb.isReplace; sb.replaceBox.style.display = isReplace ? "" : "none"; sb.replaceOption.checked = false; sb.$syncOptions(); sb.searchInput.focus(); }, "Ctrl-H|Command-Option-F": function(sb) { sb.replaceOption.checked = true; sb.$syncOptions(); sb.replaceInput.focus(); }, "Ctrl-G|Command-G": function(sb) { sb.findNext(); }, "Ctrl-Shift-G|Command-Shift-G": function(sb) { sb.findPrev(); }, "esc": function(sb) { setTimeout(function() { sb.hide();}); }, "Return": function(sb) { if (sb.activeInput == sb.replaceInput) sb.replace(); sb.findNext(); }, "Shift-Return": function(sb) { if (sb.activeInput == sb.replaceInput) sb.replace(); sb.findPrev(); }, "Alt-Return": function(sb) { if (sb.activeInput == sb.replaceInput) sb.replaceAll(); sb.findAll(); }, "Tab": function(sb) { (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); } }); this.$searchBarKb.addCommands([{ name: "toggleRegexpMode", bindKey: {win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/"}, exec: function(sb) { sb.regExpOption.checked = !sb.regExpOption.checked; sb.$syncOptions(); } }, { name: "toggleCaseSensitive", bindKey: {win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I"}, exec: function(sb) { sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; sb.$syncOptions(); } }, { name: "toggleWholeWords", bindKey: {win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W"}, exec: function(sb) { sb.wholeWordOption.checked = !sb.wholeWordOption.checked; sb.$syncOptions(); } }, { name: "toggleReplace", exec: function(sb) { sb.replaceOption.checked = !sb.replaceOption.checked; sb.$syncOptions(); } }, { name: "searchInSelection", exec: function(sb) { sb.searchOption.checked = !sb.searchRange; sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); sb.$syncOptions(); } }]); this.setSearchRange = function(range) { this.searchRange = range; if (range) { this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); } else if (this.searchRangeMarker) { this.editor.session.removeMarker(this.searchRangeMarker); this.searchRangeMarker = null; } } this.$syncOptions = function(preventScroll) { dom.setCssClass(this.replaceOption, "checked", this.searchRange); dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); this.replaceBox.style.display = this.replaceOption.checked ? "" : "none"; this.find(false, false, preventScroll); }; this.highlight = function(re) { this.editor.session.highlight(re || this.editor.$search.$options.re); this.editor.renderer.updateBackMarkers() }; this.find = function(skipCurrent, backwards, preventScroll) { var range = this.editor.find(this.searchInput.value, { skipCurrent: skipCurrent, backwards: backwards, wrap: true, regExp: this.regExpOption.checked, caseSensitive: this.caseSensitiveOption.checked, wholeWord: this.wholeWordOption.checked, preventScroll: preventScroll, range: this.searchRange }); var noMatch = !range && this.searchInput.value; dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); this.editor._emit("findSearchBox", { match: !noMatch }); this.highlight(); this.updateCounter(); }; this.updateCounter = function() { var editor = this.editor; var regex = editor.$search.$options.re; var all = 0; var before = 0 if (regex) { var value = this.searchRange ? editor.session.getTextRange(this.searchRange) : editor.getValue(); var offset = editor.session.doc.positionToIndex(editor.selection.anchor); if (this.searchRange) offset -= editor.session.doc.positionToIndex(this.searchRange.start); var last = regex.lastIndex = 0; var m; while ((m = regex.exec(value))) { all++; last = m.index; if (last <= offset) before++; if (all > MAX_COUNT) break if (!m[0]) { regex.lastIndex = last += 1; if (last >= value.length) break; } } } this.searchCounter.textContent = before + " of " + (all > MAX_COUNT ? MAX_COUNT + "+" : all); }; this.findNext = function() { this.find(true, false); }; this.findPrev = function() { this.find(true, true); }; this.findAll = function(){ var range = this.editor.findAll(this.searchInput.value, { regExp: this.regExpOption.checked, caseSensitive: this.caseSensitiveOption.checked, wholeWord: this.wholeWordOption.checked }); var noMatch = !range && this.searchInput.value; dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); this.editor._emit("findSearchBox", { match: !noMatch }); this.highlight(); this.hide(); }; this.replace = function() { if (!this.editor.getReadOnly()) this.editor.replace(this.replaceInput.value); }; this.replaceAndFindNext = function() { if (!this.editor.getReadOnly()) { this.editor.replace(this.replaceInput.value); this.findNext() } }; this.replaceAll = function() { if (!this.editor.getReadOnly()) this.editor.replaceAll(this.replaceInput.value); }; this.hide = function() { this.active = false; this.setSearchRange(null) this.editor.off("changeSession", this.setSession); this.element.style.display = "none"; this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); this.editor.focus(); }; this.show = function(value, isReplace) { this.active = true; this.editor.on("changeSession", this.setSession); this.element.style.display = ""; this.replaceOption.checked = isReplace; if (value) this.searchInput.value = value; this.searchInput.focus(); this.searchInput.select(); this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); this.$syncOptions(true); }; this.isFocused = function() { var el = document.activeElement; return el == this.searchInput || el == this.replaceInput; } }).call(SearchBox.prototype); exports.SearchBox = SearchBox; exports.Search = function(editor, isReplace) { var sb = editor.searchBox || new SearchBox(editor); sb.show(editor.session.getTextRange(), isReplace); }; }); (function() { ace.require(["ace/ext/searchbox"], function() {}); })();