Calculator on line



  • A little suggestion for Notepad++,
    If notepad++ can do ontime calculation of selected numbers, That would be Amazing !!
    for example if I selected a simple line of text like :
    250+150+100+500
    The result of the calculation will show in status bar…
    (If possible)

    And,
    Thanks for the Amazing software Notepad++
    Regards,
    Monu Kashyap
    (India)



  • @Monu-Kashyap said in Calculator on line:

    If notepad++ can do ontime calculation of selected numbers, That would be Amazing !!

    NppCalc
    MathPad

    Though I think they’re both 32-bit only.

    You can use NppExec with a simple “script”:

    ::=
    SET LOCAL ANS ~ $(ARGV)
    ECHO $(ANS)
    

    Then:

    e321963e-872e-4883-b800-14c70606535f-image.png

    Cheers.



  • @Monu-Kashyap said in Calculator on line:

    if I selected a simple line of text like :
    250+150+100+500

    Add an = at the end and select the text of the “equation” in Notepad++ to obtain:

    691d0e05-53af-474f-9724-c0400b5dcd70-image.png

    Press Ctrl+c to copy it to the clipboard.

    Go to the Run menu and choose Run… and specify something similar to this:

    3f92834b-f9b3-4ac1-9468-7dbf5e45ccde-image.png

    Press the Run button.

    When Calculator starts, press Ctrl+v; results:

    5b957f03-043e-4dd1-93e1-1dd6118c2fac-image.png

    Save the Run menu entry and bind it to a keycombo if you do this sort of thing frequently.

    EDIT: Not sure why I didn’t use your exact numbers in the example! :-)



  • Hello @monu-kashyap, @Michael-vincent, @alan-kilborn, and All,

    Here is an other solution which uses a batch file and the DOS command set /a

    • Open a new N++ tab ( Ctrl + N )

    • Run the menu command Encoding > Convert to ANSI

    • Select all the batch file contents, below, and copy them in this new empty file

    • Save it, in the system folder C:\Windows\System32, as cal.bat

    @echo OFF
    
    REM ***************************************************************
    REM *  BATCH file "Cal.bat" for MULTIPLE calculations in ONE go   *
    REM *                                                             *
    REM *  Type 'cal' WITHOUT parameter or 'cal /?' for EXPLANATIONS  *
    REM ***************************************************************
    
    
    REM ************************************************************************
    REM *  The TITLE of the DOS windows is changed as "MULTIPLE calculations"  *
    REM ************************************************************************
    title MULTIPLES calculations
    
    REM ***************************************************************************
    REM *  color <HEX Background><HEX Foreground> sets the COLORS of the CONSOLE  *
    REM *                                                                         *
    REM *          0  =  Black                     8  =  Grey                     *
    REM *          1  =  Dark Blue                 9  =  Blue                     *
    REM *          2  =  Forest Green              A  =  Lime                     *
    REM *          3  =  Dark Cyan                 B  =  Cyan                     *
    REM *          4  =  Dark Red                  C  =  Red                      *
    REM *          5  =  Purple                    D  =  Magenta                  *
    REM *          6  =  Olive                     E  =  Yellow                   *
    REM *          7  =  Light Grey                F  =  White                    *
    REM *                                                                         *
    REM *  You may DELETE this command ( DEFAULT values of CONSOLE are '07' )     *
    REM ***************************************************************************
    color 70
    
    REM **************************************************************************
    REM *  IF call WITHOUT any PARAMETER, JUMP to label "Help" for EXPLANATIONS  *
    REM *                                                                        *
    REM *  DON'T write "%1"=="" as the PARAMETER may contain DOUBLE quotes       *
    REM *  DON'T write !%1==!   as, if PARAMETER = /?, it DOESN't work, too      *
    REM **************************************************************************
    if %1!==! goto Help
    
    REM ************************************************************************
    REM *  IF PARAMETER = '/?', JUMP to label "Help" for EXPLANATIONS          *
    REM *                                                                      *
    REM *  DON'T write "%1"=="/?" as the PARAMETER may contain DOUBLE quotes   *
    REM *  DON'T write !%1==!/?   as, if PARAMETER = /?, it DOESN't work, too  *
    REM ************************************************************************
    if %1!==/?! goto Help
    
    echo.
    
    REM *************************************************************
    REM *  The DECLARED variables are LOCAL during BATCH execution  *
    REM *************************************************************
    setlocal
    
    :Deb
    
    REM ***********************************************************************************
    REM *  The CURRENT operation in %1 is EVALUATED and RESULT is STORED in VARIABLE %r%  *
    REM ***********************************************************************************
    SET /a r=%1
    
    REM **********************************************************************************
    REM *  The CURRENT operation %1 and its RESULT are displayed, with 10 LEADING Spaces *
    REM **********************************************************************************
    echo. && echo          %1 = %r%
    
    REM ***********************************************************
    REM *  The NEXT typed PARAMETER becomes the FIRST one ( %1 )  *
    REM ***********************************************************
    shift
    
    REM *********************************************************************
    REM *  LOOP to the :Deb LABEL for a NEXT calculation if %1 is DEFINED   *
    REM *  JUMP to the END of the BATCH, if NO MORE calculation             *
    REM *                                                                   *
    REM *  DON'T write "%1"=="" as the PARAMETER may contain DOUBLE quotes  *
    REM *  DON'T write this SYNTAX !%1==!? as well                          *
    REM *********************************************************************
    if NOT %1!==! goto Deb
    
    echo. && goto :EOF
    
    :Help
    
    REM ***************
    REM *  HELP menu  *
    REM ***************
    
    cls
    echo.
    echo.
    echo *******************************************************************************
    echo *                               BATCH file : CAL.BAT                          *
    echo *                                                                             *
    echo * SYNTAX : cal[ Op_1[ Op_2[ Op_3[...[ Op_N]]]]]  where Op_N = ONE or SEVERAL  *
    echo * ~~~~~~     of the 18 OPERATIONS, below, by DECREASING order of PRIORITY :   *
    echo *                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~    *
    echo *                                                                             *
    echo *  ()          PARENTHESES Grouping                                           *
    echo *                                                                             *
    echo *  a           DECIMAL value of the DECIMAL         number a =  a             *
    echo *  0a          DECIMAL value of the OCTAL           number a =  a             *
    echo *  0xa         DECIMAL value of the HEXADECIMAL     number a =  a             *
    echo *                                                                             *
    echo *  -a          OPPOSITE number                   of number a                  *
    echo *  ~a          Bitwise COMPLEMENT                of number a = -a - 1         *
    echo *  !a          LOGICAL NEGATION                  of number a = 0  if a ^<^> 0   *
    echo *                                                            = 1  if a = 0    *
    echo *                                                                             *
    echo *  a*b         MULTIPLICATION                    of a by b    =  a*b          *
    echo *  a/b         INTEGER QUOTIENT of the DIVISION  of a by b    =  INT (a/b)    *
    echo *  a%%b         REMAINDER        of the DIVISION  of a by b    =  a MOD b      *
    echo *                                                                             *
    echo *  a+b         ADDITION                          of a to b    =  a+b          *
    echo *  a-b         SUBTRACTION                       of b from a  =  a-b          *
    echo *                                                                             *
    echo *  "a<<b"      LEFT Shift  of b POSITIONS        of a         =  a * 2^^b      *
    echo *  "a>>b"      RIGHT Shift of b POSITIONS        of a         =  a / 2^^b      *
    echo *                                                                             *
    echo *  "a&b"       Bitwise AND                       between a and b              *
    echo *  "a^b"       Bitwise EXCLUSIVE OR              between a and b              *
    echo *  "a|b"       Bitwise OR                        between a and b              *
    echo *                                                                             *
    echo *  "var=a"     ASSIGNATION of var                to a     var = a             *
    echo *  "varOp=a"   ASSIGNATION of (var BINARY Op. a) to a     var = var  Op.  a   *
    echo *                  ( Ex :  x*=7 means  x = x * 7  )                           *
    echo *                                                                             *
    echo *                                                                             *
    echo * a, b, r = INTEGER, in range [-2,147,483,648 +2,147,483,647], with NOTATION  *
    echo *                                                                             *
    echo *  - DECIMAL     : the DIGITS of a NUMBER belong to INTERVAL [0-9]            *
    echo *  - HEXADECIMAL : the DIGITS of a NUMBER belong to INTERVAL [0-9] or [A-F]   *
    echo *  - OCTAL       : the DIGITS of a NUMBER belong to INTERVAL [0-7]            *
    echo *                                                                             *
    echo *                                                                             *
    echo * NOTES :  - The VARIABLE r is the RESULT of the LAST calculation PERFORMED   *
    echo * ~~~~~                                          ~~~~                         *
    echo *             ==) cal a r*r*r...*r  ( b TIMES the VARIABLE r )  =  a POWER b  *
    echo *                                                                             *
    echo *         - If an EXPRESSION contains some SPACES, surround it with "......"  *
    echo *                                                                             *
    echo * Ex :                                                                        *
    echo *                                                                             *
    echo *    cal "-9 +3" 011*9 "17|22" "12<<5-1" "v=r*=4" (0xba+v)/6 "17&22" "17^22"  *
    echo *                                                                             *
    echo *******************************************************************************
    
    • Now, in your active shortcuts.xml file, add the line, below, before the end of the </UserDefinedCommands> ••• </UserDefinedCommands> node
            <Command name="Multiple Calculations" Ctrl="no" Alt="no" Shift="no" Key="0">cmd /c cal.bat $(CURRENT_WORD) && pause>NUL</Command>
    
    • Close and re-start Notepad++

    • Make a normal selection of that example line "-9 +3" 011*9 "17|22" "12<<5-1" "v=r*=4" (0xba+v)/6 "17&22" "17^22"

    • Execute the menu command Run > Multiple calculations

    Et voilà !!


    Notes :

    • Once the results read and, possibly copied in the clipboard, just hit any key to close the MULTIPLE calculations window

    • If you don’t like the color of the DOS console, just change the parameters of the color command or delete it, in the batch file !

    • To copy the results to the clipboard :

      • Click anywhere, in that DOS window, with the right mouse button and choose the Select option

      • Now, by clicking and moving around the pointer you should define a rectangular block, in the same way as a rectangular N++ selection

      • Hit the Enter key to copy the contents of this block in the clipboard

      • Paste these contents anywhere, in Notepad++ !

    • Any selection must contain an even number of double quotes, if any. For instance, the selection 3+4 "5 - 9" 3*5 is correct, where as the selection of 3+4 "5 - 9 3*5 or 3+4 "5 - 9 are incorrect !

    • Note that a single shift, logical bitwise and assignation operation, as well as any expression containing space chars, needs to be surrounded with double quotes

    • Remark that the variable r always contains the result of the last performed operation !


    Just test it. I hope you’ll like it !

    Best Regards,

    guy038

    P.S. :

    I finally don’t think that the conversion to ANSI is needed, as no character of this batch file is over \x{007f}, anyway !


Log in to reply