diff --git a/README.md b/README.md
index f67daef2..729ff873 100644
--- a/README.md
+++ b/README.md
@@ -61,13 +61,17 @@ $ nako3server
 macOS
 
 ```
+# 『圧縮』『解凍』命令のために
 brew install p7zip
 ```
 
 Ubuntu/Debian
 
 ```
+# 『圧縮』『解凍』命令のために
 sudo apt-get install p7zip-full
+# 『キー送信』命令のために
+sudo apt-get install xdotool
 ```
 
 全てのコマンドが正しく動くかを確認するには、以下のコマンドを実行します。
diff --git a/doc/plugins.md b/doc/plugins.md
index 2b846932..3835740e 100644
--- a/doc/plugins.md
+++ b/doc/plugins.md
@@ -14,14 +14,14 @@
 ```
 {
   '定数名': { 定義 },
-  '命令名': { 定義 }, 
+  '命令名': { 定義 },
   ...
 }
 ```
 
 ### 定義:関数
 
-プラグインの実体は、Object。
+プラグインの実体は、Object。実際の関数定義は、fnプロパティに行う。実際の関数の引数に加えて、システムを表すsysを用意する。
 
 ```
 {
@@ -103,12 +103,16 @@ if (typeof (navigator) === 'object') {
   type: 'func',
   josi: [],
   fn: function (sys) {
-    const result = sys.__exec('HOGE', [arg1, arg2, arg3])
+    const result = sys.__exec('HOGE', [arg1, arg2, arg3, sys])
     console.log(result)
   }
 }
 ```
 
+また、関数の引数に与える、sysはなでしこ自身を表す。
+もし、代入的関数呼び出し(setter)であれば、sys.isSetterにtrueの値が入る。
+
+
 なお、プラグインでは、以下のメソッドが使えるようになる。(すべて src/plugin_system.jsで定義されている。システム関数の初期化時に、これらの関数が追加される。)
 
  - sys.__findVar(name)
diff --git a/package.json b/package.json
index e33ac22f..906a2c39 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "nadesiko3",
-  "version": "3.0.50",
+  "version": "3.0.51",
   "description": "Japanese Programming Language",
   "main": "src/index.js",
   "bin": {
diff --git a/src/nako3.js b/src/nako3.js
index b595296b..07a19f90 100644
--- a/src/nako3.js
+++ b/src/nako3.js
@@ -27,6 +27,7 @@ class NakoCompiler {
     this.__module = {} // requireなどで取り込んだモジュールの一覧
     this.funclist = {} // プラグインで定義された関数
     this.pluginfiles = {} // 取り込んだファイル一覧
+    this.isSetter = false // 代入的関数呼び出しを管理(#290)
     // 必要なオブジェクトを覚えておく
     this.prepare = prepare
     this.lexer = lexer
diff --git a/src/nako_gen.js b/src/nako_gen.js
index 48081eb5..a5f0902d 100644
--- a/src/nako_gen.js
+++ b/src/nako_gen.js
@@ -739,18 +739,22 @@ class NakoGen {
     if (typeof (this.used_func[funcName]) === 'undefined') {
       this.used_func[funcName] = true
     }
-    // setter ?
-    if (node['setter']) argsOpts['setter'] = true
     // 関数呼び出しで、引数の末尾にthisを追加する-システム情報を参照するため
     args.push('__self')
-    if (argsOpts) args.push(JSON.stringify(argsOpts))
-
+    let funcBegin = ''
+    let funcEnd = ''
+    // setter?
+    if (node['setter']) {
+      funcBegin = ';__self.isSetter = true;'
+      funcEnd = ';__self.isSetter = false;'
+    }
+    // 関数呼び出しコードの構築
     let argsCode = args.join(',')
     let code = `${funcNameS}(${argsCode})`
     if (func.return_none) {
-      code = `${code};\n`
+      code = `${funcBegin}${code};${funcEnd}\n`
     } else {
-      code = `(function(){ const tmp=${this.sore}=${code}; return tmp }).call(this)`
+      code = `(function(){ ${funcBegin}const tmp=${this.sore}=${code}; return tmp;${funcEnd}; }).call(this)`
       // ...して
       if (node.josi === 'して') {
         code += ';\n'
diff --git a/src/plugin_node.js b/src/plugin_node.js
index 450d0e92..857af70b 100644
--- a/src/plugin_node.js
+++ b/src/plugin_node.js
@@ -476,9 +476,9 @@ const PluginNode = {
   'クリップボード': { // @クリップボードを取得設定(『クリップボード=値』で書換が可能) // @くりっぷぼーど
     type: 'func',
     josi: [['を']],
-    fn: function (v, sys, opt) {
+    fn: function (v, sys) {
       const ncp = require('copy-paste')
-      if (opt && opt['setter']) return ncp.copy(v)
+      if (sys.isSetter) return ncp.copy(v)
       return ncp.paste()
     }
   },
diff --git a/src/plugin_system.js b/src/plugin_system.js
index f71ab673..ac7458af 100644
--- a/src/plugin_system.js
+++ b/src/plugin_system.js
@@ -3,7 +3,7 @@ const PluginSystem = {
     type: 'func',
     josi: [],
     fn: function (sys) {
-      sys.__v0['ナデシコバージョン'] = '3.0.50'
+      sys.__v0['ナデシコバージョン'] = '3.0.51'
       // システム関数を探す
       sys.__getSysValue = function (name, def) {
         if (sys.__v0[name] === undefined) return def
diff --git a/test/func_call.js b/test/func_call.js
index 90dc3d93..fdd6477d 100644
--- a/test/func_call.js
+++ b/test/func_call.js
@@ -56,10 +56,11 @@ describe('関数呼び出しテスト', () => {
   it('連続文後の=代入', () => {
     cmp('対象日=1504191600を日時変換して「 」まで切り取る。対象日を表示。', '2017/09/01')
   })
-  it('関数の代入的呼び出し1', () => {
+  // 代入的呼び出し(#290)
+  it('関数の代入的呼び出し(#290)その1', () => {
     cmp('INTに3.5を代入;それを表示;', '3')
   })
-  it('関数の代入的呼び出し2', () => {
+  it('関数の代入的呼び出し(#290)その2', () => {
     cmp('INT=3.5;それを表示;', '3')
     cmp('INTは3.5;それを表示;', '3')
   })
diff --git a/test/plugin_node_test.js b/test/plugin_node_test.js
index 215f94ad..4eaa6d32 100644
--- a/test/plugin_node_test.js
+++ b/test/plugin_node_test.js
@@ -60,4 +60,10 @@ describe('plugin_node_test', () => {
   it('ファイル情報取得', () => {
     cmp('「' + testFileMe + '」のファイル情報取得;もし、それ["size"]が2000以上ならば;「OK」と表示。違えば「NG」と表示。', 'OK')
   })
+  /*
+  it('クリップボード', () => {
+    const rnd = 'a' + Math.random()
+    cmp('クリップボード="' + rnd + '";クリップボードを表示。', rnd)
+  })
+  */
 })