src/jdk.internal.le/share/classes/jdk/internal/jline/console/KillRing.java
changeset 52974 ddbd9744a3d5
parent 52973 a659ccd1888d
parent 52961 d67b37917e82
child 52975 35e2bbea78b2
child 53179 760293737af0
--- a/src/jdk.internal.le/share/classes/jdk/internal/jline/console/KillRing.java	Tue Dec 11 11:45:43 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-/*
- * Copyright (c) 2002-2016, the original author or authors.
- *
- * This software is distributable under the BSD license. See the terms of the
- * BSD license in the documentation provided with this software.
- *
- * http://www.opensource.org/licenses/bsd-license.php
- */
-package jdk.internal.jline.console;
-
-/**
- * The kill ring class keeps killed text in a fixed size ring. In this
- * class we also keep record of whether or not the last command was a
- * kill or a yank. Depending on this, the class may behave
- * different. For instance, two consecutive kill-word commands fill
- * the same slot such that the next yank will return the two
- * previously killed words instead that only the last one. Likewise
- * yank pop requires that the previous command was either a yank or a
- * yank-pop.
- */
-public final class KillRing {
-
-    /**
-     * Default size is 60, like in emacs.
-     */
-    private static final int DEFAULT_SIZE = 60;
-
-    private final String[] slots;
-    private int head = 0;
-    private boolean lastKill = false;
-    private boolean lastYank = false;
-
-    /**
-     * Creates a new kill ring of the given size.
-     */
-    public KillRing(int size) {
-        slots = new String[size];
-    }
-
-    /**
-     * Creates a new kill ring of the default size. See {@link #DEFAULT_SIZE}.
-     */
-    public KillRing() {
-        this(DEFAULT_SIZE);
-    }
-
-    /**
-     * Resets the last-yank state.
-     */
-    public void resetLastYank() {
-        lastYank = false;
-    }
-
-    /**
-     * Resets the last-kill state.
-     */
-    public void resetLastKill() {
-        lastKill = false;
-    }
-
-    /**
-     * Returns {@code true} if the last command was a yank.
-     */
-    public boolean lastYank() {
-        return lastYank;
-    }
-
-    /**
-     * Adds the string to the kill-ring. Also sets lastYank to false
-     * and lastKill to true.
-     */
-    public void add(String str) {
-        lastYank = false;
-
-        if (lastKill) {
-            if (slots[head] != null) {
-                slots[head] += str;
-                return;
-            }
-        }
-
-        lastKill = true;
-        next();
-        slots[head] = str;
-    }
-
-    /**
-     * Adds the string to the kill-ring product of killing
-     * backwards. If the previous command was a kill text one then
-     * adds the text at the beginning of the previous kill to avoid
-     * that two consecutive backwards kills followed by a yank leaves
-     * things reversed.
-     */
-    public void addBackwards(String str) {
-        lastYank = false;
-
-        if (lastKill) {
-            if (slots[head] != null) {
-                slots[head] = str + slots[head];
-                return;
-            }
-        }
-
-        lastKill = true;
-        next();
-        slots[head] = str;
-    }
-
-    /**
-     * Yanks a previously killed text. Returns {@code null} if the
-     * ring is empty.
-     */
-    public String yank() {
-        lastKill = false;
-        lastYank = true;
-        return slots[head];
-    }
-
-    /**
-     * Moves the pointer to the current slot back and returns the text
-     * in that position. If the previous command was not yank returns
-     * null.
-     */
-    public String yankPop() {
-        lastKill = false;
-        if (lastYank) {
-            prev();
-            return slots[head];
-        }
-        return null;
-    }
-
-    /**
-     * Moves the pointer to the current slot forward. If the end of
-     * the slots is reached then points back to the beginning.
-     */
-    private void next() {
-        if (head == 0 && slots[0] == null) {
-            return;
-        }
-        head++;
-        if (head == slots.length) {
-            head = 0;
-        }
-    }
-
-    /**
-     * Moves the pointer to the current slot backwards. If the
-     * beginning of the slots is reached then traverses the slot
-     * backwards until one with not null content is found.
-     */
-    private void prev() {
-        head--;
-        if (head == -1) {
-            int x = slots.length - 1;
-            for (; x >= 0; x--) {
-                if (slots[x] != null) {
-                    break;
-                }
-            }
-            head = x;
-        }
-    }
-}