Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(294)

Unified Diff: src/d8-readline.cc

Issue 1250223002: Remove readline support from d8. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/d8.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/d8-readline.cc
diff --git a/src/d8-readline.cc b/src/d8-readline.cc
deleted file mode 100644
index e57b7567e3b5dd4a36701a8e62dcbad371ed5cc2..0000000000000000000000000000000000000000
--- a/src/d8-readline.cc
+++ /dev/null
@@ -1,155 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <stdio.h> // NOLINT
-#include <string.h> // NOLINT
-#include <readline/readline.h> // NOLINT
-#include <readline/history.h> // NOLINT
-
-// The readline includes leaves RETURN defined which breaks V8 compilation.
-#undef RETURN
-
-#include "src/d8.h"
-
-// There are incompatibilities between different versions and different
-// implementations of readline. This smooths out one known incompatibility.
-#if RL_READLINE_VERSION >= 0x0500
-#define completion_matches rl_completion_matches
-#endif
-
-
-namespace v8 {
-
-
-class ReadLineEditor: public LineEditor {
- public:
- ReadLineEditor() : LineEditor(LineEditor::READLINE, "readline") { }
- virtual Local<String> Prompt(const char* prompt);
- virtual bool Open(Isolate* isolate);
- virtual bool Close();
- virtual void AddHistory(const char* str);
-
- static const char* kHistoryFileName;
- static const int kMaxHistoryEntries;
-
- private:
-#ifndef V8_SHARED
- static char** AttemptedCompletion(const char* text, int start, int end);
- static char* CompletionGenerator(const char* text, int state);
-#endif // V8_SHARED
- static char kWordBreakCharacters[];
-
- Isolate* isolate_;
-};
-
-
-static ReadLineEditor read_line_editor;
-char ReadLineEditor::kWordBreakCharacters[] = {' ', '\t', '\n', '"',
- '\\', '\'', '`', '@', '.', '>', '<', '=', ';', '|', '&', '{', '(',
- '\0'};
-
-
-const char* ReadLineEditor::kHistoryFileName = ".d8_history";
-const int ReadLineEditor::kMaxHistoryEntries = 1000;
-
-
-bool ReadLineEditor::Open(Isolate* isolate) {
- isolate_ = isolate;
-
- rl_initialize();
-
-#ifdef V8_SHARED
- // Don't do completion on shared library mode
- // http://cnswww.cns.cwru.edu/php/chet/readline/readline.html#SEC24
- rl_bind_key('\t', rl_insert);
-#else
- rl_attempted_completion_function = AttemptedCompletion;
-#endif // V8_SHARED
-
- rl_completer_word_break_characters = kWordBreakCharacters;
- rl_bind_key('\t', rl_complete);
- using_history();
- stifle_history(kMaxHistoryEntries);
- return read_history(kHistoryFileName) == 0;
-}
-
-
-bool ReadLineEditor::Close() {
- return write_history(kHistoryFileName) == 0;
-}
-
-
-Local<String> ReadLineEditor::Prompt(const char* prompt) {
- char* result = NULL;
- result = readline(prompt);
- if (result == NULL) return Local<String>();
- AddHistory(result);
- return String::NewFromUtf8(isolate_, result, NewStringType::kNormal)
- .ToLocalChecked();
-}
-
-
-void ReadLineEditor::AddHistory(const char* str) {
- // Do not record empty input.
- if (strlen(str) == 0) return;
- // Remove duplicate history entry.
- history_set_pos(history_length-1);
- if (current_history()) {
- do {
- if (strcmp(current_history()->line, str) == 0) {
- remove_history(where_history());
- break;
- }
- } while (previous_history());
- }
- add_history(str);
-}
-
-
-#ifndef V8_SHARED
-char** ReadLineEditor::AttemptedCompletion(const char* text,
- int start,
- int end) {
- char** result = completion_matches(text, CompletionGenerator);
- rl_attempted_completion_over = true;
- return result;
-}
-
-
-char* ReadLineEditor::CompletionGenerator(const char* text, int state) {
- static unsigned current_index;
- static Global<Array> current_completions;
- Isolate* isolate = read_line_editor.isolate_;
- HandleScope scope(isolate);
- Local<Array> completions;
- if (state == 0) {
- Local<String> full_text =
- String::NewFromUtf8(isolate, rl_line_buffer, NewStringType::kNormal,
- rl_point)
- .ToLocalChecked();
- completions = Shell::GetCompletions(
- isolate, String::NewFromUtf8(isolate, text, NewStringType::kNormal)
- .ToLocalChecked(),
- full_text);
- current_completions.Reset(isolate, completions);
- current_index = 0;
- } else {
- completions = Local<Array>::New(isolate, current_completions);
- }
- if (current_index < completions->Length()) {
- Local<Context> context(isolate->GetCurrentContext());
- Local<Integer> index = Integer::New(isolate, current_index);
- Local<Value> str_obj = completions->Get(context, index).ToLocalChecked();
- current_index++;
- String::Utf8Value str(str_obj);
- return strdup(*str);
- } else {
- current_completions.Reset();
- return NULL;
- }
-}
-#endif // V8_SHARED
-
-
-} // namespace v8
« no previous file with comments | « src/d8.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698