OSDN Git Service

added upcase-word, downcase-word, capitalize-word
authorquiver2k <quiver2k@users.sourceforge.jp>
Tue, 28 Jul 2009 10:34:20 +0000 (19:34 +0900)
committerquiver2k <quiver2k@users.sourceforge.jp>
Tue, 28 Jul 2009 10:34:20 +0000 (19:34 +0900)
jp.sourceforge.moreemacs.web/WebContent/index.html
jp.sourceforge.moreemacs/plugin.xml
jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/BackwardKillWordExecution.java
jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/CapitalizeWordExecution.java [new file with mode: 0644]
jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/ConvertWordExecution.java [new file with mode: 0644]
jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/ForwardWordExecution.java
jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/KillWordExecution.java
jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/UpcaseWordExecution.java [new file with mode: 0644]

index 77c9453..cdead8c 100644 (file)
@@ -121,9 +121,34 @@ The following list is key bindings of more emacs plugin.
 <td>open-line</td>\r
 <td>C-o</td>\r
 </tr>\r
+\r
+<tr>\r
+<td>upcase-word</td>\r
+<td>M-u</td>\r
+</tr>\r
+<tr>\r
+<td>downcase-word</td>\r
+<td>M-l</td>\r
+</tr>\r
+<tr>\r
+<td>capitalize-word</td>\r
+<td>M-c</td>\r
+</tr>\r
 </table>\r
 \r
 <h2>Change Log</h2>\r
+<h3>2009.7.28</h3>\r
+<ul>\r
+<li>Fix rectangle action.</li>\r
+<li>Add the followings.\r
+<ul>\r
+<li>upcase-word</li>\r
+<li>downcase-word</li>\r
+<li>capitalize-word</li>\r
+</ul>\r
+</li>\r
+<li>Release 1.1.0</li>\r
+</ul>\r
 <h3>2009.6.14</h3>\r
 <ul>\r
 <li>Release 1.0.0</li>\r
index 887fecc..7c2821e 100644 (file)
             id="jp.sourceforge.moreemacs.OpenLine"\r
             name="open-line">\r
       </command>\r
+      <command\r
+            categoryId="jp.sourceforge.moreemacs.category"\r
+            id="jp.sourceforge.moreemacs.UpcaseWord"\r
+            name="upcase-word">\r
+      </command>\r
+      <command\r
+            categoryId="jp.sourceforge.moreemacs.category"\r
+            id="jp.sourceforge.moreemacs.DowncaseWord"\r
+            name="downcase-word">\r
+      </command>\r
+      <command\r
+            categoryId="jp.sourceforge.moreemacs.category"\r
+            id="jp.sourceforge.moreemacs.CapitalizeWord"\r
+            name="capitalize-word">\r
+      </command>\r
    </extension>\r
 \r
    <extension\r
                class="jp.sourceforge.moreemacs.handlers.CommandHandler">\r
          </class>\r
       </handler>\r
+      <handler\r
+            commandId="jp.sourceforge.moreemacs.UpcaseWord">\r
+         <class\r
+               class="jp.sourceforge.moreemacs.handlers.CommandHandler">\r
+         </class>\r
+      </handler>\r
+      <handler\r
+            commandId="jp.sourceforge.moreemacs.DowncaseWord">\r
+         <class\r
+               class="jp.sourceforge.moreemacs.handlers.CommandHandler">\r
+         </class>\r
+      </handler>\r
+      <handler\r
+            commandId="jp.sourceforge.moreemacs.CapitalizeWord">\r
+         <class\r
+               class="jp.sourceforge.moreemacs.handlers.CommandHandler">\r
+         </class>\r
+      </handler>\r
 \r
    </extension>\r
 \r
             schemeId="jp.sourceforge.moreemacs.moreEmacsAcceleratorConfiguration"\r
             sequence="M1+X R Y">\r
       </key>\r
+      <key\r
+            commandId="jp.sourceforge.moreemacs.UpcaseWord"\r
+            contextId="org.eclipse.ui.textEditorScope"\r
+            schemeId="jp.sourceforge.moreemacs.moreEmacsAcceleratorConfiguration"\r
+            sequence="M3+U">\r
+      </key>\r
+      <key\r
+            commandId="jp.sourceforge.moreemacs.DowncaseWord"\r
+            contextId="org.eclipse.ui.textEditorScope"\r
+            schemeId="jp.sourceforge.moreemacs.moreEmacsAcceleratorConfiguration"\r
+            sequence="M3+L">\r
+      </key>\r
+      <key\r
+            commandId="jp.sourceforge.moreemacs.CapitalizeWord"\r
+            contextId="org.eclipse.ui.textEditorScope"\r
+            schemeId="jp.sourceforge.moreemacs.moreEmacsAcceleratorConfiguration"\r
+            sequence="M3+C">\r
+      </key>\r
    </extension>\r
 \r
 </plugin>\r
index f9e416b..a295af5 100644 (file)
@@ -7,19 +7,19 @@ import org.eclipse.swt.dnd.Transfer;
 \r
 public final class BackwardKillWordExecution extends TextEditorExecution {\r
 \r
-       @Override\r
-       public void execute()throws BadLocationException {\r
+    @Override\r
+    public void execute()throws BadLocationException {\r
         if(!textEditor.isEditable()) {\r
             return;\r
         }\r
-\r
-               int current = cursor.offset();\r
-               int previous = BackwardWordExecution.getPreviousWordPosition(doc, current);\r
-               String word = doc.get(previous, current - previous);\r
-               Clipboard c = new Clipboard(window.getShell().getDisplay());\r
-               c.setContents(new String[] { word },\r
-                               new Transfer[] { TextTransfer.getInstance() });\r
-               doc.replace(previous, current - previous, "");\r
-\r
-       }\r
+        \r
+        int current = cursor.offset();\r
+        int previous = BackwardWordExecution.getPreviousWordPosition(doc, current);\r
+        String word = doc.get(previous, current - previous);\r
+        Clipboard c = new Clipboard(window.getShell().getDisplay());\r
+        c.setContents(new String[] { word },\r
+                new Transfer[] { TextTransfer.getInstance() });\r
+        doc.replace(previous, current - previous, "");\r
+        \r
+    }\r
 }\r
diff --git a/jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/CapitalizeWordExecution.java b/jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/CapitalizeWordExecution.java
new file mode 100644 (file)
index 0000000..fb2564f
--- /dev/null
@@ -0,0 +1,27 @@
+package jp.sourceforge.moreemacs.handlers;\r
+\r
+import jp.sourceforge.moreemacs.utils.CodePointIterator;\r
+\r
+\r
+public final class CapitalizeWordExecution extends ConvertWordExecution {\r
+    @Override\r
+    protected String convert(String word) {\r
+        StringBuilder builder = new StringBuilder();\r
+        for(CodePointIterator itr = new CodePointIterator(word); itr.hasNext(); ) {\r
+            int cp = itr.next();\r
+            \r
+            if(!Character.isLetter(cp)) {\r
+                builder.appendCodePoint(cp);\r
+                continue;\r
+            }\r
+\r
+            builder.appendCodePoint(Character.toUpperCase(cp));\r
+            if(itr.hasNext()) {\r
+                builder.append(word.substring(itr.index()).toLowerCase());\r
+            }\r
+            break;\r
+        }\r
+        return builder.toString();\r
+    }\r
+}\r
+\r
diff --git a/jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/ConvertWordExecution.java b/jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/ConvertWordExecution.java
new file mode 100644 (file)
index 0000000..d14569e
--- /dev/null
@@ -0,0 +1,22 @@
+package jp.sourceforge.moreemacs.handlers;\r
+\r
+import org.eclipse.jface.text.BadLocationException;\r
+\r
+public abstract class ConvertWordExecution extends TextEditorExecution {\r
+\r
+    @Override\r
+    public void execute() throws BadLocationException {\r
+        if(!textEditor.isEditable()) {\r
+            return;\r
+        }\r
+        \r
+        int current = cursor.offset();\r
+        int next = ForwardWordExecution.getNextWordPosition(doc, current);\r
+        String word = doc.get(current, next-current);\r
+        String  convertedWord = convert(word);\r
+        doc.replace(current, next-current, convertedWord);\r
+        cursor.move(current + convertedWord.length());\r
+    }\r
+    \r
+    protected abstract String convert(String word);\r
+}\r
index 345026b..835dfe7 100644 (file)
@@ -7,25 +7,25 @@ import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;\r
 \r
 public final class ForwardWordExecution extends TextEditorExecution {\r
-\r
-       @Override\r
-       public void execute() throws BadLocationException {\r
-               int current = cursor.offset();\r
-               cursor.move(getNextWordPosition(doc, current));\r
-       }\r
-\r
-       public static int getNextWordPosition(IDocument doc, int offset) throws BadLocationException {\r
-           CharSequence seq = new DocumentCharSequence(doc, offset, doc.getLength()-offset);\r
-           CodePointIterator itr = new CodePointIterator(seq);\r
-\r
-\r
-           for(; itr.hasNext(); ) {\r
-               int codePoint = itr.next();\r
+    \r
+    @Override\r
+    public void execute() throws BadLocationException {\r
+        int current = cursor.offset();\r
+        cursor.move(getNextWordPosition(doc, current));\r
+    }\r
+    \r
+    public static int getNextWordPosition(IDocument doc, int offset) throws BadLocationException {\r
+        CharSequence seq = new DocumentCharSequence(doc, offset, doc.getLength()-offset);\r
+        CodePointIterator itr = new CodePointIterator(seq);\r
+        \r
+        \r
+        for(; itr.hasNext(); ) {\r
+            int codePoint = itr.next();\r
             if (Character.isLetterOrDigit(codePoint)) {\r
                 itr.previous();\r
                 break;\r
             }\r
-           }\r
+        }\r
         for(; itr.hasNext(); ) {\r
             if (!Character.isLetterOrDigit(itr.next())) {\r
                 itr.previous();\r
@@ -34,6 +34,5 @@ public final class ForwardWordExecution extends TextEditorExecution {
         }\r
         \r
         return offset + itr.index();\r
-       }\r
-       \r
+    }\r
 }\r
index 321ae7c..92e3b37 100644 (file)
@@ -7,19 +7,18 @@ import org.eclipse.swt.dnd.Transfer;
 \r
 public final class KillWordExecution extends TextEditorExecution {\r
 \r
-       @Override\r
-       public void execute() throws BadLocationException {\r
-        if(!textEditor.isEditable()) {\r
+    @Override\r
+    public void execute() throws BadLocationException {\r
+        if (!textEditor.isEditable()) {\r
             return;\r
         }\r
 \r
-               int current = cursor.offset();\r
-               int next = ForwardWordExecution.getNextWordPosition(doc, current);\r
-               String word = doc.get(current, next-current);\r
-               Clipboard c = new Clipboard(window.getShell().getDisplay());\r
-               c.setContents(\r
-                               new String[] { word }, \r
-                               new Transfer[] { TextTransfer.getInstance() });\r
-               doc.replace(current, next-current, "");\r
-       }\r
+        int current = cursor.offset();\r
+        int next = ForwardWordExecution.getNextWordPosition(doc, current);\r
+        String word = doc.get(current, next - current);\r
+        Clipboard c = new Clipboard(window.getShell().getDisplay());\r
+        c.setContents(new String[] { word }, \r
+                new Transfer[] { TextTransfer.getInstance() });\r
+        doc.replace(current, next - current, "");\r
+    }\r
 }\r
diff --git a/jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/UpcaseWordExecution.java b/jp.sourceforge.moreemacs/src/jp/sourceforge/moreemacs/handlers/UpcaseWordExecution.java
new file mode 100644 (file)
index 0000000..d1744fc
--- /dev/null
@@ -0,0 +1,10 @@
+package jp.sourceforge.moreemacs.handlers;\r
+\r
+\r
+public final class UpcaseWordExecution extends ConvertWordExecution {\r
+    @Override\r
+    protected String convert(String word) {\r
+        return word.toUpperCase();\r
+    }\r
+}\r
+\r