OK... so I thought of a really neat way to achieve your goal *without 
modifying my macro!*

Give this a try:

First, Create a tiddler (e.g., MyMacros/edit-list), tagged with 
$:/tags/Macro, containing:
\define my-edit-list(
         id,      tiddler,     field,     index,  timestamp,
    default,  placeholder,   tooltip,       type,     width, 
     filter,         find,      goto,    confirm,     focus,
 focusPopup, cancelPopups, listwidth, listheight,    scroll,
   fontsize,      stretch,    colors,   multiple,      view
)
<$vars
           id={{{ [[$id$]!is[blank]else<id>!is[blank]else[]]                
        }}} 
      tiddler={{{ [[$tiddler$]!is[blank]else<tiddler>!is[blank]else[]]      
        }}}
        field={{{ [[$field$]!is[blank]else<field>!is[blank]else[text]]      
        }}}
        index={{{ [[$index$]!is[blank]else<index>!is[blank]else[]]          
        }}}
    timestamp={{{ 
[[$timestamp$]!is[blank]else<timestamp>!is[blank]else[yes]]       }}}
      default={{{ [[$default$]!is[blank]else<default>!is[blank]else[]]      
        }}}
  placeholder={{{ 
[[$placeholder$]!is[blank]else<placeholder>!is[blank]else[]]      }}}
      tooltip={{{ [[$tooltip$]!is[blank]else<tooltip>!is[blank]else[]]      
        }}}
         type={{{ [[$type$]!is[blank]else<type>!is[blank]else[]]            
        }}}
        width={{{ [[$width$]!is[blank]else<width>!is[blank]else[15em]]      
        }}}
       filter={{{ [[$filter$]!is[blank]else<filter>!is[blank]else[]]        
        }}}
         find={{{ [[$find$]!is[blank]else<find>!is[blank]else[no]]          
        }}}
         goto={{{ [[$goto$]!is[blank]else<goto>!is[blank]else[no]]          
        }}}
      confirm={{{ [[$confirm$]!is[blank]else<confirm>!is[blank]else[no]]    
        }}}
        focus={{{ [[$focus$]!is[blank]else<focus>!is[blank]else[no]]        
        }}}
   focusPopup={{{ 
[[$focusPopup$]!is[blank]else<focusPopup>!is[blank]else[no]]      }}}
 cancelPopups={{{ 
[[$cancelPopups$]!is[blank]else<cancelPopups>!is[blank]else[yes]] }}}
    listwidth={{{ 
[[$listwidth$]!is[blank]else<listwidth>!is[blank]else[100%]]      }}}
   listheight={{{ 
[[$listheight$]!is[blank]else<listheight>!is[blank]else[1]]       }}}
       scroll={{{ [[$scroll$]!is[blank]else<scroll>!is[blank]else[10]]      
        }}}
     fontsize={{{ 
[[$fontsize$]!is[blank]else<fontsize>!is[blank]else[1em]]         }}}
      stretch={{{ [[$stretch$]!is[blank]else<stretch>!is[blank]else[yes]]  
         }}}
       colors={{{ [[$colors$]!is[blank]else<colors>!is[blank]else[no]]      
        }}}
     multiple={{{ [[$multiple$]!is[blank]else<multiple>!is[blank]else[no]]  
        }}}
         view={{{ [[$view$]!is[blank]else<view>!is[blank]else[<<item>>]]    
        }}}
>
<$macrocall $name="edit-list"
         id=<<id>>,              tiddler=<<tiddler>>,          
field=<<field>>,          index=<<index>>,   timestamp=<<timestamp>>,
    default=<<default>>,     placeholder=<<placeholder>>,    
tooltip=<<tooltip>>,         type=<<type>>,        width=<<width>>,
     filter=<<filter>>,             find=<<find>>,              
goto=<<goto>>,         confirm=<<confirm>>,     focus=<<focus>>,
 focusPopup=<<focusPopup>>, cancelPopups=<<cancelPopups>>, 
listwidth=<<listwidth>>, listheight=<<listheight>>, scroll=<<scroll>>,
   fontsize=<<fontsize>>,        stretch=<<stretch>>,        
 colors=<<colors>>,      multiple=<<multiple>>,     view=<<view>> />
\end

Basically, you define an alternative "wrapper" around my macro, that 
handles the $vars-based parameter definitions, and then call my macro from 
it.
The advantage is that *you don't have to change even one line of my code*, 
and you can even *re-define the fallback default values*!

To use it you can put something like this in a tiddler:
<$vars tiddler="foo" filter="[all[tiddlers]!is[system]]">
<<my-edit-list>>
</$vars>
<$vars tiddler="bar" field="tags" filter="[all[tiddlers+shadows]tags[]]" 
width=20em placeholder="select a tag">
<<my-edit-list>>
</$vars>

enjoy,
-e
On Monday, July 26, 2021 at 6:36:07 AM UTC-7 Eric Shulman wrote:

> On Monday, July 26, 2021 at 5:07:07 AM UTC-7 TW Tones wrote:
>
>> This method mentioned later for setting variables to use in edit-list may 
>> be better (although untested)
>> <$vars 
>>     field={{{ [[$field$]is[blank]then<fieldname>] }}} 
>>     paramname={{{ [[$paramname$]is[blank]then<varname>] }}}
>> >
>>
>
> The following handles two levels of fallback:
>
>    1. if the param is passed to the macro
>    2. else if the param is set as a variable
>    3. else use a default value
>
> For example, the field value should default to "text" if not provided by 
> either param or variable:
> <$vars field={{{ [[$field$]!is[blank]else<field>!is[blank]else[text]] }}}>
>  
> -e
>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/27a83b1c-f06d-4dc3-ad71-ede84f92224dn%40googlegroups.com.

Reply via email to