Class KillRing


  • public final class KillRing
    extends java.lang.Object
    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.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static int DEFAULT_SIZE
      Default size is 60, like in emacs.
      private int head  
      private boolean lastKill  
      private boolean lastYank  
      private java.lang.String[] slots  
    • Constructor Summary

      Constructors 
      Constructor Description
      KillRing()
      Creates a new kill ring of the default size.
      KillRing​(int size)
      Creates a new kill ring of the given size.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(java.lang.String str)
      Adds the string to the kill-ring.
      void addBackwards​(java.lang.String str)
      Adds the string to the kill-ring product of killing backwards.
      boolean lastYank()
      Returns true if the last command was a yank.
      private void next()
      Moves the pointer to the current slot forward.
      private void prev()
      Moves the pointer to the current slot backwards.
      void resetLastKill()
      Resets the last-kill state.
      void resetLastYank()
      Resets the last-yank state.
      java.lang.String yank()
      Yanks a previously killed text.
      java.lang.String yankPop()
      Moves the pointer to the current slot back and returns the text in that position.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEFAULT_SIZE

        private static final int DEFAULT_SIZE
        Default size is 60, like in emacs.
        See Also:
        Constant Field Values
      • slots

        private final java.lang.String[] slots
      • head

        private int head
      • lastKill

        private boolean lastKill
      • lastYank

        private boolean lastYank
    • Constructor Detail

      • KillRing

        public KillRing​(int size)
        Creates a new kill ring of the given size.
        Parameters:
        size - the size of the ring
      • KillRing

        public KillRing()
        Creates a new kill ring of the default size. See DEFAULT_SIZE.
    • Method Detail

      • resetLastYank

        public void resetLastYank()
        Resets the last-yank state.
      • resetLastKill

        public void resetLastKill()
        Resets the last-kill state.
      • lastYank

        public boolean lastYank()
        Returns true if the last command was a yank.
        Returns:
        true if the last command was a yank
      • add

        public void add​(java.lang.String str)
        Adds the string to the kill-ring. Also sets lastYank to false and lastKill to true.
        Parameters:
        str - the string to add
      • addBackwards

        public void addBackwards​(java.lang.String 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.
        Parameters:
        str - the string to add
      • yank

        public java.lang.String yank()
        Yanks a previously killed text. Returns null if the ring is empty.
        Returns:
        the text in the current position
      • yankPop

        public java.lang.String yankPop()
        Moves the pointer to the current slot back and returns the text in that position. If the previous command was not yank returns null.
        Returns:
        the text in the previous position
      • next

        private void next()
        Moves the pointer to the current slot forward. If the end of the slots is reached then points back to the beginning.
      • prev

        private void prev()
        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.