Community
    • Login

    Calculator on line

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    4 Posts 4 Posters 7.6k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Monu KashyapM
      Monu Kashyap
      last edited by

      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)

      Michael VincentM Alan KilbornA 2 Replies Last reply Reply Quote 0
      • Michael VincentM
        Michael Vincent @Monu Kashyap
        last edited by

        @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.

        1 Reply Last reply Reply Quote 3
        • Alan KilbornA
          Alan Kilborn @Monu Kashyap
          last edited by Alan Kilborn

          @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! :-)

          1 Reply Last reply Reply Quote 4
          • guy038G
            guy038
            last edited by guy038

            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 !

            1 Reply Last reply Reply Quote 1
            • First post
              Last post
            The Community of users of the Notepad++ text editor.
            Powered by NodeBB | Contributors